patch-2.4.18 linux/include/asm-s390x/uaccess.h
Next file: linux/include/asm-sh/pci.h
Previous file: linux/include/asm-s390x/timex.h
Back to the patch index
Back to the overall index
- Lines: 122
- Date:
Fri Dec 21 16:25:31 2001
- Orig file:
linux.orig/include/asm-s390x/uaccess.h
- Orig date:
Mon Feb 18 20:18:40 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/include/asm-s390x/uaccess.h linux/include/asm-s390x/uaccess.h
@@ -336,34 +336,11 @@
* access register are set up, that 4 points to secondary (user) , 2 to primary (kernel)
*/
-asmlinkage void __copy_from_user_fixup(void /* special calling convention */);
-asmlinkage void __copy_to_user_fixup(void /* special calling convention */);
-
-extern inline unsigned long
-__copy_to_user_asm(void* to, const void* from, long n)
-{
-
- __asm__ __volatile__ ( " lgr 2,%2\n"
- " lgr 4,%1\n"
- " lgr 3,%0\n"
- " lgr 5,3\n"
- " sacf 512\n"
- "0: mvcle 4,2,0\n"
- " jo 0b\n"
- " sacf 0\n"
- " lgr %0,3\n"
- ".section __ex_table,\"a\"\n"
- " .align 8\n"
- " .quad 0b,__copy_to_user_fixup\n"
- ".previous"
- : "+&d" (n) : "d" (to), "d" (from)
- : "cc", "1", "2", "3", "4", "5" );
- return n;
-}
+extern long __copy_to_user_asm(const void *from, long n, void *to);
#define __copy_to_user(to, from, n) \
({ \
- __copy_to_user_asm(to,from,n); \
+ __copy_to_user_asm(from, n, to); \
})
#define copy_to_user(to, from, n) \
@@ -371,38 +348,18 @@
long err = 0; \
__typeof__(n) __n = (n); \
if (__access_ok(to,__n)) { \
- err = __copy_to_user_asm(to,from,__n); \
+ err = __copy_to_user_asm(from, __n, to); \
} \
else \
err = __n; \
err; \
})
-extern inline unsigned long
-__copy_from_user_asm(void* to, const void* from, long n)
-{
- __asm__ __volatile__ ( " lgr 2,%1\n"
- " lgr 4,%2\n"
- " lgr 3,%0\n"
- " lgr 5,3\n"
- " sacf 512\n"
- "0: mvcle 2,4,0\n"
- " jo 0b\n"
- " sacf 0\n"
- " lgr %0,5\n"
- ".section __ex_table,\"a\"\n"
- " .align 8\n"
- " .quad 0b,__copy_from_user_fixup\n"
- ".previous"
- : "+&d" (n) : "d" (to), "d" (from)
- : "cc", "1", "2", "3", "4", "5" );
- return n;
-}
-
+extern long __copy_from_user_asm(void *to, long n, const void *from);
#define __copy_from_user(to, from, n) \
({ \
- __copy_from_user_asm(to,from,n); \
+ __copy_from_user_asm(to, n, from); \
})
#define copy_from_user(to, from, n) \
@@ -410,7 +367,7 @@
long err = 0; \
__typeof__(n) __n = (n); \
if (__access_ok(from,__n)) { \
- err = __copy_from_user_asm(to,from,__n); \
+ err = __copy_from_user_asm(to, __n, from); \
} \
else \
err = __n; \
@@ -520,27 +477,12 @@
* Zero Userspace
*/
-static inline unsigned long
-__clear_user(void *to, unsigned long n)
-{
- __asm__ __volatile__ ( " sacf 512\n"
- " lgr 4,%1\n"
- " lgr 5,%0\n"
- " sgr 2,2\n"
- " sgr 3,3\n"
- "0: mvcle 4,2,0\n"
- " jo 0b\n"
- "1: sacf 0\n"
- " lgr %0,5\n"
- ".section __ex_table,\"a\"\n"
- " .align 8\n"
- " .quad 0b,__copy_to_user_fixup\n"
- ".previous"
- : "+&a" (n)
- : "a" (to)
- : "cc", "1", "2", "3", "4", "5" );
- return n;
-}
+extern long __clear_user_asm(void *to, long n);
+
+#define __clear_user(to, n) \
+({ \
+ __clear_user_asm(to, n); \
+})
static inline unsigned long
clear_user(void *to, unsigned long n)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)