summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2002-03-05 06:13:22 +0000
committermarcel <marcel@FreeBSD.org>2002-03-05 06:13:22 +0000
commit1fd266f1df3466b293c974072664403373c2e7da (patch)
tree73c2130e2e6f3b93b7ddc6c94cc26cd5fc129f50 /sys/ia64
parent42b1fbecf5809f30ace24d2135923ba24afa3698 (diff)
downloadFreeBSD-src-1fd266f1df3466b293c974072664403373c2e7da.zip
FreeBSD-src-1fd266f1df3466b293c974072664403373c2e7da.tar.gz
Call ast() only when we're handling a user trap.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/interrupt.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/ia64/ia64/interrupt.c b/sys/ia64/ia64/interrupt.c
index 62786f3..9559bcb 100644
--- a/sys/ia64/ia64/interrupt.c
+++ b/sys/ia64/ia64/interrupt.c
@@ -123,7 +123,8 @@ interrupt(u_int64_t vector, struct trapframe *framep)
critical_exit();
#ifdef SMP
} else if (vector == mp_ipi_vector[IPI_AST]) {
- ast(framep);
+ if ((framep->tf_cr_ipsr & IA64_PSR_CPL) == IA64_PSR_CPL_USER)
+ ast(framep);
} else if (vector == mp_ipi_vector[IPI_RENDEZVOUS]) {
smp_rendezvous_action();
} else if (vector == mp_ipi_vector[IPI_STOP]) {
OpenPOWER on IntegriCloud