patch-2.2.18 linux/include/asm-arm/proc-armv/uaccess.h
Next file: linux/include/asm-arm/proc-fns.h
Previous file: linux/include/asm-arm/proc-armv/system.h
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Fri Sep 15 23:32:34 2000
- Orig file:
v2.2.17/include/asm-arm/proc-armv/uaccess.h
- Orig date:
Fri Apr 21 12:46:49 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/include/asm-arm/proc-armv/uaccess.h linux/include/asm-arm/proc-armv/uaccess.h
@@ -2,36 +2,8 @@
* linux/include/asm-arm/proc-armv/uaccess.h
*/
-/*
- * The fs functions are implemented on the ARMV3 and V4 architectures
- * using the domain register.
- *
- * DOMAIN_IO - domain 2 includes all IO only
- * DOMAIN_KERNEL - domain 1 includes all kernel memory only
- * DOMAIN_USER - domain 0 includes all user memory only
- */
-
#include <asm/hardware.h>
-
-#define DOMAIN_CLIENT 1
-#define DOMAIN_MANAGER 3
-
-#define DOMAIN_USER_CLIENT ((DOMAIN_CLIENT) << 0)
-#define DOMAIN_USER_MANAGER ((DOMAIN_MANAGER) << 0)
-
-#define DOMAIN_KERNEL_CLIENT ((DOMAIN_CLIENT) << 2)
-#define DOMAIN_KERNEL_MANAGER ((DOMAIN_MANAGER) << 2)
-
-#define DOMAIN_IO_CLIENT ((DOMAIN_CLIENT) << 4)
-#define DOMAIN_IO_MANAGER ((DOMAIN_MANAGER) << 4)
-
-/*
- * When we want to access kernel memory in the *_user functions,
- * we change the domain register to KERNEL_DS, thus allowing
- * unrestricted access
- */
-#define KERNEL_DOMAIN (DOMAIN_USER_CLIENT | DOMAIN_KERNEL_MANAGER | DOMAIN_IO_CLIENT)
-#define USER_DOMAIN (DOMAIN_USER_CLIENT | DOMAIN_KERNEL_CLIENT | DOMAIN_IO_CLIENT)
+#include <asm/proc/domain.h>
/*
* Note that this is actually 0x1,0000,0000
@@ -48,8 +20,7 @@
{
current->addr_limit = fs;
- __asm__ __volatile__("mcr p15, 0, %0, c3, c0" :
- : "r" (fs ? USER_DOMAIN : KERNEL_DOMAIN));
+ modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER);
}
/* We use 33-bit arithmetic here... */
@@ -201,6 +172,6 @@
#define __do_strncpy_from_user(dst,src,count,res) \
(res) = __arch_strncpy_from_user(dst,src,count)
-extern unsigned long __arch_strlen_user(const char *s);
-#define __do_strlen_user(s,res) \
- (res) = __arch_strlen_user(s)
+extern unsigned long __arch_strnlen_user(const char *s, long n);
+#define __do_strnlen_user(s,n,res) \
+ (res) = __arch_strnlen_user(s,n)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)