[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);
+}
+