diff options
author | jhb <jhb@FreeBSD.org> | 2001-08-07 17:31:42 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-08-07 17:31:42 +0000 |
commit | b80b9bc08636427818bc7ee7ac20841643ad1025 (patch) | |
tree | 8523fe9cf4cfbb084f2b9aa61b8c54f846511b71 /sys/ia64 | |
parent | ef322198c6df0f8f2420460d663e8d12b1e48ada (diff) | |
download | FreeBSD-src-b80b9bc08636427818bc7ee7ac20841643ad1025.zip FreeBSD-src-b80b9bc08636427818bc7ee7ac20841643ad1025.tar.gz |
Grab Giant arond page faults. ia64 boots again in the simulator now.
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/trap.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index 5422a2f..4028515 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -286,6 +286,7 @@ trap(int vector, int imm, struct trapframe *framep) p->p_addr->u_pcb.pcb_onfault = 0; goto out; } + mtx_lock(&Giant); /* * It is only a kernel address space fault iff: @@ -405,11 +406,10 @@ trap(int vector, int imm, struct trapframe *framep) #endif trapsignal(p, i, ucode); out: - if (user) { + if (user) userret(p, framep, sticks); - if (mtx_owned(&Giant)) - mtx_unlock(&Giant); - } + if (mtx_owned(&Giant)) + mtx_unlock(&Giant); return; dopanic: |