diff options
Diffstat (limited to 'arch/arm/lib/copy_from_user.S')
-rw-r--r-- | arch/arm/lib/copy_from_user.S | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S index 56799a165cc4..e4fe124acedc 100644 --- a/arch/arm/lib/copy_from_user.S +++ b/arch/arm/lib/copy_from_user.S | |||
@@ -33,11 +33,15 @@ | |||
33 | * Number of bytes NOT copied. | 33 | * Number of bytes NOT copied. |
34 | */ | 34 | */ |
35 | 35 | ||
36 | #ifndef CONFIG_THUMB2_KERNEL | ||
37 | #define LDR1W_SHIFT 0 | ||
38 | #else | ||
39 | #define LDR1W_SHIFT 1 | ||
40 | #endif | ||
41 | #define STR1W_SHIFT 0 | ||
42 | |||
36 | .macro ldr1w ptr reg abort | 43 | .macro ldr1w ptr reg abort |
37 | 100: ldrt \reg, [\ptr], #4 | 44 | ldrusr \reg, \ptr, 4, abort=\abort |
38 | .section __ex_table, "a" | ||
39 | .long 100b, \abort | ||
40 | .previous | ||
41 | .endm | 45 | .endm |
42 | 46 | ||
43 | .macro ldr4w ptr reg1 reg2 reg3 reg4 abort | 47 | .macro ldr4w ptr reg1 reg2 reg3 reg4 abort |
@@ -53,14 +57,11 @@ | |||
53 | .endm | 57 | .endm |
54 | 58 | ||
55 | .macro ldr1b ptr reg cond=al abort | 59 | .macro ldr1b ptr reg cond=al abort |
56 | 100: ldr\cond\()bt \reg, [\ptr], #1 | 60 | ldrusr \reg, \ptr, 1, \cond, abort=\abort |
57 | .section __ex_table, "a" | ||
58 | .long 100b, \abort | ||
59 | .previous | ||
60 | .endm | 61 | .endm |
61 | 62 | ||
62 | .macro str1w ptr reg abort | 63 | .macro str1w ptr reg abort |
63 | str \reg, [\ptr], #4 | 64 | W(str) \reg, [\ptr], #4 |
64 | .endm | 65 | .endm |
65 | 66 | ||
66 | .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | 67 | .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort |