mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-24 11:29:10 +00:00
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:
parent
6a5b1a3544
commit
f32ac833eb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=263248
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user