diff options
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/interrupt.c | 6 | ||||
-rw-r--r-- | sys/ia64/ia64/machdep.c | 2 | ||||
-rw-r--r-- | sys/ia64/ia64/mp_machdep.c | 4 | ||||
-rw-r--r-- | sys/ia64/ia64/procfs_machdep.c | 22 | ||||
-rw-r--r-- | sys/ia64/ia64/trap.c | 76 | ||||
-rw-r--r-- | sys/ia64/ia64/vm_machdep.c | 4 | ||||
-rw-r--r-- | sys/ia64/include/cpu.h | 4 | ||||
-rw-r--r-- | sys/ia64/include/mutex.h | 20 |
8 files changed, 63 insertions, 75 deletions
diff --git a/sys/ia64/ia64/interrupt.c b/sys/ia64/ia64/interrupt.c index fc2f84a..961d9c2 100644 --- a/sys/ia64/ia64/interrupt.c +++ b/sys/ia64/ia64/interrupt.c @@ -86,7 +86,7 @@ interrupt(u_int64_t vector, struct trapframe *framep) case 240: /* clock interrupt */ CTR0(KTR_INTR, "clock interrupt"); - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); cnt.v_intr++; #ifdef EVCNT_COUNTERS clock_intr_evcnt.ev_count++; @@ -98,11 +98,11 @@ interrupt(u_int64_t vector, struct trapframe *framep) /* divide hz (1024) by 8 to get stathz (128) */ if((++schedclk2 & 0x7) == 0) statclock((struct clockframe *)framep); - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); break; default: - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); panic("unexpected interrupt: vec %ld\n", vector); /* NOTREACHED */ } diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index 62abd6a..e702ddc 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -597,7 +597,7 @@ ia64_init() */ mtx_init(&Giant, "Giant", MTX_DEF | MTX_RECURSE); mtx_init(&sched_lock, "sched lock", MTX_SPIN | MTX_RECURSE); - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); #if 0 /* diff --git a/sys/ia64/ia64/mp_machdep.c b/sys/ia64/ia64/mp_machdep.c index 0451e05..1750251 100644 --- a/sys/ia64/ia64/mp_machdep.c +++ b/sys/ia64/ia64/mp_machdep.c @@ -628,7 +628,7 @@ smp_rendezvous(void (* setup_func)(void *), { /* obtain rendezvous lock */ - mtx_enter(&smp_rv_mtx, MTX_SPIN); + mtx_lock_spin(&smp_rv_mtx); /* set static function pointers */ smp_rv_setup_func = setup_func; @@ -645,7 +645,7 @@ smp_rendezvous(void (* setup_func)(void *), smp_rendezvous_action(); /* release lock */ - mtx_exit(&smp_rv_mtx, MTX_SPIN); + mtx_unlock_spin(&smp_rv_mtx); } /* diff --git a/sys/ia64/ia64/procfs_machdep.c b/sys/ia64/ia64/procfs_machdep.c index 3f6f524..81b6e32 100644 --- a/sys/ia64/ia64/procfs_machdep.c +++ b/sys/ia64/ia64/procfs_machdep.c @@ -86,12 +86,12 @@ procfs_read_regs(p, regs) struct reg *regs; { - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); if ((p->p_sflag & PS_INMEM) == 0) { - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (EIO); } - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (fill_regs(p, regs)); } @@ -101,12 +101,12 @@ procfs_write_regs(p, regs) struct reg *regs; { - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); if ((p->p_sflag & PS_INMEM) == 0) { - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (EIO); } - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (set_regs(p, regs)); } @@ -121,9 +121,9 @@ procfs_read_fpregs(p, fpregs) struct fpreg *fpregs; { - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); if ((p->p_sflag & PS_INMEM) == 0) { - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (EIO); } return (fill_fpregs(p, fpregs)); @@ -135,12 +135,12 @@ procfs_write_fpregs(p, fpregs) struct fpreg *fpregs; { - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); if ((p->p_sflag & PS_INMEM) == 0) { - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (EIO); } - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); return (set_fpregs(p, fpregs)); } diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index fe14545..b127fd7 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -90,10 +90,10 @@ userret(register struct proc *p, struct trapframe *frame, u_quad_t oticks) /* take pending signals */ while ((sig = CURSIG(p)) != 0) { if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); postsig(sig); } - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); p->p_priority = p->p_usrpri; if (want_resched) { /* @@ -109,30 +109,30 @@ userret(register struct proc *p, struct trapframe *frame, u_quad_t oticks) setrunqueue(p); p->p_stats->p_ru.ru_nivcsw++; mi_switch(); - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); PICKUP_GIANT(); splx(s); while ((sig = CURSIG(p)) != 0) { if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); postsig(sig); } - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); } /* * If profiling, charge recent system time to the trapped pc. */ if (p->p_sflag & PS_PROFIL) { - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock(&Giant); + mtx_lock_spin(&sched_lock); addupc_task(p, frame->tf_cr_iip, (int)(p->p_sticks - oticks) * psratio); } curpriority = p->p_priority; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); } static const char *ia64_vector_names[] = { @@ -249,9 +249,9 @@ trap(int vector, int imm, struct trapframe *framep) user = ((framep->tf_cr_ipsr & IA64_PSR_CPL) == IA64_PSR_CPL_USER); if (user) { - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); sticks = p->p_sticks; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); p->p_md.md_tf = framep; } else { sticks = 0; /* XXX bogus -Wuninitialized warning */ @@ -265,12 +265,12 @@ trap(int vector, int imm, struct trapframe *framep) * and per-process unaligned-access-handling flags). */ if (user) { - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); if ((i = unaligned_fixup(framep, p)) == 0) { - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); goto out; } - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); ucode = framep->tf_cr_ifa; /* VA */ break; } @@ -330,7 +330,7 @@ trap(int vector, int imm, struct trapframe *framep) vm_prot_t ftype = 0; int rv; - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); /* * If it was caused by fuswintr or suswintr, * just punt. Note that we check the faulting @@ -345,7 +345,7 @@ trap(int vector, int imm, struct trapframe *framep) p->p_addr->u_pcb.pcb_accessaddr == va) { framep->tf_cr_iip = p->p_addr->u_pcb.pcb_onfault; p->p_addr->u_pcb.pcb_onfault = 0; - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); goto out; } @@ -455,11 +455,11 @@ trap(int vector, int imm, struct trapframe *framep) rv = KERN_INVALID_ADDRESS; } if (rv == KERN_SUCCESS) { - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); goto out; } - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); ucode = va; i = SIGSEGV; #ifdef DEBUG @@ -480,7 +480,7 @@ out: if (user) { userret(p, framep, sticks); if (mtx_owned(&Giant)) - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); } return; @@ -521,11 +521,11 @@ syscall(int code, u_int64_t *args, struct trapframe *framep) cnt.v_syscall++; p = curproc; p->p_md.md_tf = framep; - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); sticks = p->p_sticks; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); /* * Skip past the break instruction. Remember old address in case * we have to restart. @@ -618,7 +618,7 @@ syscall(int code, u_int64_t *args, struct trapframe *framep) * is not the case, this code will need to be revisited. */ STOPEVENT(p, S_SCX, code); - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); #ifdef WITNESS if (witness_list(p)) { @@ -646,13 +646,13 @@ child_return(p) #ifdef KTRACE if (KTRPOINT(p, KTR_SYSRET)) { if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); ktrsysret(p->p_tracep, SYS_fork, 0, 0); } #endif if (mtx_owned(&Giant)) - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); } /* @@ -667,9 +667,9 @@ ast(framep) u_quad_t sticks; p = curproc; - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); sticks = p->p_sticks; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); p->p_md.md_tf = framep; if ((framep->tf_cr_ipsr & IA64_PSR_CPL) != IA64_PSR_CPL_USER) @@ -678,36 +678,36 @@ ast(framep) cnt.v_soft++; PCPU_SET(astpending, 0); - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); if (p->p_sflag & PS_OWEUPC) { p->p_sflag &= ~PS_OWEUPC; - mtx_exit(&sched_lock, MTX_SPIN); - mtx_enter(&Giant, MTX_DEF); - mtx_enter(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); + mtx_lock(&Giant); + mtx_lock_spin(&sched_lock); addupc_task(p, p->p_stats->p_prof.pr_addr, p->p_stats->p_prof.pr_ticks); } if (p->p_sflag & PS_ALRMPEND) { p->p_sflag &= ~PS_ALRMPEND; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); psignal(p, SIGVTALRM); - mtx_enter(&sched_lock, MTX_SPIN); + mtx_lock_spin(&sched_lock); } if (p->p_sflag & PS_PROFPEND) { p->p_sflag &= ~PS_PROFPEND; - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); if (!mtx_owned(&Giant)) - mtx_enter(&Giant, MTX_DEF); + mtx_lock(&Giant); psignal(p, SIGPROF); } else - mtx_exit(&sched_lock, MTX_SPIN); + mtx_unlock_spin(&sched_lock); userret(p, framep, sticks); if (mtx_owned(&Giant)) - mtx_exit(&Giant, MTX_DEF); + mtx_unlock(&Giant); } extern int ia64_unaligned_print, ia64_unaligned_fix; diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c index be2cb4d..9b8042a 100644 --- a/sys/ia64/ia64/vm_machdep.c +++ b/sys/ia64/ia64/vm_machdep.c @@ -303,8 +303,8 @@ cpu_exit(p) ia64_fpstate_drop(p); (void) splhigh(); - mtx_enter(&sched_lock, MTX_SPIN); - mtx_exit(&Giant, MTX_DEF | MTX_NOSWITCH); + mtx_lock_spin(&sched_lock); + mtx_unlock_flags(&Giant, MTX_NOSWITCH); mtx_assert(&Giant, MA_NOTOWNED); /* diff --git a/sys/ia64/include/cpu.h b/sys/ia64/include/cpu.h index 8a883bf..2574266 100644 --- a/sys/ia64/include/cpu.h +++ b/sys/ia64/include/cpu.h @@ -83,10 +83,10 @@ struct clockframe { * through trap, marking the proc as needing a profiling tick. */ #define need_proftick(p) do { \ - mtx_enter(&sched_lock, MTX_SPIN); \ + mtx_lock_spin(&sched_lock); \ (p)->p_sflag |= PS_OWEUPC; \ aston(); \ - mtx_exit(&sched_lock, MTX_SPIN); \ + mtx_unlock_spin(&sched_lock); \ } while (0) /* diff --git a/sys/ia64/include/mutex.h b/sys/ia64/include/mutex.h index 56e1f2e..0e0173c 100644 --- a/sys/ia64/include/mutex.h +++ b/sys/ia64/include/mutex.h @@ -42,22 +42,10 @@ * Debugging */ #ifdef MUTEX_DEBUG - -#ifdef _KERN_MUTEX_C_ -char STR_IEN[] = "psr.i"; -char STR_IDIS[] = "!psr.i"; -char STR_SIEN[] = "mpp->mtx_saveintr & IA64_PSR_I"; -#else /* _KERN_MUTEX_C_ */ -extern char STR_IEN[]; -extern char STR_IDIS[]; -extern char STR_SIEN[]; -#endif /* _KERN_MUTEX_C_ */ - -#endif /* MUTEX_DEBUG */ - -#define ASS_IEN MPASS2((save_intr() & IA64_PSR_I), STR_IEN) -#define ASS_IDIS MPASS2(!(save_intr() & IA64_PSR_I), STR_IDIS) -#define ASS_SIEN(mpp) MPASS2(((mpp)->mtx_saveintr & IA64_PSR_I), STR_SIEN) +#define ASS_IEN MPASS2((save_intr() & IA64_PSR_I), "psr.i") +#define ASS_IDIS MPASS2(!(save_intr() & IA64_PSR_I), "!psr.i") +#define ASS_SIEN(mpp) MPASS2(((mpp)->mtx_saveintr & IA64_PSR_I), \ + "mpp->mtx_saveintr & IA64_PSR_I") #define mtx_legal2block() (save_intr() & IA64_PSR_I) |