convert all mips cpu_intr() to have the standard (uint32_t, uint32_t, vaddr_t, uint32_t) signature.diff -r1.12 -r1.13 src/sys/arch/evbmips/evbmips/interrupt.c
(mrg)
--- src/sys/arch/evbmips/evbmips/interrupt.c 2009/12/14 00:46:02 1.12
+++ src/sys/arch/evbmips/evbmips/interrupt.c 2009/12/15 06:01:43 1.13
@@ -1,88 +1,88 @@ | @@ -1,88 +1,88 @@ | |||
1 | /* $NetBSD: interrupt.c,v 1.12 2009/12/14 00:46:02 matt Exp $ */ | 1 | /* $NetBSD: interrupt.c,v 1.13 2009/12/15 06:01:43 mrg Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Jason R. Thorpe. | 8 | * by Jason R. Thorpe. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright | |
16 | * notice, this list of conditions and the following disclaimer in the | 16 | * notice, this list of conditions and the following disclaimer in the | |
17 | * documentation and/or other materials provided with the distribution. | 17 | * documentation and/or other materials provided with the distribution. | |
18 | * | 18 | * | |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | 19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
29 | * POSSIBILITY OF SUCH DAMAGE. | 29 | * POSSIBILITY OF SUCH DAMAGE. | |
30 | */ | 30 | */ | |
31 | 31 | |||
32 | #include <sys/cdefs.h> | 32 | #include <sys/cdefs.h> | |
33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.12 2009/12/14 00:46:02 matt Exp $"); | 33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.13 2009/12/15 06:01:43 mrg Exp $"); | |
34 | 34 | |||
35 | #include <sys/param.h> | 35 | #include <sys/param.h> | |
36 | #include <sys/device.h> | 36 | #include <sys/device.h> | |
37 | #include <sys/cpu.h> | 37 | #include <sys/cpu.h> | |
38 | #include <sys/intr.h> | 38 | #include <sys/intr.h> | |
39 | 39 | |||
40 | #include <uvm/uvm_extern.h> | 40 | #include <uvm/uvm_extern.h> | |
41 | 41 | |||
42 | #include <mips/mips3_clock.h> | 42 | #include <mips/mips3_clock.h> | |
43 | #include <machine/locore.h> | 43 | #include <machine/locore.h> | |
44 | 44 | |||
45 | void | 45 | void | |
46 | intr_init(void) | 46 | intr_init(void) | |
47 | { | 47 | { | |
48 | 48 | |||
49 | evbmips_intr_init(); /* board specific stuff */ | 49 | evbmips_intr_init(); /* board specific stuff */ | |
50 | } | 50 | } | |
51 | 51 | |||
52 | void | 52 | void | |
53 | cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) | 53 | cpu_intr(uint32_t status, uint32_t cause, vaddr_t pc, uint32_t ipending) | |
54 | { | 54 | { | |
55 | struct clockframe cf; | 55 | struct clockframe cf; | |
56 | struct cpu_info *ci; | 56 | struct cpu_info *ci; | |
57 | 57 | |||
58 | ci = curcpu(); | 58 | ci = curcpu(); | |
59 | ci->ci_idepth++; | 59 | ci->ci_idepth++; | |
60 | uvmexp.intrs++; | 60 | uvmexp.intrs++; | |
61 | 61 | |||
62 | if (ipending & MIPS_INT_MASK_5) { | 62 | if (ipending & MIPS_INT_MASK_5) { | |
63 | /* call the common MIPS3 clock interrupt handler */ | 63 | /* call the common MIPS3 clock interrupt handler */ | |
64 | cf.pc = pc; | 64 | cf.pc = pc; | |
65 | cf.sr = status; | 65 | cf.sr = status; | |
66 | mips3_clockintr(&cf); | 66 | mips3_clockintr(&cf); | |
67 | 67 | |||
68 | /* Re-enable clock interrupts. */ | 68 | /* Re-enable clock interrupts. */ | |
69 | cause &= ~MIPS_INT_MASK_5; | 69 | cause &= ~MIPS_INT_MASK_5; | |
70 | _splset(MIPS_SR_INT_IE | | 70 | _splset(MIPS_SR_INT_IE | | |
71 | ((status & ~cause) & MIPS_HARD_INT_MASK)); | 71 | ((status & ~cause) & MIPS_HARD_INT_MASK)); | |
72 | } | 72 | } | |
73 | 73 | |||
74 | if (ipending & (MIPS_INT_MASK_0|MIPS_INT_MASK_1|MIPS_INT_MASK_2| | 74 | if (ipending & (MIPS_INT_MASK_0|MIPS_INT_MASK_1|MIPS_INT_MASK_2| | |
75 | MIPS_INT_MASK_3|MIPS_INT_MASK_4)) { | 75 | MIPS_INT_MASK_3|MIPS_INT_MASK_4)) { | |
76 | /* Process I/O and error interrupts. */ | 76 | /* Process I/O and error interrupts. */ | |
77 | evbmips_iointr(status, cause, pc, ipending); | 77 | evbmips_iointr(status, cause, pc, ipending); | |
78 | } | 78 | } | |
79 | ci->ci_idepth--; | 79 | ci->ci_idepth--; | |
80 | 80 | |||
81 | #ifdef __HAVE_FAST_SOFTINTS | 81 | #ifdef __HAVE_FAST_SOFTINTS | |
82 | ipending &= (MIPS_SOFT_INT_MASK_1|MIPS_SOFT_INT_MASK_0); | 82 | ipending &= (MIPS_SOFT_INT_MASK_1|MIPS_SOFT_INT_MASK_0); | |
83 | if (ipending == 0) | 83 | if (ipending == 0) | |
84 | return; | 84 | return; | |
85 | _clrsoftintr(ipending); | 85 | _clrsoftintr(ipending); | |
86 | softintr_dispatch(ipending); | 86 | softintr_dispatch(ipending); | |
87 | #endif | 87 | #endif | |
88 | } | 88 | } |
--- src/sys/arch/hpcmips/hpcmips/interrupt.c 2009/12/14 00:46:04 1.15
+++ src/sys/arch/hpcmips/hpcmips/interrupt.c 2009/12/15 06:01:43 1.16
@@ -1,72 +1,72 @@ | @@ -1,72 +1,72 @@ | |||
1 | /* $NetBSD: interrupt.c,v 1.15 2009/12/14 00:46:04 matt Exp $ */ | 1 | /* $NetBSD: interrupt.c,v 1.16 2009/12/15 06:01:43 mrg Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Jason R. Thorpe. | 8 | * by Jason R. Thorpe. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright | |
16 | * notice, this list of conditions and the following disclaimer in the | 16 | * notice, this list of conditions and the following disclaimer in the | |
17 | * documentation and/or other materials provided with the distribution. | 17 | * documentation and/or other materials provided with the distribution. | |
18 | * | 18 | * | |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | 19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
29 | * POSSIBILITY OF SUCH DAMAGE. | 29 | * POSSIBILITY OF SUCH DAMAGE. | |
30 | */ | 30 | */ | |
31 | 31 | |||
32 | #include <sys/cdefs.h> | 32 | #include <sys/cdefs.h> | |
33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.15 2009/12/14 00:46:04 matt Exp $"); | 33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.16 2009/12/15 06:01:43 mrg Exp $"); | |
34 | 34 | |||
35 | #include "opt_vr41xx.h" | 35 | #include "opt_vr41xx.h" | |
36 | #include "opt_tx39xx.h" | 36 | #include "opt_tx39xx.h" | |
37 | 37 | |||
38 | #include <sys/param.h> | 38 | #include <sys/param.h> | |
39 | #include <sys/malloc.h> | 39 | #include <sys/malloc.h> | |
40 | 40 | |||
41 | #include <uvm/uvm_extern.h> | 41 | #include <uvm/uvm_extern.h> | |
42 | 42 | |||
43 | #include <machine/sysconf.h> | 43 | #include <machine/sysconf.h> | |
44 | 44 | |||
45 | extern const u_int32_t __ipl_sr_bits_vr[]; | 45 | extern const u_int32_t __ipl_sr_bits_vr[]; | |
46 | extern const u_int32_t __ipl_sr_bits_tx[]; | 46 | extern const u_int32_t __ipl_sr_bits_tx[]; | |
47 | 47 | |||
48 | const u_int32_t *ipl_sr_bits; | 48 | const u_int32_t *ipl_sr_bits; | |
49 | 49 | |||
50 | void | 50 | void | |
51 | intr_init(void) | 51 | intr_init(void) | |
52 | { | 52 | { | |
53 | 53 | |||
54 | ipl_sr_bits = CPUISMIPS3 ? __ipl_sr_bits_vr : __ipl_sr_bits_tx; | 54 | ipl_sr_bits = CPUISMIPS3 ? __ipl_sr_bits_vr : __ipl_sr_bits_tx; | |
55 | } | 55 | } | |
56 | 56 | |||
57 | #if defined(VR41XX) && defined(TX39XX) | 57 | #if defined(VR41XX) && defined(TX39XX) | |
58 | /* | 58 | /* | |
59 | * cpu_intr: | 59 | * cpu_intr: | |
60 | * | 60 | * | |
61 | * handle MIPS CPU interrupt. | 61 | * handle MIPS CPU interrupt. | |
62 | * if VR41XX only or TX39XX only kernel, directly jump to each handler | 62 | * if VR41XX only or TX39XX only kernel, directly jump to each handler | |
63 | * (tx/tx39icu.c, vr/vr.c), don't use this dispather. | 63 | * (tx/tx39icu.c, vr/vr.c), don't use this dispather. | |
64 | * | 64 | * | |
65 | */ | 65 | */ | |
66 | void | 66 | void | |
67 | cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) | 67 | cpu_intr(uint32_t status, uint32_t cause, vaddr_t pc, uint32_t ipending) | |
68 | { | 68 | { | |
69 | 69 | |||
70 | (*platform.cpu_intr)(status, cause, pc, ipending); | 70 | (*platform.cpu_intr)(status, cause, pc, ipending); | |
71 | } | 71 | } | |
72 | #endif /* VR41XX && TX39XX */ | 72 | #endif /* VR41XX && TX39XX */ |
--- src/sys/arch/hpcmips/include/sysconf.h 2009/12/14 00:46:04 1.14
+++ src/sys/arch/hpcmips/include/sysconf.h 2009/12/15 06:01:43 1.15
@@ -1,84 +1,84 @@ | @@ -1,84 +1,84 @@ | |||
1 | /* $NetBSD: sysconf.h,v 1.14 2009/12/14 00:46:04 matt Exp $ */ | 1 | /* $NetBSD: sysconf.h,v 1.15 2009/12/15 06:01:43 mrg Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. | 4 | * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. | |
5 | * | 5 | * | |
6 | * Redistribution and use in source and binary forms, with or without | 6 | * Redistribution and use in source and binary forms, with or without | |
7 | * modification, are permitted provided that the following conditions | 7 | * modification, are permitted provided that the following conditions | |
8 | * are met: | 8 | * are met: | |
9 | * 1. Redistributions of source code must retain the above copyright | 9 | * 1. Redistributions of source code must retain the above copyright | |
10 | * notice, this list of conditions and the following disclaimer. | 10 | * notice, this list of conditions and the following disclaimer. | |
11 | * 2. Redistributions in binary form must reproduce the above copyright | 11 | * 2. Redistributions in binary form must reproduce the above copyright | |
12 | * notice, this list of conditions and the following disclaimer in the | 12 | * notice, this list of conditions and the following disclaimer in the | |
13 | * documentation and/or other materials provided with the distribution. | 13 | * documentation and/or other materials provided with the distribution. | |
14 | * 3. All advertising materials mentioning features or use of this software | 14 | * 3. All advertising materials mentioning features or use of this software | |
15 | * must display the following acknowledgement: | 15 | * must display the following acknowledgement: | |
16 | * This product includes software developed by Christopher G. Demetriou | 16 | * This product includes software developed by Christopher G. Demetriou | |
17 | * for the NetBSD Project. | 17 | * for the NetBSD Project. | |
18 | * 4. The name of the author may not be used to endorse or promote products | 18 | * 4. The name of the author may not be used to endorse or promote products | |
19 | * derived from this software without specific prior written permission | 19 | * derived from this software without specific prior written permission | |
20 | * | 20 | * | |
21 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 21 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
22 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 22 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
23 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 23 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
24 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 24 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
25 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 25 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
26 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 26 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
30 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 30 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
31 | */ | 31 | */ | |
32 | /* | 32 | /* | |
33 | * Additional reworking by Matthew Jacob for NASA/Ames Research Center. | 33 | * Additional reworking by Matthew Jacob for NASA/Ames Research Center. | |
34 | * Copyright (c) 1997 | 34 | * Copyright (c) 1997 | |
35 | */ | 35 | */ | |
36 | 36 | |||
37 | /* | 37 | /* | |
38 | * Copyright (c) 1998 Jonathan Stone. All rights reserved. | 38 | * Copyright (c) 1998 Jonathan Stone. All rights reserved. | |
39 | */ | 39 | */ | |
40 | 40 | |||
41 | /* | 41 | /* | |
42 | * Copyright (c) 1999 Shin Takemura. All rights reserved. | 42 | * Copyright (c) 1999 Shin Takemura. All rights reserved. | |
43 | */ | 43 | */ | |
44 | 44 | |||
45 | #ifndef _HPCMIPS_SYSCONF_H_ | 45 | #ifndef _HPCMIPS_SYSCONF_H_ | |
46 | #define _HPCMIPS_SYSCONF_H_ | 46 | #define _HPCMIPS_SYSCONF_H_ | |
47 | 47 | |||
48 | #ifdef _KERNEL | 48 | #ifdef _KERNEL | |
49 | /* | 49 | /* | |
50 | * Platform(VR/TX) Specific Information and Function Hooks. | 50 | * Platform(VR/TX) Specific Information and Function Hooks. | |
51 | */ | 51 | */ | |
52 | struct platform_clock; | 52 | struct platform_clock; | |
53 | struct clock_ymdhms; | 53 | struct clock_ymdhms; | |
54 | 54 | |||
55 | extern struct platform { | 55 | extern struct platform { | |
56 | /* | 56 | /* | |
57 | * cpu_intr - interrupt handler | 57 | * cpu_intr - interrupt handler | |
58 | * cpu_idle - CPU dependend idle routine. | 58 | * cpu_idle - CPU dependend idle routine. | |
59 | * cons_init - console initialization | 59 | * cons_init - console initialization | |
60 | * fb_init - frame buffer initialization | 60 | * fb_init - frame buffer initialization | |
61 | * mem_init - Count available memory | 61 | * mem_init - Count available memory | |
62 | * reboot - reboot or powerdown | 62 | * reboot - reboot or powerdown | |
63 | * clock - | 63 | * clock - | |
64 | */ | 64 | */ | |
65 | void (*cpu_intr)(u_int32_t, u_int32_t, vaddr_t, u_int32_t); | 65 | void (*cpu_intr)(uint32_t, uint32_t, vaddr_t, uint32_t); | |
66 | void (*cpu_idle)(void); | 66 | void (*cpu_idle)(void); | |
67 | void (*cons_init)(void); | 67 | void (*cons_init)(void); | |
68 | void (*fb_init)(void **); | 68 | void (*fb_init)(void **); | |
69 | void (*mem_init)(paddr_t); | 69 | void (*mem_init)(paddr_t); | |
70 | void (*reboot)(int, char *); | 70 | void (*reboot)(int, char *); | |
71 | struct platform_clock *clock; | 71 | struct platform_clock *clock; | |
72 | } platform; | 72 | } platform; | |
73 | 73 | |||
74 | struct platform_clock { | 74 | struct platform_clock { | |
75 | int hz; | 75 | int hz; | |
76 | void (*init)(struct device *); | 76 | void (*init)(struct device *); | |
77 | void *self; | 77 | void *self; | |
78 | int start; | 78 | int start; | |
79 | }; | 79 | }; | |
80 | 80 | |||
81 | void platform_clock_attach(void *, struct platform_clock *); | 81 | void platform_clock_attach(void *, struct platform_clock *); | |
82 | 82 | |||
83 | #endif /* _KERNEL */ | 83 | #endif /* _KERNEL */ | |
84 | #endif /* !_HPCMIPS_SYSCONF_H_ */ | 84 | #endif /* !_HPCMIPS_SYSCONF_H_ */ |
--- src/sys/arch/mipsco/mipsco/interrupt.c 2009/12/14 00:46:09 1.8
+++ src/sys/arch/mipsco/mipsco/interrupt.c 2009/12/15 06:01:43 1.9
@@ -1,80 +1,80 @@ | @@ -1,80 +1,80 @@ | |||
1 | /* $NetBSD: interrupt.c,v 1.8 2009/12/14 00:46:09 matt Exp $ */ | 1 | /* $NetBSD: interrupt.c,v 1.9 2009/12/15 06:01:43 mrg Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Wayne Knowles | 8 | * by Wayne Knowles | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright | |
16 | * notice, this list of conditions and the following disclaimer in the | 16 | * notice, this list of conditions and the following disclaimer in the | |
17 | * documentation and/or other materials provided with the distribution. | 17 | * documentation and/or other materials provided with the distribution. | |
18 | * | 18 | * | |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | 19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
29 | * POSSIBILITY OF SUCH DAMAGE. | 29 | * POSSIBILITY OF SUCH DAMAGE. | |
30 | */ | 30 | */ | |
31 | 31 | |||
32 | #include <sys/cdefs.h> | 32 | #include <sys/cdefs.h> | |
33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.8 2009/12/14 00:46:09 matt Exp $"); | 33 | __KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.9 2009/12/15 06:01:43 mrg Exp $"); | |
34 | 34 | |||
35 | #include <sys/param.h> | 35 | #include <sys/param.h> | |
36 | #include <sys/malloc.h> | 36 | #include <sys/malloc.h> | |
37 | #include <sys/intr.h> | 37 | #include <sys/intr.h> | |
38 | #include <sys/cpu.h> | 38 | #include <sys/cpu.h> | |
39 | 39 | |||
40 | #include <uvm/uvm_extern.h> | 40 | #include <uvm/uvm_extern.h> | |
41 | 41 | |||
42 | #include <machine/sysconf.h> | 42 | #include <machine/sysconf.h> | |
43 | 43 | |||
44 | void | 44 | void | |
45 | cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) | 45 | cpu_intr(uint32_t status, uint32_t cause, vaddr_t pc, uint32_t ipending) | |
46 | { | 46 | { | |
47 | struct cpu_info *ci; | 47 | struct cpu_info *ci; | |
48 | 48 | |||
49 | ci = curcpu(); | 49 | ci = curcpu(); | |
50 | uvmexp.intrs++; | 50 | uvmexp.intrs++; | |
51 | 51 | |||
52 | /* device interrupts */ | 52 | /* device interrupts */ | |
53 | ci->ci_idepth++; | 53 | ci->ci_idepth++; | |
54 | (*platform.iointr)(status, cause, pc, ipending); | 54 | (*platform.iointr)(status, cause, pc, ipending); | |
55 | ci->ci_idepth--; | 55 | ci->ci_idepth--; | |
56 | 56 | |||
57 | #ifdef __HAVE_FAST_SOFTINTS | 57 | #ifdef __HAVE_FAST_SOFTINTS | |
58 | /* software simulated interrupt */ | 58 | /* software simulated interrupt */ | |
59 | if ((ipending & MIPS_SOFT_INT_MASK_1) | 59 | if ((ipending & MIPS_SOFT_INT_MASK_1) | |
60 | || (ssir && (status & MIPS_SOFT_INT_MASK_1))) { | 60 | || (ssir && (status & MIPS_SOFT_INT_MASK_1))) { | |
61 | _clrsoftintr(MIPS_SOFT_INT_MASK_1); | 61 | _clrsoftintr(MIPS_SOFT_INT_MASK_1); | |
62 | softintr_dispatch(); | 62 | softintr_dispatch(); | |
63 | } | 63 | } | |
64 | #endif | 64 | #endif | |
65 | } | 65 | } | |
66 | 66 | |||
67 | static const int ipl_sr_bits[] = { | 67 | static const int ipl_sr_bits[] = { | |
68 | [IPL_NONE] = 0, | 68 | [IPL_NONE] = 0, | |
69 | [IPL_SOFTCLOCK] = MIPS_INT_MASK_SPL_SOFT0, | 69 | [IPL_SOFTCLOCK] = MIPS_INT_MASK_SPL_SOFT0, | |
70 | [IPL_SOFTNET] = MIPS_INT_MASK_SPL_SOFT1, | 70 | [IPL_SOFTNET] = MIPS_INT_MASK_SPL_SOFT1, | |
71 | [IPL_VM] = MIPS_INT_MASK_SPL2, | 71 | [IPL_VM] = MIPS_INT_MASK_SPL2, | |
72 | [IPL_SCHED] = MIPS_INT_MASK_SPL2, | 72 | [IPL_SCHED] = MIPS_INT_MASK_SPL2, | |
73 | }; | 73 | }; | |
74 | 74 | |||
75 | ipl_cookie_t | 75 | ipl_cookie_t | |
76 | makeiplcookie(ipl_t ipl) | 76 | makeiplcookie(ipl_t ipl) | |
77 | { | 77 | { | |
78 | 78 | |||
79 | return (ipl_cookie_t){._sr = ipl_sr_bits[ipl]}; | 79 | return (ipl_cookie_t){._sr = ipl_sr_bits[ipl]}; | |
80 | } | 80 | } |
--- src/sys/arch/sgimips/sgimips/cpu.c 2009/12/14 00:46:13 1.22
+++ src/sys/arch/sgimips/sgimips/cpu.c 2009/12/15 06:01:43 1.23
@@ -1,187 +1,187 @@ | @@ -1,187 +1,187 @@ | |||
1 | /* $NetBSD: cpu.c,v 1.22 2009/12/14 00:46:13 matt Exp $ */ | 1 | /* $NetBSD: cpu.c,v 1.23 2009/12/15 06:01:43 mrg Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 2000 Soren S. Jorvang | 4 | * Copyright (c) 2000 Soren S. Jorvang | |
5 | * Copyright (c) 2001 Jason R. Thorpe. | 5 | * Copyright (c) 2001 Jason R. Thorpe. | |
6 | * Copyright (c) 2004 Christopher SEKIYA | 6 | * Copyright (c) 2004 Christopher SEKIYA | |
7 | * All rights reserved. | 7 | * All rights reserved. | |
8 | * | 8 | * | |
9 | * Redistribution and use in source and binary forms, with or without | 9 | * Redistribution and use in source and binary forms, with or without | |
10 | * modification, are permitted provided that the following conditions | 10 | * modification, are permitted provided that the following conditions | |
11 | * are met: | 11 | * are met: | |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright | |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. | |
14 | * 2. Redistributions in binary form must reproduce the above copyright | 14 | * 2. Redistributions in binary form must reproduce the above copyright | |
15 | * notice, this list of conditions and the following disclaimer in the | 15 | * notice, this list of conditions and the following disclaimer in the | |
16 | * documentation and/or other materials provided with the distribution. | 16 | * documentation and/or other materials provided with the distribution. | |
17 | * 3. All advertising materials mentioning features or use of this software | 17 | * 3. All advertising materials mentioning features or use of this software | |
18 | * must display the following acknowledgement: | 18 | * must display the following acknowledgement: | |
19 | * This product includes software developed for the | 19 | * This product includes software developed for the | |
20 | * NetBSD Project. See http://www.NetBSD.org/ for | 20 | * NetBSD Project. See http://www.NetBSD.org/ for | |
21 | * information about NetBSD. | 21 | * information about NetBSD. | |
22 | * 4. The name of the author may not be used to endorse or promote products | 22 | * 4. The name of the author may not be used to endorse or promote products | |
23 | * derived from this software without specific prior written permission. | 23 | * derived from this software without specific prior written permission. | |
24 | * | 24 | * | |
25 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 25 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
26 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 26 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
27 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 27 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
28 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 28 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
29 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 29 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
30 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 30 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
31 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 31 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
32 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 32 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
33 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 33 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
34 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 34 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
35 | */ | 35 | */ | |
36 | 36 | |||
37 | #include <sys/cdefs.h> | 37 | #include <sys/cdefs.h> | |
38 | __KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.22 2009/12/14 00:46:13 matt Exp $"); | 38 | __KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.23 2009/12/15 06:01:43 mrg Exp $"); | |
39 | 39 | |||
40 | #include <sys/param.h> | 40 | #include <sys/param.h> | |
41 | #include <sys/device.h> | 41 | #include <sys/device.h> | |
42 | #include <sys/systm.h> | 42 | #include <sys/systm.h> | |
43 | #include <sys/cpu.h> | 43 | #include <sys/cpu.h> | |
44 | 44 | |||
45 | #include <uvm/uvm_extern.h> | 45 | #include <uvm/uvm_extern.h> | |
46 | 46 | |||
47 | #include <machine/locore.h> | 47 | #include <machine/locore.h> | |
48 | #include <machine/psl.h> | 48 | #include <machine/psl.h> | |
49 | #include <machine/autoconf.h> | 49 | #include <machine/autoconf.h> | |
50 | #include <machine/machtype.h> | 50 | #include <machine/machtype.h> | |
51 | #include <machine/sysconf.h> | 51 | #include <machine/sysconf.h> | |
52 | 52 | |||
53 | #include <dev/arcbios/arcbios.h> | 53 | #include <dev/arcbios/arcbios.h> | |
54 | #include <dev/arcbios/arcbiosvar.h> | 54 | #include <dev/arcbios/arcbiosvar.h> | |
55 | 55 | |||
56 | static int cpu_match(struct device *, struct cfdata *, void *); | 56 | static int cpu_match(struct device *, struct cfdata *, void *); | |
57 | static void cpu_attach(struct device *, struct device *, void *); | 57 | static void cpu_attach(struct device *, struct device *, void *); | |
58 | void cpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t); | 58 | void cpu_intr(uint32_t, uint32_t, vaddr_t, uint32_t); | |
59 | void *cpu_intr_establish(int, int, int (*func)(void *), void *); | 59 | void *cpu_intr_establish(int, int, int (*func)(void *), void *); | |
60 | void mips1_fpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t); | 60 | void mips1_fpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t); | |
61 | 61 | |||
62 | extern void MachFPInterrupt(u_int32_t, u_int32_t, u_int32_t, struct frame *); | 62 | extern void MachFPInterrupt(u_int32_t, u_int32_t, u_int32_t, struct frame *); | |
63 | 63 | |||
64 | static struct evcnt mips_int0_evcnt = | 64 | static struct evcnt mips_int0_evcnt = | |
65 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 0"); | 65 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 0"); | |
66 | 66 | |||
67 | static struct evcnt mips_int1_evcnt = | 67 | static struct evcnt mips_int1_evcnt = | |
68 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 1"); | 68 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 1"); | |
69 | 69 | |||
70 | static struct evcnt mips_int2_evcnt = | 70 | static struct evcnt mips_int2_evcnt = | |
71 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 2"); | 71 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 2"); | |
72 | 72 | |||
73 | static struct evcnt mips_int3_evcnt = | 73 | static struct evcnt mips_int3_evcnt = | |
74 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 3"); | 74 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 3"); | |
75 | 75 | |||
76 | static struct evcnt mips_int4_evcnt = | 76 | static struct evcnt mips_int4_evcnt = | |
77 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 4"); | 77 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 4"); | |
78 | 78 | |||
79 | static struct evcnt mips_int5_evcnt = | 79 | static struct evcnt mips_int5_evcnt = | |
80 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 5"); | 80 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "int 5"); | |
81 | 81 | |||
82 | static struct evcnt mips_spurint_evcnt = | 82 | static struct evcnt mips_spurint_evcnt = | |
83 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "spurious interrupts"); | 83 | EVCNT_INITIALIZER(EVCNT_TYPE_INTR, NULL, "mips", "spurious interrupts"); | |
84 | 84 | |||
85 | CFATTACH_DECL(cpu, sizeof(struct device), | 85 | CFATTACH_DECL(cpu, sizeof(struct device), | |
86 | cpu_match, cpu_attach, NULL, NULL); | 86 | cpu_match, cpu_attach, NULL, NULL); | |
87 | 87 | |||
88 | static int | 88 | static int | |
89 | cpu_match(struct device *parent, struct cfdata *match, void *aux) | 89 | cpu_match(struct device *parent, struct cfdata *match, void *aux) | |
90 | { | 90 | { | |
91 | return 1; | 91 | return 1; | |
92 | } | 92 | } | |
93 | 93 | |||
94 | static void | 94 | static void | |
95 | cpu_attach(struct device *parent, struct device *self, void *aux) | 95 | cpu_attach(struct device *parent, struct device *self, void *aux) | |
96 | { | 96 | { | |
97 | printf(": "); | 97 | printf(": "); | |
98 | cpu_identify(); | 98 | cpu_identify(); | |
99 | } | 99 | } | |
100 | 100 | |||
101 | /* | 101 | /* | |
102 | * NB: Do not re-enable interrupts here -- reentrancy here can cause all | 102 | * NB: Do not re-enable interrupts here -- reentrancy here can cause all | |
103 | * sorts of Bad Things(tm) to happen, including kernel stack overflows. | 103 | * sorts of Bad Things(tm) to happen, including kernel stack overflows. | |
104 | */ | 104 | */ | |
105 | void | 105 | void | |
106 | cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) | 106 | cpu_intr(uint32_t status, uint32_t cause, vaddr_t pc, uint32_t ipending) | |
107 | { | 107 | { | |
108 | struct cpu_info *ci; | 108 | struct cpu_info *ci; | |
109 | 109 | |||
110 | ci = curcpu(); | 110 | ci = curcpu(); | |
111 | ci->ci_idepth++; | 111 | ci->ci_idepth++; | |
112 | uvmexp.intrs++; | 112 | uvmexp.intrs++; | |
113 | 113 | |||
114 | (void)(*platform.watchdog_reset)(); | 114 | (void)(*platform.watchdog_reset)(); | |
115 | 115 | |||
116 | if (ipending & MIPS_HARD_INT_MASK) { | 116 | if (ipending & MIPS_HARD_INT_MASK) { | |
117 | if (ipending & MIPS_INT_MASK_5) { | 117 | if (ipending & MIPS_INT_MASK_5) { | |
118 | (void)(*platform.intr5)(status, cause, pc, ipending); | 118 | (void)(*platform.intr5)(status, cause, pc, ipending); | |
119 | mips_int5_evcnt.ev_count++; | 119 | mips_int5_evcnt.ev_count++; | |
120 | cause &= ~MIPS_INT_MASK_5; | 120 | cause &= ~MIPS_INT_MASK_5; | |
121 | } | 121 | } | |
122 | 122 | |||
123 | if (ipending & MIPS_INT_MASK_4) { | 123 | if (ipending & MIPS_INT_MASK_4) { | |
124 | (void)(*platform.intr4)(status, cause, pc, ipending); | 124 | (void)(*platform.intr4)(status, cause, pc, ipending); | |
125 | mips_int4_evcnt.ev_count++; | 125 | mips_int4_evcnt.ev_count++; | |
126 | cause &= ~MIPS_INT_MASK_4; | 126 | cause &= ~MIPS_INT_MASK_4; | |
127 | } | 127 | } | |
128 | 128 | |||
129 | if (ipending & MIPS_INT_MASK_3) { | 129 | if (ipending & MIPS_INT_MASK_3) { | |
130 | (void)(*platform.intr3)(status, cause, pc, ipending); | 130 | (void)(*platform.intr3)(status, cause, pc, ipending); | |
131 | mips_int3_evcnt.ev_count++; | 131 | mips_int3_evcnt.ev_count++; | |
132 | cause &= ~MIPS_INT_MASK_3; | 132 | cause &= ~MIPS_INT_MASK_3; | |
133 | } | 133 | } | |
134 | 134 | |||
135 | if (ipending & MIPS_INT_MASK_2) { | 135 | if (ipending & MIPS_INT_MASK_2) { | |
136 | (void)(*platform.intr2)(status, cause, pc, ipending); | 136 | (void)(*platform.intr2)(status, cause, pc, ipending); | |
137 | mips_int2_evcnt.ev_count++; | 137 | mips_int2_evcnt.ev_count++; | |
138 | cause &= ~MIPS_INT_MASK_2; | 138 | cause &= ~MIPS_INT_MASK_2; | |
139 | } | 139 | } | |
140 | 140 | |||
141 | if (ipending & MIPS_INT_MASK_1) { | 141 | if (ipending & MIPS_INT_MASK_1) { | |
142 | (void)(*platform.intr1)(status, cause, pc, ipending); | 142 | (void)(*platform.intr1)(status, cause, pc, ipending); | |
143 | mips_int1_evcnt.ev_count++; | 143 | mips_int1_evcnt.ev_count++; | |
144 | cause &= ~MIPS_INT_MASK_1; | 144 | cause &= ~MIPS_INT_MASK_1; | |
145 | } | 145 | } | |
146 | 146 | |||
147 | if (ipending & MIPS_INT_MASK_0) { | 147 | if (ipending & MIPS_INT_MASK_0) { | |
148 | (void)(*platform.intr0)(status, cause, pc, ipending); | 148 | (void)(*platform.intr0)(status, cause, pc, ipending); | |
149 | mips_int0_evcnt.ev_count++; | 149 | mips_int0_evcnt.ev_count++; | |
150 | cause &= ~MIPS_INT_MASK_0; | 150 | cause &= ~MIPS_INT_MASK_0; | |
151 | } | 151 | } | |
152 | 152 | |||
153 | if (cause & status & MIPS_HARD_INT_MASK) | 153 | if (cause & status & MIPS_HARD_INT_MASK) | |
154 | mips_spurint_evcnt.ev_count++; | 154 | mips_spurint_evcnt.ev_count++; | |
155 | } | 155 | } | |
156 | ci->ci_idepth--; | 156 | ci->ci_idepth--; | |
157 | 157 | |||
158 | #ifdef __HAVE_FAST_SOFTINTS | 158 | #ifdef __HAVE_FAST_SOFTINTS | |
159 | /* software interrupt */ | 159 | /* software interrupt */ | |
160 | ipending &= (MIPS_SOFT_INT_MASK_1|MIPS_SOFT_INT_MASK_0); | 160 | ipending &= (MIPS_SOFT_INT_MASK_1|MIPS_SOFT_INT_MASK_0); | |
161 | if (ipending == 0) | 161 | if (ipending == 0) | |
162 | return; | 162 | return; | |
163 | _clrsoftintr(ipending); | 163 | _clrsoftintr(ipending); | |
164 | softintr_dispatch(ipending); | 164 | softintr_dispatch(ipending); | |
165 | #endif | 165 | #endif | |
166 | } | 166 | } | |
167 | 167 | |||
168 | void * | 168 | void * | |
169 | cpu_intr_establish(int level, int ipl, int (*func)(void *), void *arg) | 169 | cpu_intr_establish(int level, int ipl, int (*func)(void *), void *arg) | |
170 | { | 170 | { | |
171 | (*platform.intr_establish)(level, ipl, func, arg); | 171 | (*platform.intr_establish)(level, ipl, func, arg); | |
172 | return (void *) -1; | 172 | return (void *) -1; | |
173 | } | 173 | } | |
174 | 174 | |||
175 | void | 175 | void | |
176 | mips1_fpu_intr(u_int32_t status, u_int32_t cause, u_int32_t pc, | 176 | mips1_fpu_intr(u_int32_t status, u_int32_t cause, u_int32_t pc, | |
177 | u_int32_t ipending) | 177 | u_int32_t ipending) | |
178 | { | 178 | { | |
179 | 179 | |||
180 | if (!USERMODE(status)) | 180 | if (!USERMODE(status)) | |
181 | panic("kernel used FPU: PC 0x%08x, CR 0x%08x, SR 0x%08x", | 181 | panic("kernel used FPU: PC 0x%08x, CR 0x%08x, SR 0x%08x", | |
182 | pc, cause, status); | 182 | pc, cause, status); | |
183 | 183 | |||
184 | #if !defined(NOFPU) && !defined(SOFTFLOAT) | 184 | #if !defined(NOFPU) && !defined(SOFTFLOAT) | |
185 | MachFPInterrupt(status, cause, pc, curlwp->l_md.md_regs); | 185 | MachFPInterrupt(status, cause, pc, curlwp->l_md.md_regs); | |
186 | #endif | 186 | #endif | |
187 | } | 187 | } |