提交 6dd04688 编写于 作者: R Ralf Baechle

When simulating ll/sc compute the return EPC before modifying the

registers.
Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
上级 ac5d8c02
...@@ -408,9 +408,10 @@ static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode) ...@@ -408,9 +408,10 @@ static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode)
preempt_enable(); preempt_enable();
compute_return_epc(regs);
regs->regs[(opcode & RT) >> 16] = value; regs->regs[(opcode & RT) >> 16] = value;
compute_return_epc(regs);
return; return;
sig: sig:
...@@ -459,9 +460,9 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode) ...@@ -459,9 +460,9 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
goto sig; goto sig;
} }
compute_return_epc(regs);
regs->regs[reg] = 1; regs->regs[reg] = 1;
compute_return_epc(regs);
return; return;
sig: sig:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册