Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[safe/jmp/linux-2.6] / arch / arm / lib / copy_from_user.S
index 6b7363c..66a477a 100644 (file)
  *     Number of bytes NOT copied.
  */
 
+#ifndef CONFIG_THUMB2_KERNEL
+#define LDR1W_SHIFT    0
+#else
+#define LDR1W_SHIFT    1
+#endif
+#define STR1W_SHIFT    0
+
        .macro ldr1w ptr reg abort
-100:   ldrt \reg, [\ptr], #4
-       .section __ex_table, "a"
-       .long 100b, \abort
-       .previous
+       ldrusr  \reg, \ptr, 4, abort=\abort
        .endm
 
        .macro ldr4w ptr reg1 reg2 reg3 reg4 abort
        .endm
 
        .macro ldr1b ptr reg cond=al abort
-100:   ldr\cond\()bt \reg, [\ptr], #1
-       .section __ex_table, "a"
-       .long 100b, \abort
-       .previous
+       ldrusr  \reg, \ptr, 1, \cond, abort=\abort
        .endm
 
        .macro str1w ptr reg abort
-       str \reg, [\ptr], #4
+       W(str) \reg, [\ptr], #4
        .endm
 
        .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
@@ -87,7 +88,9 @@ ENTRY(__copy_from_user)
 
 #include "copy_template.S"
 
-       .section .fixup,"ax"
+ENDPROC(__copy_from_user)
+
+       .pushsection .fixup,"ax"
        .align 0
        copy_abort_preamble
        ldmfd   sp!, {r1, r2}
@@ -97,5 +100,5 @@ ENTRY(__copy_from_user)
        bl      __memzero
        ldr     r0, [sp], #4
        copy_abort_end
-       .previous
+       .popsection