In intr_event_handle() we already save and set td_intr_frame, so

don't do it also in ia64_handle_intr(). With ia64_handle_intr()
not saving and setting td_intr_frame, make sure to do it for
clock interrupts in ia64_ih_clock().
This commit is contained in:
Marcel Moolenaar 2014-03-16 20:21:40 +00:00
parent 6a5b1a3544
commit f32ac833eb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=263248
2 changed files with 6 additions and 7 deletions

View File

@ -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);
}

View File

@ -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: