diff options
author | dfr <dfr@FreeBSD.org> | 2001-03-04 23:29:23 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-03-04 23:29:23 +0000 |
commit | 430eceb8a5d406aec5bfa59f0e169302cc409726 (patch) | |
tree | 7b75cc4c7549307b4740449e50e656ae5b09e1b8 /sys/alpha | |
parent | 6d34e037b24884d9fe193e69cd384ff8b341bc5a (diff) | |
download | FreeBSD-src-430eceb8a5d406aec5bfa59f0e169302cc409726.zip FreeBSD-src-430eceb8a5d406aec5bfa59f0e169302cc409726.tar.gz |
Disable interrupts while sanity checking the owner of the floating point
state. It is possible that we could be preempted part way through the
check.
Diffstat (limited to 'sys/alpha')
-rw-r--r-- | sys/alpha/alpha/machdep.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 0b79c68..7238cd1 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -2100,9 +2100,14 @@ alpha_fpstate_check(struct proc *p) * For SMP, we should check the fpcurproc of each cpu. */ #ifndef SMP + int s; + + s = save_intr(); + disable_intr(); if (p->p_addr->u_pcb.pcb_hw.apcb_flags & ALPHA_PCB_FLAGS_FEN) if (p != PCPU_GET(fpcurproc)) panic("alpha_check_fpcurproc: bogus"); + restore_intr(s); #endif } |