diff -urN 2.4.0-test7-pre5/arch/ppc/kernel/misc.S lfsx/arch/ppc/kernel/misc.S --- 2.4.0-test7-pre5/arch/ppc/kernel/misc.S Tue Aug 22 01:23:41 2000 +++ lfsx/arch/ppc/kernel/misc.S Tue Aug 22 17:45:39 2000 @@ -1100,7 +1100,7 @@ .long sys_swapon .long sys_reboot .long old_readdir - .long sys_mmap /* 90 */ + .long old_mmap /* 90 */ .long sys_munmap .long sys_truncate .long sys_ftruncate @@ -1206,17 +1206,18 @@ .long sys_vfork .long sys_getrlimit /* 190 */ .long sys_ni_syscall /* 191 */ /* Unused */ - .long sys_ni_syscall /* 192 - reserved - mmap2 */ - .long sys_ni_syscall /* 193 - reserved - truncate64 */ - .long sys_ni_syscall /* 194 - reserved - ftruncate64 */ - .long sys_ni_syscall /* 195 - reserved - stat64 */ - .long sys_ni_syscall /* 196 - reserved - lstat64 */ - .long sys_ni_syscall /* 197 - reserved - fstat64 */ + .long sys_mmap2 /* 192 */ + .long sys_truncate64 /* 193 */ + .long sys_ftruncate64 /* 194 */ + .long sys_stat64 /* 195 */ + .long sys_lstat64 /* 196 */ + .long sys_fstat64 /* 197 */ .long sys_pciconfig_read /* 198 */ .long sys_pciconfig_write /* 199 */ .long sys_pciconfig_iobase /* 200 */ .long sys_ni_syscall /* 201 - reserved - MacOnLinux - new */ .long sys_getdents64 /* 202 */ - .rept NR_syscalls-201 + .long sys_fcntl64 /* 203 */ + .rept NR_syscalls-203 .long sys_ni_syscall .endr diff -urN 2.4.0-test7-pre5/arch/ppc/kernel/syscalls.c lfsx/arch/ppc/kernel/syscalls.c --- 2.4.0-test7-pre5/arch/ppc/kernel/syscalls.c Fri Jul 28 07:24:09 2000 +++ lfsx/arch/ppc/kernel/syscalls.c Tue Aug 22 17:43:10 2000 @@ -185,9 +185,11 @@ return error; } -asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len, - unsigned long prot, unsigned long flags, - unsigned long fd, off_t offset) +/* common code for old and new mmaps */ +static inline long do_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff) { struct file * file = NULL; int ret = -EBADF; @@ -199,11 +201,34 @@ flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); down(¤t->mm->mmap_sem); - ret = do_mmap(file, addr, len, prot, flags, offset); + ret = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); up(¤t->mm->mmap_sem); if (file) fput(file); out: + return ret; +} + +asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff) +{ + return do_mmap2(addr, len, prot, flags, fd, pgoff); +} + +asmlinkage unsigned long old_mmap(unsigned long addr, size_t len, + unsigned long prot, unsigned long flags, + unsigned long fd, off_t offset) +{ + int ret; + + ret = -EINVAL; + if (offset & ~PAGE_MASK) + goto out; + + ret = do_mmap2(addr, len, prot, flags, fd, offset >> PAGE_SHIFT); + + out: return ret; } diff -urN 2.4.0-test7-pre5/include/asm-ppc/unistd.h lfsx/include/asm-ppc/unistd.h --- 2.4.0-test7-pre5/include/asm-ppc/unistd.h Tue Aug 22 01:23:53 2000 +++ lfsx/include/asm-ppc/unistd.h Tue Aug 22 17:44:44 2000 @@ -206,6 +206,7 @@ #define __NR_sys_pciconfig_iobase 200 #define __NR_multiplexer 201 #define __NR_getdents64 202 +#define __NR_fcntl64 203 #define __NR(n) #n