Explorar o código

CRIS: Fixup lookup for delay slot faults

Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Jesper Nilsson %!s(int64=15) %!d(string=hai) anos
pai
achega
a90993c693
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      arch/cris/mm/fault.c

+ 4 - 1
arch/cris/mm/fault.c

@@ -334,8 +334,11 @@ int
 find_fixup_code(struct pt_regs *regs)
 find_fixup_code(struct pt_regs *regs)
 {
 {
 	const struct exception_table_entry *fixup;
 	const struct exception_table_entry *fixup;
+	/* in case of delay slot fault (v32) */
+	unsigned long ip = (instruction_pointer(regs) & ~0x1);
 
 
-	if ((fixup = search_exception_tables(instruction_pointer(regs))) != 0) {
+	fixup = search_exception_tables(ip);
+	if (fixup != 0) {
 		/* Adjust the instruction pointer in the stackframe. */
 		/* Adjust the instruction pointer in the stackframe. */
 		instruction_pointer(regs) = fixup->fixup;
 		instruction_pointer(regs) = fixup->fixup;
 		arch_fixup(regs);
 		arch_fixup(regs);