Commit 809ef03d authored by Yang Li's avatar Yang Li Committed by Guo Ren (Alibaba DAMO Academy)
Browse files

csky: fix csky_cmpxchg_fixup not working



In the csky_cmpxchg_fixup function, it is incorrect to use the global
variable csky_cmpxchg_stw to determine the address where the exception
occurred.The global variable csky_cmpxchg_stw stores the opcode at the
time of the exception, while &csky_cmpxchg_stw shows the address where
the exception occurred.

Signed-off-by: default avatarYang Li <yang.li85200@gmail.com>
Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
parent 3a866087
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -45,8 +45,8 @@ static inline void csky_cmpxchg_fixup(struct pt_regs *regs)
	if (trap_no(regs) != VEC_TLBMODIFIED)
		return;

	if (instruction_pointer(regs) == csky_cmpxchg_stw)
		instruction_pointer_set(regs, csky_cmpxchg_ldw);
	if (instruction_pointer(regs) == (unsigned long)&csky_cmpxchg_stw)
		instruction_pointer_set(regs, (unsigned long)&csky_cmpxchg_ldw);
	return;
}
#endif