Module Name: src Committed By: matt Date: Tue Feb 22 08:20:20 UTC 2011
Modified Files: src/sys/arch/emips/conf: files.emips src/sys/arch/emips/emips: autoconf.c bus_dma.c cpu.c interrupt.c machdep.c xilinx_ml40x.c xs_bee3.c src/sys/arch/emips/include: intr.h sysconf.h Log Message: Bring emips forward to the new mips world order. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/emips/conf/files.emips cvs rdiff -u -r1.2 -r1.3 src/sys/arch/emips/emips/autoconf.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/emips/emips/bus_dma.c \ src/sys/arch/emips/emips/cpu.c src/sys/arch/emips/emips/interrupt.c \ src/sys/arch/emips/emips/xilinx_ml40x.c \ src/sys/arch/emips/emips/xs_bee3.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/emips/emips/machdep.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/emips/include/intr.h \ src/sys/arch/emips/include/sysconf.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/emips/conf/files.emips diff -u src/sys/arch/emips/conf/files.emips:1.1 src/sys/arch/emips/conf/files.emips:1.2 --- src/sys/arch/emips/conf/files.emips:1.1 Wed Jan 26 01:18:50 2011 +++ src/sys/arch/emips/conf/files.emips Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -# $NetBSD: files.emips,v 1.1 2011/01/26 01:18:50 pooka Exp $ +# $NetBSD: files.emips,v 1.2 2011/02/22 08:20:20 matt Exp $ # eMIPS-specific configuration info # maxpartitions must be first item in files.${ARCH}. @@ -98,8 +98,6 @@ file common/bus_dma/bus_dmamem_common.c -file arch/mips/mips/softintr.c - # # Workstation console devices # Index: src/sys/arch/emips/emips/autoconf.c diff -u src/sys/arch/emips/emips/autoconf.c:1.2 src/sys/arch/emips/emips/autoconf.c:1.3 --- src/sys/arch/emips/emips/autoconf.c:1.2 Tue Feb 8 20:20:11 2011 +++ src/sys/arch/emips/emips/autoconf.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: autoconf.c,v 1.2 2011/02/08 20:20:11 rmind Exp $ */ +/* $NetBSD: autoconf.c,v 1.3 2011/02/22 08:20:20 matt Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.2 2011/02/08 20:20:11 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.3 2011/02/22 08:20:20 matt Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -74,7 +74,7 @@ (*platform.bus_reset)(); /* Configuration is finished, turn on interrupts. */ - _splnone(); /* enable all source forcing SOFT_INTs cleared */ + spl0(); /* enable all source forcing SOFT_INTs cleared */ } /* Index: src/sys/arch/emips/emips/bus_dma.c diff -u src/sys/arch/emips/emips/bus_dma.c:1.1 src/sys/arch/emips/emips/bus_dma.c:1.2 --- src/sys/arch/emips/emips/bus_dma.c:1.1 Wed Jan 26 01:18:50 2011 +++ src/sys/arch/emips/emips/bus_dma.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.1 2011/01/26 01:18:50 pooka Exp $ */ +/* $NetBSD: bus_dma.c,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.1 2011/01/26 01:18:50 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.2 2011/02/22 08:20:20 matt Exp $"); #include "opt_cputype.h" @@ -470,7 +470,7 @@ * NOTE: Even though this is `wbinv_all', since the cache is * write-though, it just invalidates it. */ - if (len >= mips_pdcache_size) { + if (len >= mips_cache_info.mci_pdcache_size) { mips_dcache_wbinv_all(); return; } @@ -658,12 +658,10 @@ bus_size_t boundary, bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags) { - extern paddr_t avail_start, avail_end; /* XXX */ - return (_bus_dmamem_alloc_range_common(t, size, alignment, boundary, segs, nsegs, rsegs, flags, - avail_start /*low*/, - avail_end - PAGE_SIZE /*high*/)); + mips_avail_start /*low*/, + mips_avail_end - PAGE_SIZE /*high*/)); } /* Index: src/sys/arch/emips/emips/cpu.c diff -u src/sys/arch/emips/emips/cpu.c:1.1 src/sys/arch/emips/emips/cpu.c:1.2 --- src/sys/arch/emips/emips/cpu.c:1.1 Wed Jan 26 01:18:50 2011 +++ src/sys/arch/emips/emips/cpu.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.1 2011/01/26 01:18:50 pooka Exp $ */ +/* $NetBSD: cpu.c,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -28,7 +28,9 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.1 2011/01/26 01:18:50 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.2 2011/02/22 08:20:20 matt Exp $"); + +#include "ioconf.h" #include <sys/param.h> #include <sys/device.h> @@ -38,18 +40,14 @@ #include <machine/autoconf.h> -static int cpumatch __P((struct device *, struct cfdata *, void *)); -static void cpuattach __P((struct device *, struct device *, void *)); +static int cpumatch(device_t, cfdata_t, void *); +static void cpuattach(device_t, device_t, void *); -CFATTACH_DECL(cpu, sizeof (struct device), +CFATTACH_DECL_NEW(cpu, 0, cpumatch, cpuattach, NULL, NULL); -extern struct cfdriver cpu_cd; static int -cpumatch(parent, cf, aux) - struct device *parent; - struct cfdata *cf; - void *aux; +cpumatch(device_t parent, cfdata_t cf, void *aux) { struct mainbus_attach_args *ma = aux; @@ -61,11 +59,9 @@ } static void -cpuattach(parent, dev, aux) - struct device *parent, *dev; - void *aux; +cpuattach(device_t parent, device_t self, void *aux) { printf(": "); - cpu_identify(); + cpu_identify(self); } Index: src/sys/arch/emips/emips/interrupt.c diff -u src/sys/arch/emips/emips/interrupt.c:1.1 src/sys/arch/emips/emips/interrupt.c:1.2 --- src/sys/arch/emips/emips/interrupt.c:1.1 Wed Jan 26 01:18:50 2011 +++ src/sys/arch/emips/emips/interrupt.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: interrupt.c,v 1.1 2011/01/26 01:18:50 pooka Exp $ */ +/* $NetBSD: interrupt.c,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.1 2011/01/26 01:18:50 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.2 2011/02/22 08:20:20 matt Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -41,6 +41,7 @@ #include <mips/psl.h> +#include <machine/locore.h> #include <machine/autoconf.h> #include <machine/sysconf.h> #include <machine/intr.h> @@ -55,8 +56,6 @@ struct evcnt emips_memerr_evcnt = EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "memerr", "intr"); -extern void MachFPInterrupt(unsigned, unsigned, unsigned, struct frame *); - static const char * const intrnames[MAX_DEV_NCOOKIES] = { "int-0", "int-1", "int-2", "int-3", "int-4", "int-5", "int-6", "int-7", "int-8", "int-9", @@ -73,29 +72,27 @@ int i; if (phase == 0) { - for (i = 0; i < MAX_DEV_NCOOKIES; i++) + for (i = 0; i < MAX_DEV_NCOOKIES; i++) { evcnt_attach_dynamic(&intrtab[i].ih_count, EVCNT_TYPE_INTR, NULL, "emips", intrnames[i]); + } return; } if (phase == 1) { /* I am trying to make this standard so its here. Bah. */ - struct mips1_tlb { - u_int32_t tlb_hi; - u_int32_t tlb_lo; - } tlb; - void mips1_TLBWrite(int, struct mips1_tlb *); + struct tlbmask tlb; /* This is ugly but efficient. Sigh. */ #define TheAic ((struct _Aic *)INTERRUPT_CONTROLLER_DEFAULT_ADDRESS) tlb.tlb_hi = INTERRUPT_CONTROLLER_DEFAULT_ADDRESS; - tlb.tlb_lo = INTERRUPT_CONTROLLER_DEFAULT_ADDRESS | 0xf02; - mips1_TLBWrite(4, &tlb); + tlb.tlb_lo0 = INTERRUPT_CONTROLLER_DEFAULT_ADDRESS | 0xf02; + tlb_write_indexed(4, &tlb); + tlb.tlb_hi = TIMER_DEFAULT_ADDRESS; - tlb.tlb_lo = TIMER_DEFAULT_ADDRESS | 0xf02; - mips1_TLBWrite(5, &tlb); + tlb.tlb_lo0 = TIMER_DEFAULT_ADDRESS | 0xf02; + tlb_write_indexed(5, &tlb); } } @@ -103,49 +100,29 @@ * emips uses one line for all I/O interrupts (0x8000). */ void -cpu_intr(uint32_t status, uint32_t cause, uint32_t pc, uint32_t ipending) +cpu_intr(int ppl, uint32_t status, vaddr_t pc) { + uint32_t ipending; + int ipl; curcpu()->ci_data.cpu_nintr++; - /* device interrupts */ - if (ipending & MIPS_INT_MASK_5) { - (*platform.iointr)(status, cause, pc, ipending); + while (ppl < (ipl = splintr(&ipending))) { + splx(ipl); + /* device interrupts */ + if (ipending & MIPS_INT_MASK_5) { + (*platform.iointr)(status, pc, ipending); + } + (void)splhigh(); } - -#ifdef notyet - ipending &= (MIPS_SOFT_INT_MASK_1|MIPS_SOFT_INT_MASK_0); - if (ipending == 0) - return; - - _clrsoftintr(ipending); - mips_softint_dispatch(ipending); -#endif -} - -/* Rightmost 1. BUGBUG optimize in assembly - */ -static int __inline Rightmost1(uint32_t Val); - -static int __inline Rightmost1(uint32_t Val) -{ - uint32_t Mask; - - Mask = Val & -Val; - return ((Mask & 0xFFFF0000)!=0) << 4 - | ((Mask & 0xFF00FF00)!=0) << 3 - | ((Mask & 0xF0F0F0F0)!=0) << 2 - | ((Mask & 0xCCCCCCCC)!=0) << 1 - | ((Mask & 0xAAAAAAAA)!=0); } /* * Interrupt dispatcher for standard AIC-style interrupt controller */ void -emips_aic_intr(unsigned status, unsigned cause, unsigned pc, unsigned ipending) +emips_aic_intr(uint32_t status, vaddr_t pc, uint32_t ipending) { - int index; struct clockframe cf; cf.pc = pc; @@ -155,15 +132,12 @@ while (ipending) { /* Take one (most likely, the only one) */ - index = Rightmost1(ipending); - ipending = ipending & ~(1 << index); + int index = ffs(ipending) - 1; + ipending &= ~(1 << index); intrtab[index].ih_count.ev_count++; (*intrtab[index].ih_func)(intrtab[index].ih_arg, &cf); } - - /* Not so sure about this. Why dont we just return and reload status? */ - _splset(MIPS_SR_INT_IE | (status & ~(cause & MIPS_HARD_INT_MASK))); } @@ -186,12 +160,3 @@ /* Third, enable and done. */ TheAic->IrqEnable = 1 << index; } - -const int *ipl2spl_table; - -ipl_cookie_t -makeiplcookie(ipl_t ipl) -{ - - return (ipl_cookie_t){._spl = ipl2spl_table[ipl]}; -} Index: src/sys/arch/emips/emips/xilinx_ml40x.c diff -u src/sys/arch/emips/emips/xilinx_ml40x.c:1.1 src/sys/arch/emips/emips/xilinx_ml40x.c:1.2 --- src/sys/arch/emips/emips/xilinx_ml40x.c:1.1 Wed Jan 26 01:18:51 2011 +++ src/sys/arch/emips/emips/xilinx_ml40x.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: xilinx_ml40x.c,v 1.1 2011/01/26 01:18:51 pooka Exp $ */ +/* $NetBSD: xilinx_ml40x.c,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,15 +31,20 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xilinx_ml40x.c,v 1.1 2011/01/26 01:18:51 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xilinx_ml40x.c,v 1.2 2011/02/22 08:20:20 matt Exp $"); + +#define __INTR_PRIVATE #include <sys/param.h> #include <sys/systm.h> #include <sys/device.h> +#include <uvm/uvm_extern.h> + #include <machine/cpu.h> #include <machine/intr.h> #include <machine/sysconf.h> +#include <machine/locore.h> #include <emips/emips/machdep.h> #include <emips/emips/cons.h> @@ -53,7 +58,7 @@ #if 0 #define NOINTS (MIPS_INT_MASK_5|MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) #else -#define NOINTS MIPS_SPLHIGH +#define NOINTS MIPS_INT_MASK #endif /* BUGBUG Rewrite this to go off to the interrupt controller masks */ @@ -66,13 +71,18 @@ splvec.splstatclock = MIPS_SPL_0_1_2_3; //0x3f00 #endif -static const int xilinx_ml40x_ipl2spl_table[] = { +static const struct ipl_sr_map xilinx_ml40x_ipl_sr_map = { + .sr_bits = { [IPL_NONE] = 0, - [IPL_SOFTCLOCK] = NOINTS, - [IPL_SOFTSERIAL] = NOINTS, + [IPL_SOFTCLOCK] = MIPS_SOFT_INT_MASK_0, + [IPL_SOFTBIO] = MIPS_SOFT_INT_MASK_0, + [IPL_SOFTNET] = MIPS_SOFT_INT_MASK, + [IPL_SOFTSERIAL] = MIPS_SOFT_INT_MASK, [IPL_VM] = NOINTS, [IPL_SCHED] = NOINTS, + [IPL_DDB] = NOINTS, [IPL_HIGH] = NOINTS, + }, }; void @@ -92,7 +102,7 @@ sprintf(cpu_model, "Xilinx ML%s (eMIPS)", (systype == XS_ML40x) ? "40x" : "50x"); - ipl2spl_table = xilinx_ml40x_ipl2spl_table; + ipl_sr_map = xilinx_ml40x_ipl_sr_map; } static void @@ -106,17 +116,12 @@ pmap_kenter_pa(USART_DEFAULT_ADDRESS, USART_DEFAULT_ADDRESS,VM_PROT_WRITE|VM_PROT_READ); #else - struct mips1_tlb { - u_int32_t tlb_hi; - u_int32_t tlb_lo; - } tlb; - void mips1_TLBWrite(int, struct mips1_tlb *); + struct tlbmask tlb; tlb.tlb_hi = USART_DEFAULT_ADDRESS; - tlb.tlb_lo = USART_DEFAULT_ADDRESS | 0xf02; - mips1_TLBWrite(3, &tlb); + tlb.tlb_lo0 = USART_DEFAULT_ADDRESS | 0xf02; + tlb_write_indexed(3, &tlb); #endif dz_ebus_cnsetup(USART_DEFAULT_ADDRESS); } - Index: src/sys/arch/emips/emips/xs_bee3.c diff -u src/sys/arch/emips/emips/xs_bee3.c:1.1 src/sys/arch/emips/emips/xs_bee3.c:1.2 --- src/sys/arch/emips/emips/xs_bee3.c:1.1 Wed Jan 26 01:18:51 2011 +++ src/sys/arch/emips/emips/xs_bee3.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: xs_bee3.c,v 1.1 2011/01/26 01:18:51 pooka Exp $ */ +/* $NetBSD: xs_bee3.c,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,15 +31,20 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xs_bee3.c,v 1.1 2011/01/26 01:18:51 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xs_bee3.c,v 1.2 2011/02/22 08:20:20 matt Exp $"); + +#define __INTR_PRIVATE #include <sys/param.h> #include <sys/systm.h> #include <sys/device.h> +#include <sys/cpu.h> +#include <sys/intr.h> + +#include <uvm/uvm_extern.h> -#include <machine/cpu.h> -#include <machine/intr.h> #include <machine/sysconf.h> +#include <machine/locore.h> #include <emips/emips/machdep.h> #include <emips/emips/cons.h> @@ -52,7 +57,7 @@ #if 0 #define NOINTS (MIPS_INT_MASK_5|MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) #else -#define NOINTS MIPS_SPLHIGH +#define NOINTS MIPS_INT_MASK #endif /* BUGBUG Rewrite this to go off to the interrupt controller masks */ @@ -65,13 +70,18 @@ splvec.splstatclock = MIPS_SPL_0_1_2_3; //0x3f00 #endif -static const int xs_bee3_ipl2spl_table[] = { +static const struct ipl_sr_map xs_bee3_ipl_sr_map = { + .sr_bits = { [IPL_NONE] = 0, - [IPL_SOFTCLOCK] = NOINTS, - [IPL_SOFTSERIAL] = NOINTS, + [IPL_SOFTCLOCK] = MIPS_SOFT_INT_MASK_0, + [IPL_SOFTBIO] = MIPS_SOFT_INT_MASK_0, + [IPL_SOFTNET] = MIPS_SOFT_INT_MASK, + [IPL_SOFTSERIAL] = MIPS_SOFT_INT_MASK, [IPL_VM] = NOINTS, [IPL_SCHED] = NOINTS, + [IPL_DDB] = NOINTS, [IPL_HIGH] = NOINTS, + }, }; void @@ -90,7 +100,7 @@ cpuspeed = 8; /* xxx */ sprintf(cpu_model, "BeSquare BEE3 (eMIPS)"); - ipl2spl_table = xs_bee3_ipl2spl_table; + ipl_sr_map = xs_bee3_ipl_sr_map; } static void @@ -105,15 +115,11 @@ pmap_kenter_pa(USART_DEFAULT_ADDRESS, USART_DEFAULT_ADDRESS,VM_PROT_WRITE|VM_PROT_READ); #else - struct mips1_tlb { - u_int32_t tlb_hi; - u_int32_t tlb_lo; - } tlb; - void mips1_TLBWrite(int, struct mips1_tlb *); + struct tlbmask tlb; tlb.tlb_hi = USART_DEFAULT_ADDRESS; - tlb.tlb_lo = USART_DEFAULT_ADDRESS | 0xf02; - mips1_TLBWrite(3, &tlb); + tlb.tlb_lo0 = USART_DEFAULT_ADDRESS | 0xf02; + tlb_write_indexed(3, &tlb); #endif dz_ebus_cnsetup(USART_DEFAULT_ADDRESS); Index: src/sys/arch/emips/emips/machdep.c diff -u src/sys/arch/emips/emips/machdep.c:1.3 src/sys/arch/emips/emips/machdep.c:1.4 --- src/sys/arch/emips/emips/machdep.c:1.3 Sun Feb 20 08:01:10 2011 +++ src/sys/arch/emips/emips/machdep.c Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.3 2011/02/20 08:01:10 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.4 2011/02/22 08:20:20 matt Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.3 2011/02/20 08:01:10 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.4 2011/02/22 08:20:20 matt Exp $"); #include "opt_ddb.h" @@ -110,28 +110,12 @@ int mem_cluster_cnt; phys_ram_seg_t mem_clusters[VM_PHYSSEG_MAX]; -/* - * During autoconfiguration or after a panic, a sleep will simply - * lower the priority briefly to allow interrupts, then return. - * The priority to be used (safepri) is machine-dependent, thus this - * value is initialized and maintained in the machine-dependent layers. - * This priority will typically be 0, or the lowest priority - * that is safe for use on the interrupt stack; it can be made - * higher to block network software interrupts after panics. - */ -/* - * safepri is a safe priority for sleep to set for a spin-wait - * during autoconfiguration or after a panic. - * Used as an argument to splx(). - */ -int safepri = MIPS3_PSL_LOWIPL; /* XXX */ - void mach_init (int, char *[], int, intptr_t, u_int, char *); /* XXX */ /* Motherboard or system-specific initialization vector */ static void unimpl_bus_reset(void); static void unimpl_cons_init(void); -static void unimpl_iointr(unsigned, unsigned, unsigned, unsigned); +static void unimpl_iointr(uint32_t, vaddr_t, uint32_t); static void unimpl_intr_establish(struct device *, void *, int, int (*)(void *, void *), void *); static int unimpl_memsize(void *); @@ -732,7 +716,7 @@ } static void -unimpl_iointr(u_int mask, u_int pc, u_int statusreg, u_int causereg) +unimpl_iointr(uint32_t status, vaddr_t pc, uint32_t ipending) { panic("sysconf.init didn't set intr"); Index: src/sys/arch/emips/include/intr.h diff -u src/sys/arch/emips/include/intr.h:1.1 src/sys/arch/emips/include/intr.h:1.2 --- src/sys/arch/emips/include/intr.h:1.1 Wed Jan 26 01:18:51 2011 +++ src/sys/arch/emips/include/intr.h Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.1 2011/01/26 01:18:51 pooka Exp $ */ +/* $NetBSD: intr.h,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /* * Copyright (c) 1998 Jonathan Stone. All rights reserved. @@ -36,63 +36,16 @@ #include <sys/evcnt.h> #include <sys/queue.h> -#define IPL_NONE 0 /* disable only this interrupt */ -#define IPL_SOFTCLOCK 1 /* clock software interrupts (SI 0) */ -#define IPL_SOFTBIO 1 /* generic software interrupts (SI 0) */ -#define IPL_SOFTNET 2 /* network software interrupts (SI 1) */ -#define IPL_SOFTSERIAL 2 /* serial software interrupts (SI 1) */ -#define IPL_VM 3 -#define IPL_SCHED 4 -#define IPL_HIGH 5 - -#define _IPL_N 6 - -#define _IPL_SI0_FIRST IPL_SOFTCLOCK -#define _IPL_SI0_LAST IPL_SOFTBIO - -#define _IPL_SI1_FIRST IPL_SOFTNET -#define _IPL_SI1_LAST IPL_SOFTSERIAL +#include <mips/intr.h> #ifdef _KERNEL #ifndef _LOCORE -#include <mips/cpuregs.h> -#include <mips/locore.h> - -#define spl0() (void)_spllower(0) -#define splx(s) (void)_splset(s) -#define splvm() splraiseipl(makeiplcookie(IPL_VM)) -#define splsched() splraiseipl(makeiplcookie(IPL_SCHED)) -#define splhigh() _splraise(MIPS_INT_MASK) - -#define _SPL_SOFT MIPS_SOFT_INT_MASK_0 -#define _SPL_SOFTCLOCK MIPS_SOFT_INT_MASK_0 -#define _SPL_SOFTNET (MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) -#define _SPL_SOFTSERIAL (MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) - -#define splsoftclock() _splraise(_SPL_SOFTCLOCK) -#define splsoftbio() _splraise(_SPL_SOFTBIO) -#define splsoftnet() _splraise(_SPL_SOFTNET) -#define splsoftserial() _splraise(_SPL_SOFTSERIAL) - -extern const int *ipl2spl_table; - -typedef int ipl_t; -typedef struct { - int _spl; -} ipl_cookie_t; - -ipl_cookie_t makeiplcookie(ipl_t); - -static inline int -splraiseipl(ipl_cookie_t icookie) -{ - - return _splraise(icookie._spl); -} - -/* Conventionals ... */ +extern struct evcnt emips_clock_evcnt; +extern struct evcnt emips_fpu_evcnt; +extern struct evcnt emips_memerr_evcnt; +#if 0 #define MIPS_SPLHIGH (MIPS_INT_MASK) #define MIPS_SPL0 (MIPS_INT_MASK_0|MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) #define MIPS_SPL1 (MIPS_INT_MASK_1|MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) @@ -101,6 +54,7 @@ #define MIPS_SPL_0_1_2 (MIPS_INT_MASK_2|MIPS_SPL_0_1) #define MIPS_SPL_0_1_3 (MIPS_INT_MASK_3|MIPS_SPL_0_1) #define MIPS_SPL_0_1_2_3 (MIPS_INT_MASK_3|MIPS_SPL_0_1_2) +#endif struct intrhand { int (*ih_func)(void *, void *); @@ -116,12 +70,6 @@ void *ih_arg; }; -#include <mips/softintr.h> - -extern struct evcnt emips_clock_evcnt; -extern struct evcnt emips_fpu_evcnt; -extern struct evcnt emips_memerr_evcnt; - void intr_init(int); #endif /* !_LOCORE */ #endif /* _KERNEL */ Index: src/sys/arch/emips/include/sysconf.h diff -u src/sys/arch/emips/include/sysconf.h:1.1 src/sys/arch/emips/include/sysconf.h:1.2 --- src/sys/arch/emips/include/sysconf.h:1.1 Wed Jan 26 01:18:52 2011 +++ src/sys/arch/emips/include/sysconf.h Tue Feb 22 08:20:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sysconf.h,v 1.1 2011/01/26 01:18:52 pooka Exp $ */ +/* $NetBSD: sysconf.h,v 1.2 2011/02/22 08:20:20 matt Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. @@ -63,7 +63,7 @@ */ void (*bus_reset) (void); void (*cons_init) (void); - void (*iointr) (unsigned, unsigned, unsigned, unsigned); + void (*iointr) (uint32_t, vaddr_t, uint32_t); void (*intr_establish) (struct device *, void *, int, int (*)(void *, void *), void *); int (*memsize) (void *); @@ -93,7 +93,7 @@ void noop(void); void emips_intr_establish(struct device *, void *, int, int (*)(void *, void *), void *); -void emips_aic_intr(unsigned, unsigned, unsigned, unsigned); +void emips_aic_intr(uint32_t, vaddr_t, uint32_t); #endif /* _KERNEL */ #endif /* !_EMIPS_SYSCONF_H_ */