diff --git a/sys/alpha/alpha/alpha-gdbstub.c b/sys/alpha/alpha/alpha-gdbstub.c index 3e480f717b3..02efd280701 100644 --- a/sys/alpha/alpha/alpha-gdbstub.c +++ b/sys/alpha/alpha/alpha-gdbstub.c @@ -99,6 +99,7 @@ #include #include +#include #include #include @@ -625,7 +626,7 @@ gdb_handle_exception (db_regs_t *raw_regs, int type, int code) while (1) { if (gdbdev == NODEV) /* somebody's removed it */ - return 1; /* get out of here */ + return; /* get out of here */ remcomOutBuffer[0] = 0; getpacket (remcomInBuffer); @@ -644,7 +645,7 @@ gdb_handle_exception (db_regs_t *raw_regs, int type, int code) return; case 'k': - prom_halt(); + prom_halt(1); /*NOTREACHED*/ break; diff --git a/sys/alpha/alpha/autoconf.c b/sys/alpha/alpha/autoconf.c index 42696dfed2d..648d2a7a290 100644 --- a/sys/alpha/alpha/autoconf.c +++ b/sys/alpha/alpha/autoconf.c @@ -210,7 +210,6 @@ configure(void *dummy) void cpu_rootconf() { - int order = 0; #if defined(NFS) && defined(NFS_ROOT) #if !defined(BOOTP_NFSROOT) if (nfs_diskless_valid) diff --git a/sys/alpha/alpha/clock.c b/sys/alpha/alpha/clock.c index b74dc5bb77c..d986ea02425 100644 --- a/sys/alpha/alpha/clock.c +++ b/sys/alpha/alpha/clock.c @@ -267,10 +267,9 @@ static int getit(void) { int high, low; - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0 | TIMER_LATCH); @@ -278,7 +277,7 @@ getit(void) low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - restore_intr(s); + critical_exit(s); return ((high << 8) | low); } @@ -369,10 +368,9 @@ static void set_timer_freq(u_int freq, int intr_freq) { int new_timer0_max_count; - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); timer_freq = freq; new_timer0_max_count = TIMER_DIV(intr_freq); if (new_timer0_max_count != timer0_max_count) { @@ -381,15 +379,16 @@ set_timer_freq(u_int freq, int intr_freq) outb(TIMER_CNTR0, timer0_max_count & 0xff); outb(TIMER_CNTR0, timer0_max_count >> 8); } - restore_intr(s); + critical_exit(s); } static void handleclock(void* arg) { if (timecounter->tc_get_timecount == i8254_get_timecount) { - int s = save_intr(); - disable_intr(); + critical_t s; + + s = critical_enter(); if (i8254_ticked) i8254_ticked = 0; else { @@ -397,7 +396,7 @@ handleclock(void* arg) i8254_lastcount = 0; } clkintr_pending = 0; - restore_intr(s); + critical_exit(s); } hardclock(arg); @@ -567,10 +566,9 @@ i8254_get_timecount(struct timecounter *tc) { u_int count; u_int high, low; - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0 | TIMER_LATCH); @@ -588,7 +586,7 @@ i8254_get_timecount(struct timecounter *tc) i8254_lastcount = count; count += i8254_offset; - restore_intr(s); + critical_exit(s); return (count); } @@ -640,13 +638,14 @@ sysbeepstop(void *chan) int sysbeep(int pitch, int period) { - int s = save_intr(); - disable_intr(); + critical_t s; + + s = critical_enter(); if (acquire_timer2(TIMER_SQWAVE|TIMER_16BIT)) if (!beeping) { /* Something else owns it. */ - restore_intr(s); + critical_exit(s); return (-1); /* XXX Should be EBUSY, but nobody cares anyway. */ } @@ -660,7 +659,7 @@ sysbeep(int pitch, int period) beeping = period; timeout(sysbeepstop, (void *)NULL, period); } - restore_intr(s); + critical_exit(s); return (0); } diff --git a/sys/alpha/alpha/db_interface.c b/sys/alpha/alpha/db_interface.c index f04cbe1898d..304e35344d8 100644 --- a/sys/alpha/alpha/db_interface.c +++ b/sys/alpha/alpha/db_interface.c @@ -154,7 +154,7 @@ kdb_trap(a0, a1, a2, entry, regs) db_regs_t *regs; { int ddb_mode = !(boothowto & RB_GDB); - int s; + critical_t s; /* * Don't bother checking for usermode, since a benign entry @@ -191,8 +191,7 @@ kdb_trap(a0, a1, a2, entry, regs) ddb_regs = *regs; - s = save_intr(); - disable_intr(); + s = critical_enter(); #if 0 db_printf("stopping %x\n", PCPU_GET(other_cpus)); @@ -215,7 +214,7 @@ kdb_trap(a0, a1, a2, entry, regs) restart_cpus(stopped_cpus); #endif - restore_intr(s); + critical_exit(s); *regs = ddb_regs; @@ -269,8 +268,12 @@ db_write_bytes(addr, size, data) void Debugger(const char* msg) { + u_int saveintr; + printf("%s\n", msg); + saveintr = alpha_pal_swpipl(ALPHA_PSL_IPL_HIGH); __asm("call_pal 0x81"); /* XXX bugchk */ + alpha_pal_swpipl(saveintr); } /* diff --git a/sys/alpha/alpha/genassym.c b/sys/alpha/alpha/genassym.c index e649ad2885e..dc301eeff60 100644 --- a/sys/alpha/alpha/genassym.c +++ b/sys/alpha/alpha/genassym.c @@ -76,7 +76,7 @@ ASSYM(GD_IDLEPCBPHYS, offsetof(struct globaldata, gd_idlepcbphys)); ASSYM(MTX_LOCK, offsetof(struct mtx, mtx_lock)); ASSYM(MTX_RECURSE, offsetof(struct mtx, mtx_recurse)); -ASSYM(MTX_SAVEINTR, offsetof(struct mtx, mtx_saveintr)); +ASSYM(MTX_SAVECRIT, offsetof(struct mtx, mtx_savecrit)); ASSYM(MTX_UNOWNED, MTX_UNOWNED); ASSYM(P_ADDR, offsetof(struct proc, p_addr)); diff --git a/sys/alpha/alpha/interrupt.c b/sys/alpha/alpha/interrupt.c index e33f9d54f92..c4b60b73509 100644 --- a/sys/alpha/alpha/interrupt.c +++ b/sys/alpha/alpha/interrupt.c @@ -116,7 +116,7 @@ interrupt(a0, a1, a2, framep) #endif case ALPHA_INTR_CLOCK: /* clock interrupt */ - CTR0(KTR_INTR, "clock interrupt"); + /* CTR0(KTR_INTR, "clock interrupt"); */ if (PCPU_GET(cpuid) != hwrpb->rpb_primary_cpu_id) { CTR0(KTR_INTR, "ignoring clock on secondary"); atomic_subtract_int(&p->p_intr_nesting_level, 1); diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index ad8d116b981..20c529ace9a 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -2100,14 +2100,13 @@ alpha_fpstate_check(struct proc *p) * For SMP, we should check the fpcurproc of each cpu. */ #ifndef SMP - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); if (p->p_addr->u_pcb.pcb_hw.apcb_flags & ALPHA_PCB_FLAGS_FEN) if (p != PCPU_GET(fpcurproc)) panic("alpha_check_fpcurproc: bogus"); - restore_intr(s); + critical_exit(s); #endif } @@ -2127,10 +2126,9 @@ alpha_fpstate_check(struct proc *p) void alpha_fpstate_save(struct proc *p, int write) { - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); if (p == PCPU_GET(fpcurproc)) { /* * If curproc != fpcurproc, then we need to enable FEN @@ -2165,7 +2163,7 @@ alpha_fpstate_save(struct proc *p, int write) alpha_pal_wrfen(0); } } - restore_intr(s); + critical_exit(s); } /* @@ -2176,10 +2174,9 @@ alpha_fpstate_save(struct proc *p, int write) void alpha_fpstate_drop(struct proc *p) { - int s; + critical_t s; - s = save_intr(); - disable_intr(); + s = critical_enter(); if (p == PCPU_GET(fpcurproc)) { if (p == curproc) { /* @@ -2195,7 +2192,7 @@ alpha_fpstate_drop(struct proc *p) } PCPU_SET(fpcurproc, NULL); } - restore_intr(s); + critical_exit(s); } /* @@ -2205,13 +2202,12 @@ alpha_fpstate_drop(struct proc *p) void alpha_fpstate_switch(struct proc *p) { - int s; + critical_t s; /* * Enable FEN so that we can access the fp registers. */ - s = save_intr(); - disable_intr(); + s = critical_enter(); alpha_pal_wrfen(1); if (PCPU_GET(fpcurproc)) { /* @@ -2238,7 +2234,7 @@ alpha_fpstate_switch(struct proc *p) } p->p_md.md_flags |= MDP_FPUSED; - restore_intr(s); + critical_exit(s); } /* diff --git a/sys/alpha/alpha/prom.c b/sys/alpha/alpha/prom.c index 2ddf62dfdf0..48ea93f408b 100644 --- a/sys/alpha/alpha/prom.c +++ b/sys/alpha/alpha/prom.c @@ -113,8 +113,8 @@ init_bootstrap_console() promcnattach(alpha_console); } -static int enter_prom __P((void)); -static void leave_prom __P((int)); +static critical_t enter_prom __P((void)); +static void leave_prom __P((critical_t)); /* @@ -134,16 +134,16 @@ promcnputc(dev, c) { prom_return_t ret; unsigned char *to = (unsigned char *)0x20000000; - int s; + critical_t s; - s = enter_prom(); /* disable_intr() and map prom */ + s = enter_prom(); /* critical_enter() and map prom */ *to = c; do { ret.bits = prom_putstr(alpha_console, to, 1); } while ((ret.u.retval & 1) == 0); - leave_prom(s); /* unmap prom and restore_intr(s) */ + leave_prom(s); /* unmap prom and critical_exit(s) */ } /* @@ -188,12 +188,13 @@ promcncheckc(dev) return (-1); } -static int +static critical_t enter_prom() { pt_entry_t *lev1map; - int s = save_intr(); - disable_intr(); + critical_t s; + + s = critical_enter(); if (!prom_mapped) { #ifdef SIMOS @@ -219,8 +220,8 @@ enter_prom() } static void -leave_prom __P((s)) - int s; +leave_prom(s) + critical_t s; { pt_entry_t *lev1map; @@ -232,11 +233,11 @@ leave_prom __P((s)) lev1map[0] = saved_pte[0]; /* XXX */ prom_cache_sync(); /* XXX */ } - restore_intr(s); + critical_exit(s); } static void -prom_cache_sync __P((void)) +prom_cache_sync(void) { ALPHA_TBIA(); alpha_pal_imb(); @@ -272,7 +273,7 @@ prom_halt(halt) /* * Turn off interrupts, for sanity. */ - disable_intr(); + critical_enter(); /* * Set "boot request" part of the CPU state depending on what diff --git a/sys/powerpc/powerpc/genassym.c b/sys/powerpc/powerpc/genassym.c index e649ad2885e..dc301eeff60 100644 --- a/sys/powerpc/powerpc/genassym.c +++ b/sys/powerpc/powerpc/genassym.c @@ -76,7 +76,7 @@ ASSYM(GD_IDLEPCBPHYS, offsetof(struct globaldata, gd_idlepcbphys)); ASSYM(MTX_LOCK, offsetof(struct mtx, mtx_lock)); ASSYM(MTX_RECURSE, offsetof(struct mtx, mtx_recurse)); -ASSYM(MTX_SAVEINTR, offsetof(struct mtx, mtx_saveintr)); +ASSYM(MTX_SAVECRIT, offsetof(struct mtx, mtx_savecrit)); ASSYM(MTX_UNOWNED, MTX_UNOWNED); ASSYM(P_ADDR, offsetof(struct proc, p_addr));