[PATCH] powerpc: Wire up *at syscalls
authorAndreas Schwab <schwab@suse.de>
Thu, 27 Apr 2006 13:46:42 +0000 (15:46 +0200)
committerPaul Mackerras <paulus@samba.org>
Fri, 28 Apr 2006 11:04:59 +0000 (21:04 +1000)
Wire up *at syscalls.

This patch has been tested on ppc64 (using glibc's testsuite, both 32bit
and 64bit), and compile-tested for ppc32 (I have currently no ppc32 system
available, but I expect no problems).

Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/systbl.S
arch/powerpc/platforms/cell/spu_callbacks.c
fs/stat.c
include/asm-powerpc/unistd.h

index 0b98eea..cf56a1d 100644 (file)
@@ -325,6 +325,19 @@ SYSCALL(unshare)
 SYSCALL(splice)
 SYSCALL(tee)
 SYSCALL(vmsplice)
+COMPAT_SYS(openat)
+SYSCALL(mkdirat)
+SYSCALL(mknodat)
+SYSCALL(fchownat)
+COMPAT_SYS(futimesat)
+SYSX(sys_newfstatat, sys_fstatat64, sys_fstatat64)
+SYSCALL(unlinkat)
+SYSCALL(renameat)
+SYSCALL(linkat)
+SYSCALL(symlinkat)
+SYSCALL(readlinkat)
+SYSCALL(fchmodat)
+SYSCALL(faccessat)
 
 /*
  * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c
index b283380..95b3643 100644 (file)
@@ -319,6 +319,19 @@ void *spu_syscall_table[] = {
        [__NR_splice]                   sys_splice,
        [__NR_tee]                      sys_tee,
        [__NR_vmsplice]                 sys_vmsplice,
+       [__NR_openat]                   sys_openat,
+       [__NR_mkdirat]                  sys_mkdirat,
+       [__NR_mknodat]                  sys_mknodat,
+       [__NR_fchownat]                 sys_fchownat,
+       [__NR_futimesat]                sys_futimesat,
+       [__NR_newfstatat]               sys_newfstatat,
+       [__NR_unlinkat]                 sys_unlinkat,
+       [__NR_renameat]                 sys_renameat,
+       [__NR_linkat]                   sys_linkat,
+       [__NR_symlinkat]                sys_symlinkat,
+       [__NR_readlinkat]               sys_readlinkat,
+       [__NR_fchmodat]                 sys_fchmodat,
+       [__NR_faccessat]                sys_faccessat,
 };
 
 long spu_sys_callback(struct spu_syscall_block *s)
index 9948cc1..0f282fa 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -261,7 +261,7 @@ asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
        return error;
 }
 
-#ifndef __ARCH_WANT_STAT64
+#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
 asmlinkage long sys_newfstatat(int dfd, char __user *filename,
                                struct stat __user *statbuf, int flag)
 {
index 34325e2..908acb4 100644 (file)
 #define __NR_splice            283
 #define __NR_tee               284
 #define __NR_vmsplice          285
+#define __NR_openat            286
+#define __NR_mkdirat           287
+#define __NR_mknodat           288
+#define __NR_fchownat          289
+#define __NR_futimesat         290
+#ifdef __powerpc64__
+#define __NR_newfstatat                291
+#else
+#define __NR_fstatat64         291
+#endif
+#define __NR_unlinkat          292
+#define __NR_renameat          293
+#define __NR_linkat            294
+#define __NR_symlinkat         295
+#define __NR_readlinkat                296
+#define __NR_fchmodat          297
+#define __NR_faccessat         298
 
-#define __NR_syscalls          286
+#define __NR_syscalls          299
 
 #ifdef __KERNEL__
 #define __NR__exit __NR_exit
@@ -458,6 +475,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6
 #ifdef CONFIG_PPC64
 #define __ARCH_WANT_COMPAT_SYS_TIME
 #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
+#define __ARCH_WANT_SYS_NEWFSTATAT
 #endif
 
 /*