On Fri, 9 Mar 2007 11:59:02 +0000 Ralf Baechle <[EMAIL PROTECTED]> wrote:
>
> I'd rather let the C compiler sort it out:
>
> asmlinkage long compat_sys_sync_file_range(int fd, int dummy,
>       loff_t offset, loff_t nbytes, unsigned int flags)
> {
>       sys_sync_file_range(fd, offset, nbytes, flags);
> }
>
> Which looks like it could be portable to PPC even, so maybe a little cpp
> magic like:
>
> #ifdef CONFIG_ABI_NEEDS_PADDING_
> #define PAD_64BIT_ARG(x)      unsigned int x,
> #else
> #define PAD_64BIT_ARG(x)
> #endif
>
> [...]
> asmlinkage long sys_sync_file_range(int fd,  PAD_64BIT_ARG(pad1)
>       loff_t offset, loff_t nbytes, unsigned int flags)

Except the compat routines are built with a 64 bit compiler and the
callinf convention is different for 64 bit.  i.e. on ppc64 that routine
uses a single register for each parameter, while on 32 bit it uses 2
registers for each of the loff_t's.  It is this difference that we have
to cope with in the 64 bit kernel when the user process is 32 bit.
--
Cheers,
Stephen Rothwell                    [EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/

Attachment: pgp0550NI9DdX.pgp
Description: PGP signature

Reply via email to