Messages in this thread | | | Date | Sun, 3 Feb 2013 20:52:18 -0800 | Subject | Re: [PATCH] arch: avr32: add dummy syscalls | From | Håvard Skinnemoen <> |
| |
On Sun, Feb 3, 2013 at 7:02 PM, Al Viro <viro@zeniv.linux.org.uk> wrote: > On Mon, Feb 04, 2013 at 01:31:11AM +0000, Al Viro wrote: > >> Unless I'm misreading ocavr32.pdf, that should be (R12, R10:R11, R9, R8) and >> (R12, R10:R11, R9:R8, stack) resp., so fadvise64 doesn't need a wrapper, but >> fadvise64_64 does. And something like (s32, s32, s64, s64) would turn into >> (R12, R11, R9:R8, stack, stack); AFAICS, we don't have anything that ugly... > > Oh, yes, we do - fallocate(2). int fd, int mode, loff_t offset, loff_t len. > On something like mips or sparc32 it packs nicely; on avr32 it doesn't. > Could you confirm that I haven't misparsed the ABI?
You're right on -- in this case, the compiler will skip r10, and do (r12, r11, r8:r9, stack). We pass the syscall number in r8, but we also unconditionally move r7 to r8 in the syscall path, so it shouldn't matter (libc does the opposite when necessary).
I remember some talk about having the compiler reuse r10 for the next 32-bit argument in cases like this, but I don't think it ever happened.
Havard
| |