Tue Dec 15 06:01:43 2009 UTC ()
convert all mips cpu_intr() to have the standard
(uint32_t, uint32_t, vaddr_t, uint32_t) signature.


(mrg)
diff -r1.12 -r1.13 src/sys/arch/evbmips/evbmips/interrupt.c
diff -r1.15 -r1.16 src/sys/arch/hpcmips/hpcmips/interrupt.c
diff -r1.14 -r1.15 src/sys/arch/hpcmips/include/sysconf.h
diff -r1.8 -r1.9 src/sys/arch/mipsco/mipsco/interrupt.c
diff -r1.22 -r1.23 src/sys/arch/sgimips/sgimips/cpu.c

cvs diff -r1.12 -r1.13 src/sys/arch/evbmips/evbmips/interrupt.c (switch to unified diff)

--- 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
45void 45void
46intr_init(void) 46intr_init(void)
47{ 47{
48 48
49 evbmips_intr_init(); /* board specific stuff */ 49 evbmips_intr_init(); /* board specific stuff */
50} 50}
51 51
52void 52void
53cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) 53cpu_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}

cvs diff -r1.15 -r1.16 src/sys/arch/hpcmips/hpcmips/interrupt.c (switch to unified diff)

--- 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
45extern const u_int32_t __ipl_sr_bits_vr[]; 45extern const u_int32_t __ipl_sr_bits_vr[];
46extern const u_int32_t __ipl_sr_bits_tx[]; 46extern const u_int32_t __ipl_sr_bits_tx[];
47 47
48const u_int32_t *ipl_sr_bits; 48const u_int32_t *ipl_sr_bits;
49 49
50void 50void
51intr_init(void) 51intr_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 */
66void 66void
67cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) 67cpu_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 */

cvs diff -r1.14 -r1.15 src/sys/arch/hpcmips/include/sysconf.h (switch to unified diff)

--- 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 */
52struct platform_clock; 52struct platform_clock;
53struct clock_ymdhms; 53struct clock_ymdhms;
54 54
55extern struct platform { 55extern 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
74struct platform_clock { 74struct 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
81void platform_clock_attach(void *, struct platform_clock *); 81void 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_ */

cvs diff -r1.8 -r1.9 src/sys/arch/mipsco/mipsco/interrupt.c (switch to unified diff)

--- 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
44void 44void
45cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) 45cpu_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
67static const int ipl_sr_bits[] = { 67static 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
75ipl_cookie_t 75ipl_cookie_t
76makeiplcookie(ipl_t ipl) 76makeiplcookie(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}

cvs diff -r1.22 -r1.23 src/sys/arch/sgimips/sgimips/cpu.c (switch to unified diff)

--- 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
56static int cpu_match(struct device *, struct cfdata *, void *); 56static int cpu_match(struct device *, struct cfdata *, void *);
57static void cpu_attach(struct device *, struct device *, void *); 57static void cpu_attach(struct device *, struct device *, void *);
58void cpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t); 58void cpu_intr(uint32_t, uint32_t, vaddr_t, uint32_t);
59void *cpu_intr_establish(int, int, int (*func)(void *), void *); 59void *cpu_intr_establish(int, int, int (*func)(void *), void *);
60void mips1_fpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t); 60void mips1_fpu_intr(u_int32_t, u_int32_t, u_int32_t, u_int32_t);
61 61
62extern void MachFPInterrupt(u_int32_t, u_int32_t, u_int32_t, struct frame *); 62extern void MachFPInterrupt(u_int32_t, u_int32_t, u_int32_t, struct frame *);
63 63
64static struct evcnt mips_int0_evcnt = 64static 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
67static struct evcnt mips_int1_evcnt = 67static 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
70static struct evcnt mips_int2_evcnt = 70static 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
73static struct evcnt mips_int3_evcnt = 73static 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
76static struct evcnt mips_int4_evcnt = 76static 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
79static struct evcnt mips_int5_evcnt = 79static 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
82static struct evcnt mips_spurint_evcnt = 82static 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
85CFATTACH_DECL(cpu, sizeof(struct device), 85CFATTACH_DECL(cpu, sizeof(struct device),
86 cpu_match, cpu_attach, NULL, NULL); 86 cpu_match, cpu_attach, NULL, NULL);
87 87
88static int 88static int
89cpu_match(struct device *parent, struct cfdata *match, void *aux) 89cpu_match(struct device *parent, struct cfdata *match, void *aux)
90{ 90{
91 return 1; 91 return 1;
92} 92}
93 93
94static void 94static void
95cpu_attach(struct device *parent, struct device *self, void *aux) 95cpu_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 */
105void 105void
106cpu_intr(u_int32_t status, u_int32_t cause, vaddr_t pc, u_int32_t ipending) 106cpu_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
168void * 168void *
169cpu_intr_establish(int level, int ipl, int (*func)(void *), void *arg) 169cpu_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
175void 175void
176mips1_fpu_intr(u_int32_t status, u_int32_t cause, u_int32_t pc, 176mips1_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}