We don't have that compatibility. Even BSDs and GNU/Linux on x86 have completely different calling conventions (ordinary C ABI vs registers + ptr to memory).
Edit: also Linux is made with completely moronic way to return errors (it uses some negative values as errors).
This has nothing to do neither with high bit nor with NTSTATUS. For Linux, some values are errors, all others are normal results. lseek cannot return large value for example. At all.
Its Linux so you don't even need to look at a different OS. Each architecture is different. PowerPC returns the return value and error code in different registers which is very clean.
Edit: also Linux is made with completely moronic way to return errors (it uses some negative values as errors).