traps.c (fab5db97e44f76461f76b24adfa8ccb14d4df498) | traps.c (e9370ae15dc2f8ba1e1889ce26f13cda565b6ecb) |
---|---|
1/* 2 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 7 * 2 of the License, or (at your option) any later version. 8 * --- 791 unchanged lines hidden (view full) --- 800 if (reason & REASON_PRIVILEGED) 801 _exception(SIGILL, regs, ILL_PRVOPC, regs->nip); 802 else 803 _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); 804} 805 806void alignment_exception(struct pt_regs *regs) 807{ | 1/* 2 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 7 * 2 of the License, or (at your option) any later version. 8 * --- 791 unchanged lines hidden (view full) --- 800 if (reason & REASON_PRIVILEGED) 801 _exception(SIGILL, regs, ILL_PRVOPC, regs->nip); 802 else 803 _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); 804} 805 806void alignment_exception(struct pt_regs *regs) 807{ |
808 int fixed; | 808 int fixed = 0; |
809 | 809 |
810 fixed = fix_alignment(regs); | 810 /* we don't implement logging of alignment exceptions */ 811 if (!(current->thread.align_ctl & PR_UNALIGN_SIGBUS)) 812 fixed = fix_alignment(regs); |
811 812 if (fixed == 1) { 813 regs->nip += 4; /* skip over emulated instruction */ 814 emulate_single_step(regs); 815 return; 816 } 817 818 /* Operand address was bad */ --- 252 unchanged lines hidden --- | 813 814 if (fixed == 1) { 815 regs->nip += 4; /* skip over emulated instruction */ 816 emulate_single_step(regs); 817 return; 818 } 819 820 /* Operand address was bad */ --- 252 unchanged lines hidden --- |