diff options
-rw-r--r-- | arch/arm/include/asm/assembler.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 683a1e6b6020..2ef95813fce0 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
@@ -254,16 +254,17 @@ | |||
254 | mov lr , \reg | 254 | mov lr , \reg |
255 | and lr , lr , #MODE_MASK | 255 | and lr , lr , #MODE_MASK |
256 | cmp lr , #HYP_MODE | 256 | cmp lr , #HYP_MODE |
257 | orr \reg , \reg , #PSR_A_BIT | PSR_I_BIT | PSR_F_BIT | 257 | orr \reg , \reg , #PSR_I_BIT | PSR_F_BIT |
258 | bic \reg , \reg , #MODE_MASK | 258 | bic \reg , \reg , #MODE_MASK |
259 | orr \reg , \reg , #SVC_MODE | 259 | orr \reg , \reg , #SVC_MODE |
260 | THUMB( orr \reg , \reg , #PSR_T_BIT ) | 260 | THUMB( orr \reg , \reg , #PSR_T_BIT ) |
261 | msr spsr_cxsf, \reg | ||
262 | adr lr, BSYM(2f) | ||
263 | bne 1f | 261 | bne 1f |
262 | orr \reg, \reg, #PSR_A_BIT | ||
263 | adr lr, BSYM(2f) | ||
264 | msr spsr_cxsf, \reg | ||
264 | __MSR_ELR_HYP(14) | 265 | __MSR_ELR_HYP(14) |
265 | __ERET | 266 | __ERET |
266 | 1: movs pc, lr | 267 | 1: msr cpsr_c, \reg |
267 | 2: | 268 | 2: |
268 | .endm | 269 | .endm |
269 | 270 | ||