Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[deliverable/linux.git] / arch / arm / lib / getuser.S
index 9b06bb41fca659b9bbfc2f996e703ce2b8c315aa..938600098b88690507ef22489e3a3d0dbc3cc401 100644 (file)
@@ -18,7 +18,7 @@
  * Inputs:     r0 contains the address
  *             r1 contains the address limit, which must be preserved
  * Outputs:    r0 is the error code
- *             r2 contains the zero-extended value
+ *             r2, r3 contains the zero-extended value
  *             lr corrupted
  *
  * No other registers must be altered.  (see <asm/uaccess.h>
@@ -36,7 +36,7 @@ ENTRY(__get_user_1)
        check_uaccess r0, 1, r1, r2, __get_user_bad
 1: TUSER(ldrb) r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_1)
 
 ENTRY(__get_user_2)
@@ -56,25 +56,60 @@ rb  .req    r0
        orr     r2, rb, r2, lsl #8
 #endif
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_2)
 
 ENTRY(__get_user_4)
        check_uaccess r0, 4, r1, r2, __get_user_bad
 4: TUSER(ldr)  r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_4)
 
+ENTRY(__get_user_8)
+       check_uaccess r0, 8, r1, r2, __get_user_bad
+#ifdef CONFIG_THUMB2_KERNEL
+5: TUSER(ldr)  r2, [r0]
+6: TUSER(ldr)  r3, [r0, #4]
+#else
+5: TUSER(ldr)  r2, [r0], #4
+6: TUSER(ldr)  r3, [r0]
+#endif
+       mov     r0, #0
+       ret     lr
+ENDPROC(__get_user_8)
+
+#ifdef __ARMEB__
+ENTRY(__get_user_lo8)
+       check_uaccess r0, 8, r1, r2, __get_user_bad
+#ifdef CONFIG_CPU_USE_DOMAINS
+       add     r0, r0, #4
+7:     ldrt    r2, [r0]
+#else
+7:     ldr     r2, [r0, #4]
+#endif
+       mov     r0, #0
+       ret     lr
+ENDPROC(__get_user_lo8)
+#endif
+
+__get_user_bad8:
+       mov     r3, #0
 __get_user_bad:
        mov     r2, #0
        mov     r0, #-EFAULT
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_bad)
+ENDPROC(__get_user_bad8)
 
 .pushsection __ex_table, "a"
        .long   1b, __get_user_bad
        .long   2b, __get_user_bad
        .long   3b, __get_user_bad
        .long   4b, __get_user_bad
+       .long   5b, __get_user_bad8
+       .long   6b, __get_user_bad8
+#ifdef __ARMEB__
+       .long   7b, __get_user_bad
+#endif
 .popsection
This page took 0.024987 seconds and 5 git commands to generate.