Bläddra i källkod

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

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

Ralf Baechle 20 år sedan
förälder
incheckning
6dd0468852
1 ändrade filer med 3 tillägg och 2 borttagningar
  1. 3 2
      arch/mips/kernel/traps.c

+ 3 - 2
arch/mips/kernel/traps.c

@@ -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: