diff options
author | Dale S. Rahn <rahnds@cvs.openbsd.org> | 1997-02-05 06:10:06 +0000 |
---|---|---|
committer | Dale S. Rahn <rahnds@cvs.openbsd.org> | 1997-02-05 06:10:06 +0000 |
commit | 73dc056ffc87d87e6c1d1e41ddeaab5e36c59410 (patch) | |
tree | 78cb7bd24b5f6fcc45cd8ece9883172d8e883971 | |
parent | f2f4b9ce08f5050c9719f6856d3b7a8c01339a8a (diff) |
Fixups of the siginfo code changes.
All of the siginfo changes were from theo, I just cleaned up the header
files and tested it.
-rw-r--r-- | sys/arch/powerpc/powerpc/trap.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/sys/arch/powerpc/powerpc/trap.c b/sys/arch/powerpc/powerpc/trap.c index 3cbf4252a88..6cf7ec02837 100644 --- a/sys/arch/powerpc/powerpc/trap.c +++ b/sys/arch/powerpc/powerpc/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.4 1997/02/05 01:33:55 rahnds Exp $ */ +/* $OpenBSD: trap.c,v 1.5 1997/02/05 06:10:05 rahnds Exp $ */ /* $NetBSD: trap.c,v 1.3 1996/10/13 03:31:37 christos Exp $ */ /* @@ -112,19 +112,21 @@ printf("kern dsi on addr %x iar %x\n", frame->dar, frame->srr0); goto brain_damage; case EXC_DSI|EXC_USER: { - int ftype; + int ftype, vftype; - if (frame->dsisr & DSISR_STORE) + if (frame->dsisr & DSISR_STORE) { ftype = VM_PROT_READ | VM_PROT_WRITE; - else - ftype = VM_PROT_READ; + vftype = VM_PROT_WRITE; + } else + vftype = ftype = VM_PROT_READ; if (vm_fault(&p->p_vmspace->vm_map, trunc_page(frame->dar), ftype, FALSE) == KERN_SUCCESS) break; - } printf("dsi on addr %x iar %x\n", frame->dar, frame->srr0); - trapsignal(p, SIGSEGV, EXC_DSI, SEGV_MAPERR, frame->dar); + trapsignal(p, SIGSEGV, vftype, SEGV_MAPERR, + frame->dar); + } break; case EXC_ISI|EXC_USER: { @@ -137,7 +139,8 @@ printf("dsi on addr %x iar %x\n", frame->dar, frame->srr0); break; } printf("isi iar %x\n", frame->srr0); - trapsignal(p, SIGSEGV, EXC_ISI, SEGV_MAPERR, frame->srr0); + trapsignal(p, SIGSEGV, VM_PROT_EXECUTE, SEGV_MAPERR, + frame->srr0); break; case EXC_SC|EXC_USER: { @@ -261,7 +264,7 @@ brain_damage: case EXC_PGM|EXC_USER: printf("pgm iar %x\n", frame->srr0); - trapsignal(p, SIGILL, EXC_PGM, ILL_ILLOPC, frame->srr0); + trapsignal(p, SIGILL, 0, ILL_ILLOPC, frame->srr0); break; case EXC_AST|EXC_USER: /* This is just here that we trap */ |