aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc64/mm/fault.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c
index 0db2f7d9fab5..6e002aacb961 100644
--- a/arch/sparc64/mm/fault.c
+++ b/arch/sparc64/mm/fault.c
@@ -327,8 +327,12 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
327 insn = get_fault_insn(regs, 0); 327 insn = get_fault_insn(regs, 0);
328 if (!insn) 328 if (!insn)
329 goto continue_fault; 329 goto continue_fault;
330 /* All loads, stores and atomics have bits 30 and 31 both set
331 * in the instruction. Bit 21 is set in all stores, but we
332 * have to avoid prefetches which also have bit 21 set.
333 */
330 if ((insn & 0xc0200000) == 0xc0200000 && 334 if ((insn & 0xc0200000) == 0xc0200000 &&
331 (insn & 0x1780000) != 0x1680000) { 335 (insn & 0x01780000) != 0x01680000) {
332 /* Don't bother updating thread struct value, 336 /* Don't bother updating thread struct value,
333 * because update_mmu_cache only cares which tlb 337 * because update_mmu_cache only cares which tlb
334 * the access came from. 338 * the access came from.