Re: [PATCH v2] Add preadv and pwritev system calls.

Russell King
2008-12-12T19:11:42Z

On Fri, Dec 12, 2008 at 06:21:42PM +0000, Alan Cox wrote:
> On Fri, 12 Dec 2008 10:03:47 -0700
> Matthew Wilcox <matthew@wil.cx> wrote:
>
> > On Fri, Dec 12, 2008 at 05:02:05PM +0100, Gerd Hoffmann wrote:
> > > I'd *really* hate it to have the same system call with different
> > > argument ordering on different systems though. Especially when swapping
> > > two integer values, so gcc wouldn't error out on wrong usage.
> >
> > We can always permute it further:
> >
> > int fd, int vlen, loff_t pos, const struct *
>
> Or you could add cobol calling syntax or pass the arguments in XML
> format ?
>
> Any particular reason you want to make things hell for programmers and
> the standard people. Follow the BSD one at least to user space. Anything
> else will just lead to pain and suffering later on the standardisation
> front.

Yes - non-aligned 64-bit arguments in registers really really really
sucks. On ARM, we will change the syscall argument ordering to avoid
having additional compatibility implementations for EABI vs OABI.

The same goes for similar ABIs with restrictions on 64-bit arguments.

There are causes were a syscall just can not be used on such ABIs. Eg,

int a1, unsigned long long a2, int a3, unsigned long long a4

is an impossible syscall argument order for ARM - we run out of registers
for the upper word of 'a4'.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/