On Wed, Nov 18, 2009 at 11:02:57AM -0500, Eric Paris wrote: > > asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len); > > sys_fallocate_wrapper: > lgfr %r2,%r2 # int > lgfr %r3,%r3 # int > sllg %r4,%r4,32 # get high word of 64bit loff_t > lr %r4,%r5 # get low word of 64bit loff_t > sllg %r5,%r6,32 # get high word of 64bit loff_t > l %r5,164(%r15) # get low word of 64bit loff_t > jg sys_fallocate > > Does this work? It's basically the same thing, right? I'm willing to > hear "that's fine you are clueless" Just saw it and hoping that we > have everything right.... It works, because for 32 bit s390 it's not the interface above but this one: (see arch/s390/kernel/sys_s390.c): /* * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last * 64 bit argument "len" is split into the upper and lower 32 bits. The * system call wrapper in the user space loads the value to %r6/%r7. * The code in entry.S keeps the values in %r2 - %r6 where they are and * stores %r7 to 96(%r15). But the standard C linkage requires that * the whole 64 bit value for len is stored on the stack and doesn't * use %r6 at all. So s390_fallocate has to convert the arguments from * %r2: fd, %r3: mode, %r4/%r5: offset, %r6/96(%r15)-99(%r15): len * to * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len */ SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset, u32 len_high, u32 len_low) { return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low); } #ifdef CONFIG_HAVE_SYSCALL_WRAPPERS asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset, long len_high, long len_low) { return SYSC_s390_fallocate((int) fd, (int) mode, offset, (u32) len_high, (u32) len_low); } SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate); #endif We (or better: Martin ;) had to define a special s390 fallocate system call because the "real" system call interface doesn't work on s390 for the same reason like your proposed system call. -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html