Loading arch/arc/kernel/entry.S +2 −2 Original line number Diff line number Diff line Loading @@ -393,12 +393,12 @@ ARC_ENTRY EV_TLBProtV #ifdef CONFIG_ARC_MISALIGN_ACCESS SAVE_CALLEE_SAVED_USER mov r3, sp ; callee_regs #endif bl do_misaligned_access #ifdef CONFIG_ARC_MISALIGN_ACCESS DISCARD_CALLEE_SAVED_USER #else bl do_misaligned_error #endif b ret_from_exception Loading arch/arc/kernel/traps.c +4 −13 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ DO_ERROR_INFO(SIGILL, "Invalid Extn Insn", do_extension_fault, ILL_ILLOPC) DO_ERROR_INFO(SIGILL, "Illegal Insn (or Seq)", insterror_is_error, ILL_ILLOPC) DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", do_memory_error, BUS_ADRERR) DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT) DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN) #ifdef CONFIG_ARC_MISALIGN_ACCESS /* Loading @@ -92,21 +93,11 @@ DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT) int do_misaligned_access(unsigned long cause, unsigned long address, struct pt_regs *regs, struct callee_regs *cregs) { if (misaligned_fixup(address, regs, cause, cregs) != 0) { siginfo_t info; info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRALN; info.si_addr = (void __user *)address; return handle_exception(cause, "Misaligned Access", regs, &info); } if (misaligned_fixup(address, regs, cause, cregs) != 0) return do_misaligned_error(cause, address, regs); return 0; } #else DO_ERROR_INFO(SIGSEGV, "Misaligned Access", do_misaligned_access, SEGV_ACCERR) #endif /* Loading Loading
arch/arc/kernel/entry.S +2 −2 Original line number Diff line number Diff line Loading @@ -393,12 +393,12 @@ ARC_ENTRY EV_TLBProtV #ifdef CONFIG_ARC_MISALIGN_ACCESS SAVE_CALLEE_SAVED_USER mov r3, sp ; callee_regs #endif bl do_misaligned_access #ifdef CONFIG_ARC_MISALIGN_ACCESS DISCARD_CALLEE_SAVED_USER #else bl do_misaligned_error #endif b ret_from_exception Loading
arch/arc/kernel/traps.c +4 −13 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ DO_ERROR_INFO(SIGILL, "Invalid Extn Insn", do_extension_fault, ILL_ILLOPC) DO_ERROR_INFO(SIGILL, "Illegal Insn (or Seq)", insterror_is_error, ILL_ILLOPC) DO_ERROR_INFO(SIGBUS, "Invalid Mem Access", do_memory_error, BUS_ADRERR) DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT) DO_ERROR_INFO(SIGBUS, "Misaligned Access", do_misaligned_error, BUS_ADRALN) #ifdef CONFIG_ARC_MISALIGN_ACCESS /* Loading @@ -92,21 +93,11 @@ DO_ERROR_INFO(SIGTRAP, "Breakpoint Set", trap_is_brkpt, TRAP_BRKPT) int do_misaligned_access(unsigned long cause, unsigned long address, struct pt_regs *regs, struct callee_regs *cregs) { if (misaligned_fixup(address, regs, cause, cregs) != 0) { siginfo_t info; info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRALN; info.si_addr = (void __user *)address; return handle_exception(cause, "Misaligned Access", regs, &info); } if (misaligned_fixup(address, regs, cause, cregs) != 0) return do_misaligned_error(cause, address, regs); return 0; } #else DO_ERROR_INFO(SIGSEGV, "Misaligned Access", do_misaligned_access, SEGV_ACCERR) #endif /* Loading