summaryrefslogtreecommitdiffstats
path: root/arch/s390/lib/uaccess.h
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-01-23 11:18:36 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-02-21 08:50:14 +0100
commit4f41c2b4567dbfb7ff93e5c552b869e2865bcd9d (patch)
tree5845eccdb038c5e1bc90a0aaf8919f2a65fa8096 /arch/s390/lib/uaccess.h
parentcfa785e623577cdad2aa721acb23bd3a95eced9a (diff)
downloadlinux-4f41c2b4567dbfb7ff93e5c552b869e2865bcd9d.tar.gz
linux-4f41c2b4567dbfb7ff93e5c552b869e2865bcd9d.tar.bz2
linux-4f41c2b4567dbfb7ff93e5c552b869e2865bcd9d.zip
s390/uaccess: get rid of indirect function calls
There are only two uaccess variants on s390 left: the version that is used if the mvcos instruction is available, and the page table walk variant. So there is no need for expensive indirect function calls. By default the mvcos variant will be called. If the mvcos instruction is not available it will call the page table walk variant. For minimal performance impact the "if (mvcos_is_available)" is implemented with a jump label, which will be a six byte nop on machines with mvcos. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/lib/uaccess.h')
-rw-r--r--arch/s390/lib/uaccess.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/s390/lib/uaccess.h b/arch/s390/lib/uaccess.h
index b1a22173d027..e5b9c924b733 100644
--- a/arch/s390/lib/uaccess.h
+++ b/arch/s390/lib/uaccess.h
@@ -6,7 +6,11 @@
#ifndef __ARCH_S390_LIB_UACCESS_H
#define __ARCH_S390_LIB_UACCESS_H
-extern int futex_atomic_op_pt(int, u32 __user *, int, int *);
-extern int futex_atomic_cmpxchg_pt(u32 *, u32 __user *, u32, u32);
+size_t copy_from_user_pt(void *to, const void __user *from, size_t n);
+size_t copy_to_user_pt(void __user *to, const void *from, size_t n);
+size_t copy_in_user_pt(void __user *to, const void __user *from, size_t n);
+size_t clear_user_pt(void __user *to, size_t n);
+size_t strnlen_user_pt(const char __user *src, size_t count);
+size_t strncpy_from_user_pt(char *dst, const char __user *src, size_t count);
#endif /* __ARCH_S390_LIB_UACCESS_H */