[parisc-linux-cvs] further top-half arg register fixup

Richard Hirst rhirst@linuxcare.com
Fri, 8 Jun 2001 15:02:03 +0100


Thanks to jsm for pointing out the need for these.

RCS file: /home/cvs/parisc/linux/Makefile,v
retrieving revision 1.47
diff -u -r1.47 Makefile
--- Makefile    2001/06/07 22:16:36     1.47
+++ Makefile    2001/06/08 13:53:28
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 0
-EXTRAVERSION = -pa14
+EXTRAVERSION = -pa15
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
Index: arch/parisc/kernel/syscall.S
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/syscall.S,v
retrieving revision 1.68
diff -u -r1.68 syscall.S
--- syscall.S   2001/06/06 18:24:31     1.68
+++ syscall.S   2001/06/08 13:53:29
@@ -83,6 +83,8 @@
        depdi   0, 31, 32, %r25
        depdi   0, 31, 32, %r24
        depdi   0, 31, 32, %r23
+       depdi   0, 31, 32, %r22
+       depdi   0, 31, 32, %r21
 #endif
        mtctl   %r28,%cr31
        rsm     PSW_I, %r28                     /* no ints for a bit  */
@@ -347,7 +349,7 @@
        ENTRY_SAME(socket)
        /* struct stat is MAYBE identical wide and narrow ?? */
        ENTRY_DIFF(newstat)
-       ENTRY_SAME(lseek)
+       ENTRY_DIFF(lseek)
        ENTRY_SAME(getpid)              /* 20 */
        /* the 'void * data' parameter may need re-packing in wide */
        ENTRY_DIFF(mount)
Index: arch/parisc/kernel/sys_parisc32.c
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/sys_parisc32.c,v
retrieving revision 1.15
diff -u -r1.15 sys_parisc32.c
--- sys_parisc32.c      2001/05/30 17:16:30     1.15
+++ sys_parisc32.c      2001/06/08 13:53:34
@@ -3195,3 +3195,15 @@
        return err ? -EFAULT : 0;
 }
 
+
+/* lseek() needs a wrapper because 'offset' can be negative, but the top
+ * half of the argument has been zeroed by syscall.S.
+ */
+
+extern asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin);
+
+asmlinkage int sys32_lseek(unsigned int fd, int offset, unsigned int origin)
+{
+       return sys_lseek(fd, offset, origin);
+}
+