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 |
