Loading arch/mn10300/mm/misalignment.c +23 −29 Original line number Diff line number Diff line Loading @@ -329,9 +329,10 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) void *address; unsigned tmp, npop, dispsz, loop; /* we don't fix up userspace misalignment faults */ if (user_mode(regs)) sp = regs->sp; else goto bus_error; sp = (unsigned long) regs + sizeof(*regs); kdebug("==>misalignment({pc=%lx,sp=%lx})", regs->pc, sp); Loading Loading @@ -386,7 +387,6 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) } /* didn't manage to find a fixup */ if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x\n", regs->pc, opcode); Loading @@ -395,6 +395,7 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) if (die_if_no_fixup("misalignment error", regs, code)) return; bus_error: info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRALN; Loading @@ -404,28 +405,24 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) /* error reading opcodes */ fetch_error: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %p: fault whilst reading instruction data\n", pc); goto failed; bad_addr_mode: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported addressing mode %x\n", regs->pc, opcode); goto failed; bad_reg_mode: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported register mode %x\n", regs->pc, opcode); goto failed; unsupported_instruction: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x (%s)\n", regs->pc, opcode, pop->name); Loading Loading @@ -476,15 +473,13 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) kdebug("disp=%lx", disp); set_fs(KERNEL_XDS); if (fixup || regs->epsw & EPSW_nSL) if (fixup) set_fs(seg); tmp = (pop->params[0] ^ pop->params[1]) & 0x80000000; if (!tmp) { if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx:" " insn not move to/from memory %x\n", "MISALIGN: %lx: insn not move to/from memory %x\n", regs->pc, opcode); goto failed; } Loading Loading @@ -548,7 +543,6 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) misalignment_MOV_Lcc(regs, opcode); set_fs(seg); return; } /* Loading Loading
arch/mn10300/mm/misalignment.c +23 −29 Original line number Diff line number Diff line Loading @@ -329,9 +329,10 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) void *address; unsigned tmp, npop, dispsz, loop; /* we don't fix up userspace misalignment faults */ if (user_mode(regs)) sp = regs->sp; else goto bus_error; sp = (unsigned long) regs + sizeof(*regs); kdebug("==>misalignment({pc=%lx,sp=%lx})", regs->pc, sp); Loading Loading @@ -386,7 +387,6 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) } /* didn't manage to find a fixup */ if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x\n", regs->pc, opcode); Loading @@ -395,6 +395,7 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) if (die_if_no_fixup("misalignment error", regs, code)) return; bus_error: info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRALN; Loading @@ -404,28 +405,24 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) /* error reading opcodes */ fetch_error: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %p: fault whilst reading instruction data\n", pc); goto failed; bad_addr_mode: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported addressing mode %x\n", regs->pc, opcode); goto failed; bad_reg_mode: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported register mode %x\n", regs->pc, opcode); goto failed; unsupported_instruction: if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx: unsupported instruction %x (%s)\n", regs->pc, opcode, pop->name); Loading Loading @@ -476,15 +473,13 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) kdebug("disp=%lx", disp); set_fs(KERNEL_XDS); if (fixup || regs->epsw & EPSW_nSL) if (fixup) set_fs(seg); tmp = (pop->params[0] ^ pop->params[1]) & 0x80000000; if (!tmp) { if (!user_mode(regs)) printk(KERN_CRIT "MISALIGN: %lx:" " insn not move to/from memory %x\n", "MISALIGN: %lx: insn not move to/from memory %x\n", regs->pc, opcode); goto failed; } Loading Loading @@ -548,7 +543,6 @@ asmlinkage void misalignment(struct pt_regs *regs, enum exception_code code) misalignment_MOV_Lcc(regs, opcode); set_fs(seg); return; } /* Loading