summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-07-02 23:23:18 +0000
committermarcel <marcel@FreeBSD.org>2014-07-02 23:23:18 +0000
commit7ee78fc350679097fa183da0778edc17af1b7075 (patch)
treeb9bf2cdf259d0ca80b1f7efedd1789b69275ad86 /sys/ia64
parent69fcf37dcff34e2d7a0ae33364c143f015d8e745 (diff)
downloadFreeBSD-src-7ee78fc350679097fa183da0778edc17af1b7075.zip
FreeBSD-src-7ee78fc350679097fa183da0778edc17af1b7075.tar.gz
MFC r263248 & r263257: In intr_event_handle() we already save and set
td_intr_frame, so don't do it also in ia64_handle_intr().
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/clock.c7
-rw-r--r--sys/ia64/ia64/interrupt.c6
-rw-r--r--sys/ia64/ia64/mp_machdep.c4
3 files changed, 10 insertions, 7 deletions
diff --git a/sys/ia64/ia64/clock.c b/sys/ia64/ia64/clock.c
index 37a99a1..68dc29b 100644
--- a/sys/ia64/ia64/clock.c
+++ b/sys/ia64/ia64/clock.c
@@ -76,6 +76,7 @@ static u_int
ia64_ih_clock(struct thread *td, u_int xiv, struct trapframe *tf)
{
struct eventtimer *et;
+ struct trapframe *stf;
uint64_t itc, load;
uint32_t mode;
@@ -96,8 +97,12 @@ ia64_ih_clock(struct thread *td, u_int xiv, struct trapframe *tf)
ia64_srlz_d();
et = &ia64_clock_et;
- if (et->et_active)
+ if (et->et_active) {
+ stf = td->td_intr_frame;
+ td->td_intr_frame = tf;
et->et_event_cb(et, et->et_arg);
+ td->td_intr_frame = stf;
+ }
return (1);
}
diff --git a/sys/ia64/ia64/interrupt.c b/sys/ia64/ia64/interrupt.c
index c2372b2..9d66f4e 100644
--- a/sys/ia64/ia64/interrupt.c
+++ b/sys/ia64/ia64/interrupt.c
@@ -301,7 +301,6 @@ void
ia64_handle_intr(struct trapframe *tf)
{
struct thread *td;
- struct trapframe *stf;
u_int xiv;
td = curthread;
@@ -316,9 +315,6 @@ ia64_handle_intr(struct trapframe *tf)
}
critical_enter();
- stf = td->td_intr_frame;
- td->td_intr_frame = tf;
-
do {
CTR2(KTR_INTR, "INTR: ITC=%u, XIV=%u",
(u_int)tf->tf_special.ifa, xiv);
@@ -329,8 +325,6 @@ ia64_handle_intr(struct trapframe *tf)
xiv = ia64_get_ivr();
ia64_srlz_d();
} while (xiv != 15);
-
- td->td_intr_frame = stf;
critical_exit();
out:
diff --git a/sys/ia64/ia64/mp_machdep.c b/sys/ia64/ia64/mp_machdep.c
index 0caa41c..b6451ef 100644
--- a/sys/ia64/ia64/mp_machdep.c
+++ b/sys/ia64/ia64/mp_machdep.c
@@ -113,10 +113,14 @@ ia64_ih_ast(struct thread *td, u_int xiv, struct trapframe *tf)
static u_int
ia64_ih_hardclock(struct thread *td, u_int xiv, struct trapframe *tf)
{
+ struct trapframe *stf;
PCPU_INC(md.stats.pcs_nhardclocks);
CTR1(KTR_SMP, "IPI_HARDCLOCK, cpuid=%d", PCPU_GET(cpuid));
+ stf = td->td_intr_frame;
+ td->td_intr_frame = tf;
hardclockintr();
+ td->td_intr_frame = stf;
return (0);
}
OpenPOWER on IntegriCloud