Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dd04688 authored by Ralf Baechle's avatar Ralf Baechle
Browse files

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


registers.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent ac5d8c02
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -408,9 +408,10 @@ static inline void simulate_ll(struct pt_regs *regs, unsigned int opcode)

	preempt_enable();

	compute_return_epc(regs);

	regs->regs[(opcode & RT) >> 16] = value;

	compute_return_epc(regs);
	return;

sig:
@@ -459,9 +460,9 @@ static inline void simulate_sc(struct pt_regs *regs, unsigned int opcode)
		goto sig;
	}

	compute_return_epc(regs);
	regs->regs[reg] = 1;

	compute_return_epc(regs);
	return;

sig: