Catch up to new MI astpending and need_resched handling.
This commit is contained in:
parent
9863ddda64
commit
de0e830e6d
@ -235,9 +235,6 @@ ENTRY(cpu_switch, 0)
|
|||||||
|
|
||||||
1:
|
1:
|
||||||
st8 [r14]=ret0 // set r13->gd_curproc
|
st8 [r14]=ret0 // set r13->gd_curproc
|
||||||
add r15=@gprel(want_resched),gp
|
|
||||||
;;
|
|
||||||
st4 [r15]=r0 // we've rescheduled
|
|
||||||
mov ar.k7=ret0
|
mov ar.k7=ret0
|
||||||
mov r4=ret0 // save from call
|
mov r4=ret0 // save from call
|
||||||
;;
|
;;
|
||||||
|
@ -70,8 +70,6 @@
|
|||||||
#include <ddb/ddb.h>
|
#include <ddb/ddb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u_int32_t want_resched;
|
|
||||||
|
|
||||||
static int unaligned_fixup(struct trapframe *framep, struct proc *p);
|
static int unaligned_fixup(struct trapframe *framep, struct proc *p);
|
||||||
|
|
||||||
#ifdef WITNESS
|
#ifdef WITNESS
|
||||||
@ -95,7 +93,7 @@ userret(register struct proc *p, struct trapframe *frame, u_quad_t oticks)
|
|||||||
}
|
}
|
||||||
mtx_lock_spin(&sched_lock);
|
mtx_lock_spin(&sched_lock);
|
||||||
p->p_pri.pri_level = p->p_pri.pri_user;
|
p->p_pri.pri_level = p->p_pri.pri_user;
|
||||||
if (want_resched) {
|
if (resched_wanted()) {
|
||||||
/*
|
/*
|
||||||
* Since we are curproc, a clock interrupt could
|
* Since we are curproc, a clock interrupt could
|
||||||
* change our priority without changing run queues
|
* change our priority without changing run queues
|
||||||
|
@ -69,14 +69,6 @@ struct clockframe {
|
|||||||
#define CLKF_PC(framep) ((framep)->cf_tf.tf_cr_iip)
|
#define CLKF_PC(framep) ((framep)->cf_tf.tf_cr_iip)
|
||||||
#define CLKF_INTR(framep) (curproc->p_intr_nesting_level >= 2)
|
#define CLKF_INTR(framep) (curproc->p_intr_nesting_level >= 2)
|
||||||
|
|
||||||
/*
|
|
||||||
* Preempt the current process if in interrupt from user mode,
|
|
||||||
* or after the current trap/syscall if in system mode.
|
|
||||||
*/
|
|
||||||
#define need_resched() do { want_resched = 1; aston(); } while (0)
|
|
||||||
|
|
||||||
#define resched_wanted() want_resched
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give a profiling tick to the current process when the user profiling
|
* Give a profiling tick to the current process when the user profiling
|
||||||
* buffer pages are invalid. On the hp300, request an ast to send us
|
* buffer pages are invalid. On the hp300, request an ast to send us
|
||||||
@ -89,18 +81,6 @@ struct clockframe {
|
|||||||
mtx_unlock_spin(&sched_lock); \
|
mtx_unlock_spin(&sched_lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/*
|
|
||||||
* Notify the current process (p) that it has a signal pending,
|
|
||||||
* process as soon as possible.
|
|
||||||
*/
|
|
||||||
#define signotify(p) aston()
|
|
||||||
|
|
||||||
#define aston() PCPU_SET(astpending, 1)
|
|
||||||
|
|
||||||
#ifdef _KERNEL
|
|
||||||
extern u_int32_t want_resched; /* resched() was called */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CTL_MACHDEP definitions.
|
* CTL_MACHDEP definitions.
|
||||||
|
Loading…
Reference in New Issue
Block a user