Skip to content

Commit 86147e3

Browse files
Liav Rehanavineetgarc
authored andcommitted
ARC: use correct offset in pt_regs for saving/restoring user mode r25
User mode callee regs are explicitly collected before signal delivery or breakpoint trap. r25 is special for kernel as it serves as task pointer, so user mode value is clobbered very early. It is saved in pt_regs where generally only scratch (aka caller saved) regs are saved. The code to access the corresponding pt_regs location had a subtle bug as it was using load/store with scaling of offset, whereas the offset was already byte wise correct. So fix this by replacing LD.AS with a standard LD Cc: <[email protected]> Signed-off-by: Liav Rehana <[email protected]> Reviewed-by: Alexey Brodkin <[email protected]> [vgupta: rewrote title and commit log] Signed-off-by: Vineet Gupta <[email protected]>
1 parent 45c3b08 commit 86147e3

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

arch/arc/include/asm/entry.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142

143143
#ifdef CONFIG_ARC_CURR_IN_REG
144144
; Retrieve orig r25 and save it with rest of callee_regs
145-
ld.as r12, [r12, PT_user_r25]
145+
ld r12, [r12, PT_user_r25]
146146
PUSH r12
147147
#else
148148
PUSH r25
@@ -198,7 +198,7 @@
198198

199199
; SP is back to start of pt_regs
200200
#ifdef CONFIG_ARC_CURR_IN_REG
201-
st.as r12, [sp, PT_user_r25]
201+
st r12, [sp, PT_user_r25]
202202
#endif
203203
.endm
204204

0 commit comments

Comments
 (0)