Module Name: src Committed By: thorpej Date: Sat Jun 19 16:59:07 UTC 2021
Modified Files: src/sys/arch/alpha/include: pci_machdep.h src/sys/arch/alpha/pci: apecs.c cia.c dwlpx.c irongate.c lca.c mcpcia.c pci_1000.c pci_1000a.c pci_2100_a50.c pci_2100_a500.c pci_2100_a500.h pci_550.c pci_6600.c pci_alphabook1.c pci_axppci_33.c pci_eb164.c pci_eb64plus.c pci_eb66.c pci_kn20aa.c pci_kn300.c pci_kn8ae.c pci_machdep.c pci_up1000.c tsc.c ttwoga.c Removed Files: src/sys/arch/alpha/pci: pci_1000.h pci_1000a.h pci_2100_a50.h pci_550.h pci_6600.h pci_alphabook1.h pci_axppci_33.h pci_eb164.h pci_eb64plus.h pci_eb66.h pci_kn20aa.h pci_kn300.h pci_kn8ae.h pci_up1000.h Log Message: Don't use a bunch of switch() statements in the core logic drivers to select the PCI interrupt initialization routine. Instead, register said routines by systype in a link set, and look them up and invoke them in a new function alpha_pci_intr_init(). To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/arch/alpha/include/pci_machdep.h cvs rdiff -u -r1.56 -r1.57 src/sys/arch/alpha/pci/apecs.c cvs rdiff -u -r1.76 -r1.77 src/sys/arch/alpha/pci/cia.c cvs rdiff -u -r1.41 -r1.42 src/sys/arch/alpha/pci/dwlpx.c cvs rdiff -u -r1.18 -r1.19 src/sys/arch/alpha/pci/irongate.c \ src/sys/arch/alpha/pci/pci_alphabook1.c cvs rdiff -u -r1.53 -r1.54 src/sys/arch/alpha/pci/lca.c cvs rdiff -u -r1.33 -r1.34 src/sys/arch/alpha/pci/mcpcia.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/alpha/pci/pci_1000.c cvs rdiff -u -r1.3 -r0 src/sys/arch/alpha/pci/pci_1000.h \ src/sys/arch/alpha/pci/pci_eb64plus.h src/sys/arch/alpha/pci/pci_up1000.h cvs rdiff -u -r1.29 -r1.30 src/sys/arch/alpha/pci/pci_1000a.c \ src/sys/arch/alpha/pci/pci_6600.c cvs rdiff -u -r1.4 -r0 src/sys/arch/alpha/pci/pci_1000a.h \ src/sys/arch/alpha/pci/pci_eb164.h src/sys/arch/alpha/pci/pci_kn300.h cvs rdiff -u -r1.42 -r1.43 src/sys/arch/alpha/pci/pci_2100_a50.c cvs rdiff -u -r1.5 -r0 src/sys/arch/alpha/pci/pci_2100_a50.h \ src/sys/arch/alpha/pci/pci_550.h src/sys/arch/alpha/pci/pci_axppci_33.h \ src/sys/arch/alpha/pci/pci_kn20aa.h cvs rdiff -u -r1.14 -r1.15 src/sys/arch/alpha/pci/pci_2100_a500.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/alpha/pci/pci_2100_a500.h cvs rdiff -u -r1.38 -r1.39 src/sys/arch/alpha/pci/pci_550.c cvs rdiff -u -r1.2 -r0 src/sys/arch/alpha/pci/pci_6600.h \ src/sys/arch/alpha/pci/pci_alphabook1.h src/sys/arch/alpha/pci/pci_eb66.h cvs rdiff -u -r1.39 -r1.40 src/sys/arch/alpha/pci/pci_axppci_33.c \ src/sys/arch/alpha/pci/pci_kn300.c cvs rdiff -u -r1.46 -r1.47 src/sys/arch/alpha/pci/pci_eb164.c cvs rdiff -u -r1.25 -r1.26 src/sys/arch/alpha/pci/pci_eb64plus.c \ src/sys/arch/alpha/pci/pci_eb66.c cvs rdiff -u -r1.55 -r1.56 src/sys/arch/alpha/pci/pci_kn20aa.c cvs rdiff -u -r1.32 -r1.33 src/sys/arch/alpha/pci/pci_kn8ae.c cvs rdiff -u -r1.6 -r0 src/sys/arch/alpha/pci/pci_kn8ae.h cvs rdiff -u -r1.28 -r1.29 src/sys/arch/alpha/pci/pci_machdep.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/alpha/pci/pci_up1000.c cvs rdiff -u -r1.26 -r1.27 src/sys/arch/alpha/pci/tsc.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/alpha/pci/ttwoga.c 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/alpha/include/pci_machdep.h diff -u src/sys/arch/alpha/include/pci_machdep.h:1.22 src/sys/arch/alpha/include/pci_machdep.h:1.23 --- src/sys/arch/alpha/include/pci_machdep.h:1.22 Thu May 27 22:11:31 2021 +++ src/sys/arch/alpha/include/pci_machdep.h Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_machdep.h,v 1.22 2021/05/27 22:11:31 thorpej Exp $ */ +/* $NetBSD: pci_machdep.h,v 1.23 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -96,6 +96,18 @@ struct alpha_pci_chipset { struct cpu_info *); }; +struct alpha_pci_intr_impl { + uint64_t systype; + void (*intr_init)(void *, bus_space_tag_t, bus_space_tag_t, + pci_chipset_tag_t); +}; + +#define ALPHA_PCI_INTR_INIT(_st_, _fn_) \ +static const struct alpha_pci_intr_impl __CONCAT(intr_impl_st_,_st_) = {\ + .systype = (_st_), .intr_init = (_fn_), \ +}; \ +__link_set_add_rodata(alpha_pci_intr_impls, __CONCAT(intr_impl_st_,_st_)); + /* * Functions provided to machine-independent PCI code. */ @@ -122,6 +134,9 @@ void pci_display_console(bus_space_tag_t pci_chipset_tag_t, int, int, int); void device_pci_register(device_t, void *); +void alpha_pci_intr_init(void *, bus_space_tag_t, bus_space_tag_t, + pci_chipset_tag_t); + int alpha_pci_generic_intr_map(const struct pci_attach_args *, pci_intr_handle_t *); const char *alpha_pci_generic_intr_string(pci_chipset_tag_t, Index: src/sys/arch/alpha/pci/apecs.c diff -u src/sys/arch/alpha/pci/apecs.c:1.56 src/sys/arch/alpha/pci/apecs.c:1.57 --- src/sys/arch/alpha/pci/apecs.c:1.56 Fri Jun 18 22:17:53 2021 +++ src/sys/arch/alpha/pci/apecs.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: apecs.c,v 1.56 2021/06/18 22:17:53 thorpej Exp $ */ +/* $NetBSD: apecs.c,v 1.57 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -56,14 +56,9 @@ * rights to redistribute these changes. */ -#include "opt_dec_2100_a50.h" -#include "opt_dec_eb64plus.h" -#include "opt_dec_1000a.h" -#include "opt_dec_1000.h" - #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: apecs.c,v 1.56 2021/06/18 22:17:53 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: apecs.c,v 1.57 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -82,18 +77,6 @@ __KERNEL_RCSID(0, "$NetBSD: apecs.c,v 1. #include <dev/pci/pcivar.h> #include <alpha/pci/apecsreg.h> #include <alpha/pci/apecsvar.h> -#ifdef DEC_2100_A50 -#include <alpha/pci/pci_2100_a50.h> -#endif -#ifdef DEC_EB64PLUS -#include <alpha/pci/pci_eb64plus.h> -#endif -#ifdef DEC_1000A -#include <alpha/pci/pci_1000a.h> -#endif -#ifdef DEC_1000 -#include <alpha/pci/pci_1000.h> -#endif static int apecsmatch(device_t, cfdata_t, void *); static void apecsattach(device_t, device_t, void *); @@ -189,36 +172,7 @@ apecsattach(device_t parent, device_t se if (!acp->ac_epic_pass2) printf("WARNING: 21071-DA NOT PASS2... NO BETS...\n"); - switch (cputype) { -#ifdef DEC_2100_A50 - case ST_DEC_2100_A50: - pci_2100_a50_pickintr(acp); - break; -#endif - -#ifdef DEC_EB64PLUS - case ST_EB64P: - pci_eb64plus_pickintr(acp); - break; -#endif - -#ifdef DEC_1000A - case ST_DEC_1000A: - pci_1000a_pickintr(acp, &acp->ac_iot, &acp->ac_memt, - &acp->ac_pc); - break; -#endif - -#ifdef DEC_1000 - case ST_DEC_1000: - pci_1000_pickintr(acp, &acp->ac_iot, &acp->ac_memt, - &acp->ac_pc); - break; -#endif - - default: - panic("apecsattach: shouldn't be here, really..."); - } + alpha_pci_intr_init(acp, &acp->ac_iot, &acp->ac_memt, &acp->ac_pc); pba.pba_iot = &acp->ac_iot; pba.pba_memt = &acp->ac_memt; Index: src/sys/arch/alpha/pci/cia.c diff -u src/sys/arch/alpha/pci/cia.c:1.76 src/sys/arch/alpha/pci/cia.c:1.77 --- src/sys/arch/alpha/pci/cia.c:1.76 Fri Jun 18 22:17:53 2021 +++ src/sys/arch/alpha/pci/cia.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cia.c,v 1.76 2021/06/18 22:17:53 thorpej Exp $ */ +/* $NetBSD: cia.c,v 1.77 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. @@ -57,15 +57,11 @@ * rights to redistribute these changes. */ -#include "opt_dec_eb164.h" -#include "opt_dec_kn20aa.h" #include "opt_dec_550.h" -#include "opt_dec_1000a.h" -#include "opt_dec_1000.h" #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: cia.c,v 1.76 2021/06/18 22:17:53 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cia.c,v 1.77 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -86,22 +82,6 @@ __KERNEL_RCSID(0, "$NetBSD: cia.c,v 1.76 #include <alpha/pci/ciareg.h> #include <alpha/pci/ciavar.h> -#ifdef DEC_KN20AA -#include <alpha/pci/pci_kn20aa.h> -#endif -#ifdef DEC_EB164 -#include <alpha/pci/pci_eb164.h> -#endif -#ifdef DEC_550 -#include <alpha/pci/pci_550.h> -#endif -#ifdef DEC_1000A -#include <alpha/pci/pci_1000a.h> -#endif -#ifdef DEC_1000 -#include <alpha/pci/pci_1000.h> -#endif - static int ciamatch(device_t, cfdata_t, void *); static void ciaattach(device_t, device_t, void *); @@ -353,42 +333,7 @@ ciaattach(device_t parent, device_t self cia_dma_init(ccp); - switch (cputype) { -#ifdef DEC_KN20AA - case ST_DEC_KN20AA: - pci_kn20aa_pickintr(ccp); - break; -#endif - -#ifdef DEC_EB164 - case ST_EB164: - pci_eb164_pickintr(ccp); - break; -#endif - -#ifdef DEC_550 - case ST_DEC_550: - pci_550_pickintr(ccp); - break; -#endif - -#ifdef DEC_1000A - case ST_DEC_1000A: - pci_1000a_pickintr(ccp, &ccp->cc_iot, &ccp->cc_memt, - &ccp->cc_pc); - break; -#endif - -#ifdef DEC_1000 - case ST_DEC_1000: - pci_1000_pickintr(ccp, &ccp->cc_iot, &ccp->cc_memt, - &ccp->cc_pc); - break; -#endif - - default: - panic("ciaattach: shouldn't be here, really..."); - } + alpha_pci_intr_init(ccp, &ccp->cc_iot, &ccp->cc_memt, &ccp->cc_pc); pba.pba_iot = &ccp->cc_iot; pba.pba_memt = &ccp->cc_memt; Index: src/sys/arch/alpha/pci/dwlpx.c diff -u src/sys/arch/alpha/pci/dwlpx.c:1.41 src/sys/arch/alpha/pci/dwlpx.c:1.42 --- src/sys/arch/alpha/pci/dwlpx.c:1.41 Sat Jun 19 16:29:03 2021 +++ src/sys/arch/alpha/pci/dwlpx.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwlpx.c,v 1.41 2021/06/19 16:29:03 thorpej Exp $ */ +/* $NetBSD: dwlpx.c,v 1.42 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1997 by Matthew Jacob @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: dwlpx.c,v 1.41 2021/06/19 16:29:03 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwlpx.c,v 1.42 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -50,7 +50,6 @@ __KERNEL_RCSID(0, "$NetBSD: dwlpx.c,v 1. #include <alpha/tlsb/kftxxreg.h> #include <alpha/pci/dwlpxreg.h> #include <alpha/pci/dwlpxvar.h> -#include <alpha/pci/pci_kn8ae.h> #define KV(_addr) ((void *)ALPHA_PHYS_TO_K0SEG((_addr))) #define DWLPX_SYSBASE(sc) \ @@ -160,7 +159,8 @@ dwlpxattach(device_t parent, device_t se /* * Set up interrupts */ - pci_kn8ae_pickintr(&sc->dwlpx_cc); + alpha_pci_intr_init(&sc->dwlpx_cc, &sc->dwlpx_cc.cc_iot, + &sc->dwlpx_cc.cc_memt, &sc->dwlpx_cc.cc_pc); /* * Attach PCI bus Index: src/sys/arch/alpha/pci/irongate.c diff -u src/sys/arch/alpha/pci/irongate.c:1.18 src/sys/arch/alpha/pci/irongate.c:1.19 --- src/sys/arch/alpha/pci/irongate.c:1.18 Fri Jun 18 22:17:53 2021 +++ src/sys/arch/alpha/pci/irongate.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: irongate.c,v 1.18 2021/06/18 22:17:53 thorpej Exp $ */ +/* $NetBSD: irongate.c,v 1.19 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc. @@ -29,11 +29,9 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include "opt_api_up1000.h" - #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: irongate.c,v 1.18 2021/06/18 22:17:53 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: irongate.c,v 1.19 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -53,10 +51,6 @@ __KERNEL_RCSID(0, "$NetBSD: irongate.c,v #include <alpha/pci/irongatereg.h> #include <alpha/pci/irongatevar.h> -#ifdef API_UP1000 -#include <alpha/pci/pci_up1000.h> -#endif - static int irongate_match(device_t, cfdata_t, void *); static void irongate_attach(device_t, device_t, void *); @@ -157,16 +151,7 @@ irongate_attach(device_t parent, device_ */ irongate_bus_mem_init2(&icp->ic_memt, icp); - switch (cputype) { -#ifdef API_UP1000 - case ST_API_NAUTILUS: - pci_up1000_pickintr(icp); - break; -#endif - - default: - panic("irongate_attach: shouldn't be here, really..."); - } + alpha_pci_intr_init(icp, &icp->ic_iot, &icp->ic_memt, &icp->ic_pc); tag = pci_make_tag(&icp->ic_pc, 0, IRONGATE_PCIHOST_DEV, 0); Index: src/sys/arch/alpha/pci/pci_alphabook1.c diff -u src/sys/arch/alpha/pci/pci_alphabook1.c:1.18 src/sys/arch/alpha/pci/pci_alphabook1.c:1.19 --- src/sys/arch/alpha/pci/pci_alphabook1.c:1.18 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_alphabook1.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_alphabook1.c,v 1.18 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_alphabook1.c,v 1.19 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_alphabook1.c,v 1.18 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_alphabook1.c,v 1.19 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -69,6 +69,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_alphaboo #include <sys/device.h> #include <machine/intr.h> +#include <machine/rpb.h> #include <dev/isa/isavar.h> #include <dev/pci/pcireg.h> @@ -76,7 +77,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_alphaboo #include <alpha/pci/lcavar.h> -#include <alpha/pci/pci_alphabook1.h> #include <alpha/pci/siovar.h> #include <alpha/pci/sioreg.h> @@ -87,11 +87,10 @@ static int dec_alphabook1_intr_map(const #define LCA_SIO_DEVICE 7 /* XXX */ -void -pci_alphabook1_pickintr(struct lca_config *lcp) +static void +pci_alphabook1_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &lcp->lc_iot; - pci_chipset_tag_t pc = &lcp->lc_pc; pcireg_t sioclass; int sioII; @@ -103,7 +102,7 @@ pci_alphabook1_pickintr(struct lca_confi if (!sioII) printf("WARNING: SIO NOT SIO II... NO BETS...\n"); - pc->pc_intr_v = lcp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_alphabook1_intr_map; pc->pc_intr_string = sio_pci_intr_string; pc->pc_intr_evcnt = sio_pci_intr_evcnt; @@ -119,6 +118,7 @@ pci_alphabook1_pickintr(struct lca_confi panic("pci_alphabook1_pickintr: no I/O interrupt handler (no sio)"); #endif } +ALPHA_PCI_INTR_INIT(ST_ALPHABOOK1, pci_alphabook1_pickintr) int dec_alphabook1_intr_map(const struct pci_attach_args *pa, Index: src/sys/arch/alpha/pci/lca.c diff -u src/sys/arch/alpha/pci/lca.c:1.53 src/sys/arch/alpha/pci/lca.c:1.54 --- src/sys/arch/alpha/pci/lca.c:1.53 Fri Jun 18 22:17:53 2021 +++ src/sys/arch/alpha/pci/lca.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: lca.c,v 1.53 2021/06/18 22:17:53 thorpej Exp $ */ +/* $NetBSD: lca.c,v 1.54 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -56,13 +56,9 @@ * rights to redistribute these changes. */ -#include "opt_dec_axppci_33.h" -#include "opt_dec_alphabook1.h" -#include "opt_dec_eb66.h" - #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: lca.c,v 1.53 2021/06/18 22:17:53 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lca.c,v 1.54 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -81,15 +77,6 @@ __KERNEL_RCSID(0, "$NetBSD: lca.c,v 1.53 #include <dev/pci/pcivar.h> #include <alpha/pci/lcareg.h> #include <alpha/pci/lcavar.h> -#ifdef DEC_AXPPCI_33 -#include <alpha/pci/pci_axppci_33.h> -#endif -#ifdef DEC_ALPHABOOK1 -#include <alpha/pci/pci_alphabook1.h> -#endif -#ifdef DEC_EB66 -#include <alpha/pci/pci_eb66.h> -#endif static int lcamatch(device_t, cfdata_t, void *); static void lcaattach(device_t, device_t, void *); @@ -205,26 +192,7 @@ lcaattach(device_t parent, device_t self lca_dma_init(lcp); - switch (cputype) { -#ifdef DEC_AXPPCI_33 - case ST_DEC_AXPPCI_33: - pci_axppci_33_pickintr(lcp); - break; -#endif -#ifdef DEC_ALPHABOOK1 - case ST_ALPHABOOK1: - pci_alphabook1_pickintr(lcp); - break; -#endif -#ifdef DEC_EB66 - case ST_EB66: - pci_eb66_pickintr(lcp); - break; -#endif - - default: - panic("lcaattach: shouldn't be here, really..."); - } + alpha_pci_intr_init(lcp, &lcp->lc_iot, &lcp->lc_memt, &lcp->lc_pc); pba.pba_iot = &lcp->lc_iot; pba.pba_memt = &lcp->lc_memt; Index: src/sys/arch/alpha/pci/mcpcia.c diff -u src/sys/arch/alpha/pci/mcpcia.c:1.33 src/sys/arch/alpha/pci/mcpcia.c:1.34 --- src/sys/arch/alpha/pci/mcpcia.c:1.33 Sat Jun 19 16:13:40 2021 +++ src/sys/arch/alpha/pci/mcpcia.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mcpcia.c,v 1.33 2021/06/19 16:13:40 thorpej Exp $ */ +/* $NetBSD: mcpcia.c,v 1.34 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.33 2021/06/19 16:13:40 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.34 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -82,7 +82,6 @@ __KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1 #include <alpha/mcbus/mcbusvar.h> #include <alpha/pci/mcpciareg.h> #include <alpha/pci/mcpciavar.h> -#include <alpha/pci/pci_kn300.h> #define KV(_addr) ((void *)ALPHA_PHYS_TO_K0SEG((_addr))) #define MCPCIA_SYSBASE(mc) \ @@ -173,7 +172,7 @@ mcpciaattach(device_t parent, device_t s /* * Set up interrupts */ - pci_kn300_pickintr(ccp); + alpha_pci_intr_init(ccp, &ccp->cc_iot, &ccp->cc_memt, &ccp->cc_pc); /* * Attach PCI bus Index: src/sys/arch/alpha/pci/pci_1000.c diff -u src/sys/arch/alpha/pci/pci_1000.c:1.27 src/sys/arch/alpha/pci/pci_1000.c:1.28 --- src/sys/arch/alpha/pci/pci_1000.c:1.27 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_1000.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_1000.c,v 1.27 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_1000.c,v 1.28 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_1000.c,v 1.27 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_1000.c,v 1.28 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -72,12 +72,11 @@ __KERNEL_RCSID(0, "$NetBSD: pci_1000.c,v #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> -#include <alpha/pci/pci_1000.h> - #include "sio.h" #if NSIO > 0 || NPCEB > 0 #include <alpha/pci/siovar.h> @@ -96,8 +95,9 @@ static void dec_1000_enable_intr(pci_chi static void dec_1000_disable_intr(pci_chipset_tag_t, int irq); static void pci_1000_imi(void); -void -pci_1000_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, pci_chipset_tag_t pc) +static void +pci_1000_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { char *cp; int i; @@ -142,6 +142,7 @@ pci_1000_pickintr(void *core, bus_space_ sio_intr_setup(pc, iot); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_1000, pci_1000_pickintr) static int dec_1000_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_1000a.c diff -u src/sys/arch/alpha/pci/pci_1000a.c:1.29 src/sys/arch/alpha/pci/pci_1000a.c:1.30 --- src/sys/arch/alpha/pci/pci_1000a.c:1.29 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_1000a.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_1000a.c,v 1.29 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_1000a.c,v 1.30 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_1000a.c,v 1.29 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_1000a.c,v 1.30 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -72,12 +72,11 @@ __KERNEL_RCSID(0, "$NetBSD: pci_1000a.c, #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> -#include <alpha/pci/pci_1000a.h> - #include "sio.h" #if NSIO > 0 || NPCEB > 0 #include <alpha/pci/siovar.h> @@ -99,8 +98,9 @@ static void dec_1000a_enable_intr(pci_ch static void dec_1000a_disable_intr(pci_chipset_tag_t, int irq); static void pci_1000a_imi(void); -void -pci_1000a_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, pci_chipset_tag_t pc) +static void +pci_1000a_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { char *cp; int i; @@ -146,6 +146,7 @@ pci_1000a_pickintr(void *core, bus_space sio_intr_setup(pc, iot); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_1000A, pci_1000a_pickintr) int dec_1000a_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_6600.c diff -u src/sys/arch/alpha/pci/pci_6600.c:1.29 src/sys/arch/alpha/pci/pci_6600.c:1.30 --- src/sys/arch/alpha/pci/pci_6600.c:1.29 Sat Sep 26 21:07:48 2020 +++ src/sys/arch/alpha/pci/pci_6600.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_6600.c,v 1.29 2020/09/26 21:07:48 thorpej Exp $ */ +/* $NetBSD: pci_6600.c,v 1.30 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 by Ross Harvey. All rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pci_6600.c,v 1.29 2020/09/26 21:07:48 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_6600.c,v 1.30 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -55,7 +55,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_6600.c,v #include <alpha/pci/tsreg.h> #include <alpha/pci/tsvar.h> -#include <alpha/pci/pci_6600.h> #define pci_6600() { Generate ctags(1) key. } @@ -107,17 +106,16 @@ static void dec_6600_intr_redistribute(v static uint64_t dec_6600_intr_enables __read_mostly; static uint64_t dec_6600_cpu_intr_enables[4] __read_mostly; -void -pci_6600_pickintr(struct tsp_config *pcp) +static void +pci_6600_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &pcp->pc_iot; - pci_chipset_tag_t pc = &pcp->pc_pc; char *cp; int i; struct cpu_info *ci; CPU_INFO_ITERATOR cii; - pc->pc_intr_v = pcp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_6600_intr_map; pc->pc_intr_string = dec_6600_intr_string; pc->pc_intr_evcnt = dec_6600_intr_evcnt; @@ -146,7 +144,7 @@ pci_6600_pickintr(struct tsp_config *pcp * System-wide and Pchip-0-only logic... */ if (sioprimary == NULL) { - sioprimary = pcp; + sioprimary = core; /* * Unless explicitly routed, all interrupts go to the * primary CPU. @@ -181,6 +179,8 @@ pci_6600_pickintr(struct tsp_config *pcp pc->pc_shared_intrs = sioprimary->pc_pc.pc_shared_intrs; } } +ALPHA_PCI_INTR_INIT(ST_DEC_6600, pci_6600_pickintr) +ALPHA_PCI_INTR_INIT(ST_DEC_TITAN, pci_6600_pickintr) static int dec_6600_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_2100_a50.c diff -u src/sys/arch/alpha/pci/pci_2100_a50.c:1.42 src/sys/arch/alpha/pci/pci_2100_a50.c:1.43 --- src/sys/arch/alpha/pci/pci_2100_a50.c:1.42 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_2100_a50.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_2100_a50.c,v 1.42 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_2100_a50.c,v 1.43 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -29,7 +29,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_2100_a50.c,v 1.42 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_2100_a50.c,v 1.43 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_2100_a50 #include <sys/device.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <sys/bus.h> #include <machine/intr.h> @@ -48,7 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_2100_a50 #include <alpha/pci/apecsvar.h> -#include <alpha/pci/pci_2100_a50.h> #include <alpha/pci/siovar.h> #include <alpha/pci/sioreg.h> @@ -59,11 +59,10 @@ static int dec_2100_a50_intr_map(const s #define APECS_SIO_DEVICE 7 /* XXX */ -void -pci_2100_a50_pickintr(struct apecs_config *acp) +static void +pci_2100_a50_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &acp->ac_iot; - pci_chipset_tag_t pc = &acp->ac_pc; pcireg_t sioclass; int sioII; @@ -74,7 +73,7 @@ pci_2100_a50_pickintr(struct apecs_confi if (!sioII) printf("WARNING: SIO NOT SIO II... NO BETS...\n"); - pc->pc_intr_v = acp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_2100_a50_intr_map; pc->pc_intr_string = sio_pci_intr_string; pc->pc_intr_evcnt = sio_pci_intr_evcnt; @@ -90,6 +89,7 @@ pci_2100_a50_pickintr(struct apecs_confi panic("pci_2100_a50_pickintr: no I/O interrupt handler (no sio)"); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_2100_A50, pci_2100_a50_pickintr) int dec_2100_a50_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_2100_a500.c diff -u src/sys/arch/alpha/pci/pci_2100_a500.c:1.14 src/sys/arch/alpha/pci/pci_2100_a500.c:1.15 --- src/sys/arch/alpha/pci/pci_2100_a500.c:1.14 Fri Sep 25 03:40:11 2020 +++ src/sys/arch/alpha/pci/pci_2100_a500.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_2100_a500.c,v 1.14 2020/09/25 03:40:11 thorpej Exp $ */ +/* $NetBSD: pci_2100_a500.c,v 1.15 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_2100_a500.c,v 1.14 2020/09/25 03:40:11 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_2100_a500.c,v 1.15 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_2100_a50 #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/eisa/eisavar.h> @@ -182,16 +183,17 @@ static const int dec_2100_a500_intr_deft IST_LEVEL, }; -void -pci_2100_a500_pickintr(struct ttwoga_config *tcp) +static void +pci_2100_a500_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - pci_chipset_tag_t pc = &tcp->tc_pc; + struct ttwoga_config *tcp = core; char *cp; int i; - pic_iot = &tcp->tc_iot; + pic_iot = iot; - pc->pc_intr_v = tcp; + pc->pc_intr_v = core; pc->pc_intr_string = alpha_pci_generic_intr_string; pc->pc_intr_evcnt = alpha_pci_generic_intr_evcnt; pc->pc_intr_establish = dec_2100_a500_intr_establish; @@ -246,6 +248,8 @@ pci_2100_a500_pickintr(struct ttwoga_con dec_2100_a500_icic_init_intr(tcp); } } +ALPHA_PCI_INTR_INIT(ST_DEC_2100_A500, pci_2100_a500_pickintr) +ALPHA_PCI_INTR_INIT(ST_DEC_2100A_A500, pci_2100_a500_pickintr) void pci_2100_a500_eisa_pickintr(pci_chipset_tag_t pc, eisa_chipset_tag_t ec) Index: src/sys/arch/alpha/pci/pci_2100_a500.h diff -u src/sys/arch/alpha/pci/pci_2100_a500.h:1.2 src/sys/arch/alpha/pci/pci_2100_a500.h:1.3 --- src/sys/arch/alpha/pci/pci_2100_a500.h:1.2 Mon Apr 28 20:23:11 2008 +++ src/sys/arch/alpha/pci/pci_2100_a500.h Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_2100_a500.h,v 1.2 2008/04/28 20:23:11 martin Exp $ */ +/* $NetBSD: pci_2100_a500.h,v 1.3 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,6 @@ */ struct ttwoga_config; -void pci_2100_a500_pickintr(struct ttwoga_config *); void pci_2100_a500_eisa_pickintr(pci_chipset_tag_t, eisa_chipset_tag_t); void pci_2100_a500_isa_pickintr(pci_chipset_tag_t, isa_chipset_tag_t); Index: src/sys/arch/alpha/pci/pci_550.c diff -u src/sys/arch/alpha/pci/pci_550.c:1.38 src/sys/arch/alpha/pci/pci_550.c:1.39 --- src/sys/arch/alpha/pci/pci_550.c:1.38 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_550.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_550.c,v 1.38 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_550.c,v 1.39 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_550.c,v 1.38 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_550.c,v 1.39 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -81,8 +81,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_550.c,v #include <alpha/pci/ciareg.h> #include <alpha/pci/ciavar.h> -#include <alpha/pci/pci_550.h> - #include "sio.h" #if NSIO #include <alpha/pci/siovar.h> @@ -119,15 +117,14 @@ static void dec_550_intr_disestablish(pc static void dec_550_intr_enable(pci_chipset_tag_t, int irq); static void dec_550_intr_disable(pci_chipset_tag_t, int irq); -void -pci_550_pickintr(struct cia_config *ccp) +static void +pci_550_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &ccp->cc_iot; - pci_chipset_tag_t pc = &ccp->cc_pc; char *cp; int i; - pc->pc_intr_v = ccp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_550_intr_map; pc->pc_intr_string = dec_550_intr_string; pc->pc_intr_evcnt = dec_550_intr_evcnt; @@ -158,7 +155,7 @@ pci_550_pickintr(struct cia_config *ccp) for (i = 0; i < DEC_550_MAX_IRQ; i++) { alpha_shared_intr_set_maxstrays(pc->pc_shared_intrs, i, PCI_STRAY_MAX); - alpha_shared_intr_set_private(pc->pc_shared_intrs, i, ccp); + alpha_shared_intr_set_private(pc->pc_shared_intrs, i, core); cp = alpha_shared_intr_string(pc->pc_shared_intrs, i); snprintf(cp, PCI_550_IRQ_STR, "irq %d", i); @@ -171,6 +168,7 @@ pci_550_pickintr(struct cia_config *ccp) sio_intr_setup(pc, iot); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_550, pci_550_pickintr) static int dec_550_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_axppci_33.c diff -u src/sys/arch/alpha/pci/pci_axppci_33.c:1.39 src/sys/arch/alpha/pci/pci_axppci_33.c:1.40 --- src/sys/arch/alpha/pci/pci_axppci_33.c:1.39 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_axppci_33.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_axppci_33.c,v 1.39 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_axppci_33.c,v 1.40 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -29,7 +29,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_axppci_33.c,v 1.39 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_axppci_33.c,v 1.40 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_axppci_3 #include <sys/device.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <sys/bus.h> #include <machine/intr.h> @@ -48,7 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_axppci_3 #include <alpha/pci/lcavar.h> -#include <alpha/pci/pci_axppci_33.h> #include <alpha/pci/siovar.h> #include <alpha/pci/sioreg.h> @@ -59,11 +59,10 @@ static int dec_axppci_33_intr_map(const #define LCA_SIO_DEVICE 7 /* XXX */ -void -pci_axppci_33_pickintr(struct lca_config *lcp) +static void +pci_axppci_33_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &lcp->lc_iot; - pci_chipset_tag_t pc = &lcp->lc_pc; pcireg_t sioclass; int sioII; @@ -75,7 +74,7 @@ pci_axppci_33_pickintr(struct lca_config if (!sioII) printf("WARNING: SIO NOT SIO II... NO BETS...\n"); - pc->pc_intr_v = lcp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_axppci_33_intr_map; pc->pc_intr_string = sio_pci_intr_string; pc->pc_intr_evcnt = sio_pci_intr_evcnt; @@ -91,6 +90,7 @@ pci_axppci_33_pickintr(struct lca_config panic("pci_axppci_33_pickintr: no I/O interrupt handler (no sio)"); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_AXPPCI_33, pci_axppci_33_pickintr) int dec_axppci_33_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_kn300.c diff -u src/sys/arch/alpha/pci/pci_kn300.c:1.39 src/sys/arch/alpha/pci/pci_kn300.c:1.40 --- src/sys/arch/alpha/pci/pci_kn300.c:1.39 Sat Jun 19 16:13:40 2021 +++ src/sys/arch/alpha/pci/pci_kn300.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_kn300.c,v 1.39 2021/06/19 16:13:40 thorpej Exp $ */ +/* $NetBSD: pci_kn300.c,v 1.40 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1998 by Matthew Jacob @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_kn300.c,v 1.39 2021/06/19 16:13:40 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_kn300.c,v 1.40 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn300.c, #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> @@ -53,7 +54,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn300.c, #include <alpha/mcbus/mcbusreg.h> #include <alpha/pci/mcpciareg.h> #include <alpha/pci/mcpciavar.h> -#include <alpha/pci/pci_kn300.h> #include "sio.h" #if NSIO > 0 || NPCEB > 0 @@ -84,11 +84,12 @@ static void kn300_iointr(void *, unsigne static void kn300_enable_intr(struct mcpcia_config *, int); static void kn300_disable_intr(struct mcpcia_config *, int); -void -pci_kn300_pickintr(struct mcpcia_config *ccp) +static void +pci_kn300_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { + struct mcpcia_config *ccp = core; char *cp; - pci_chipset_tag_t pc = &ccp->cc_pc; if (kn300_pci_intr == NULL) { int g; @@ -107,7 +108,7 @@ pci_kn300_pickintr(struct mcpcia_config } } - pc->pc_intr_v = ccp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_kn300_intr_map; pc->pc_intr_string = dec_kn300_intr_string; pc->pc_intr_evcnt = dec_kn300_intr_evcnt; @@ -125,6 +126,7 @@ pci_kn300_pickintr(struct mcpcia_config #endif } } +ALPHA_PCI_INTR_INIT(ST_DEC_4100, pci_kn300_pickintr) static int dec_kn300_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_eb164.c diff -u src/sys/arch/alpha/pci/pci_eb164.c:1.46 src/sys/arch/alpha/pci/pci_eb164.c:1.47 --- src/sys/arch/alpha/pci/pci_eb164.c:1.46 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_eb164.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_eb164.c,v 1.46 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_eb164.c,v 1.47 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_eb164.c,v 1.46 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_eb164.c,v 1.47 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -81,8 +81,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_eb164.c, #include <alpha/pci/ciareg.h> #include <alpha/pci/ciavar.h> -#include <alpha/pci/pci_eb164.h> - #include "sio.h" #if NSIO #include <alpha/pci/siovar.h> @@ -102,15 +100,15 @@ static bus_space_handle_t eb164_intrgate extern void eb164_intr_enable(pci_chipset_tag_t, int irq); extern void eb164_intr_disable(pci_chipset_tag_t, int irq); -void -pci_eb164_pickintr(struct cia_config *ccp) +static void +pci_eb164_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &ccp->cc_iot; - pci_chipset_tag_t pc = &ccp->cc_pc; + struct cia_config *ccp = core; char *cp; int i; - pc->pc_intr_v = ccp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_eb164_intr_map; pc->pc_intr_string = alpha_pci_generic_intr_string; pc->pc_intr_evcnt = alpha_pci_generic_intr_evcnt; @@ -158,6 +156,7 @@ pci_eb164_pickintr(struct cia_config *cc eb164_intr_enable(pc, EB164_SIO_IRQ); #endif } +ALPHA_PCI_INTR_INIT(ST_EB164, pci_eb164_pickintr) static int dec_eb164_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_eb64plus.c diff -u src/sys/arch/alpha/pci/pci_eb64plus.c:1.25 src/sys/arch/alpha/pci/pci_eb64plus.c:1.26 --- src/sys/arch/alpha/pci/pci_eb64plus.c:1.25 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_eb64plus.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_eb64plus.c,v 1.25 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_eb64plus.c,v 1.26 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_eb64plus.c,v 1.25 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_eb64plus.c,v 1.26 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -71,6 +71,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_eb64plus #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> @@ -78,8 +79,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_eb64plus #include <alpha/pci/apecsreg.h> #include <alpha/pci/apecsvar.h> -#include <alpha/pci/pci_eb64plus.h> - #include "sio.h" #if NSIO #include <alpha/pci/siovar.h> @@ -95,15 +94,14 @@ static bus_space_handle_t eb64plus_intrg extern void eb64plus_intr_enable(pci_chipset_tag_t, int irq); extern void eb64plus_intr_disable(pci_chipset_tag_t, int irq); -void -pci_eb64plus_pickintr(struct apecs_config *acp) +static void +pci_eb64plus_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &acp->ac_iot; - pci_chipset_tag_t pc = &acp->ac_pc; char *cp; int i; - pc->pc_intr_v = acp; + pc->pc_intr_v = core; pc->pc_intr_map = alpha_pci_generic_intr_map; pc->pc_intr_string = alpha_pci_generic_intr_string; pc->pc_intr_evcnt = alpha_pci_generic_intr_evcnt; @@ -145,6 +143,7 @@ pci_eb64plus_pickintr(struct apecs_confi sio_intr_setup(pc, iot); #endif } +ALPHA_PCI_INTR_INIT(ST_EB64P, pci_eb64plus_pickintr) #if 0 /* THIS DOES NOT WORK! see pci_eb64plus_intr.S. */ uint8_t eb64plus_intr_mask[3] = { 0xff, 0xff, 0xff }; Index: src/sys/arch/alpha/pci/pci_eb66.c diff -u src/sys/arch/alpha/pci/pci_eb66.c:1.25 src/sys/arch/alpha/pci/pci_eb66.c:1.26 --- src/sys/arch/alpha/pci/pci_eb66.c:1.25 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_eb66.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_eb66.c,v 1.25 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_eb66.c,v 1.26 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_eb66.c,v 1.25 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_eb66.c,v 1.26 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -71,6 +71,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_eb66.c,v #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> @@ -78,8 +79,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_eb66.c,v #include <alpha/pci/lcareg.h> #include <alpha/pci/lcavar.h> -#include <alpha/pci/pci_eb66.h> - #include "sio.h" #if NSIO #include <alpha/pci/siovar.h> @@ -95,15 +94,14 @@ static bus_space_handle_t eb66_intrgate_ extern void eb66_intr_enable(pci_chipset_tag_t pc, int irq); extern void eb66_intr_disable(pci_chipset_tag_t pc, int irq); -void -pci_eb66_pickintr(struct lca_config *lcp) +static void +pci_eb66_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - bus_space_tag_t iot = &lcp->lc_iot; - pci_chipset_tag_t pc = &lcp->lc_pc; char *cp; int i; - pc->pc_intr_v = lcp; + pc->pc_intr_v = core; pc->pc_intr_map = alpha_pci_generic_intr_map; pc->pc_intr_string = alpha_pci_generic_intr_string; pc->pc_intr_evcnt = alpha_pci_generic_intr_evcnt; @@ -145,6 +143,7 @@ pci_eb66_pickintr(struct lca_config *lcp sio_intr_setup(pc, iot); #endif } +ALPHA_PCI_INTR_INIT(ST_EB66, pci_eb66_pickintr) #if 0 /* THIS DOES NOT WORK! see pci_eb66_intr.S. */ uint8_t eb66_intr_mask[3] = { 0xff, 0xff, 0xff }; Index: src/sys/arch/alpha/pci/pci_kn20aa.c diff -u src/sys/arch/alpha/pci/pci_kn20aa.c:1.55 src/sys/arch/alpha/pci/pci_kn20aa.c:1.56 --- src/sys/arch/alpha/pci/pci_kn20aa.c:1.55 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_kn20aa.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_kn20aa.c,v 1.55 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_kn20aa.c,v 1.56 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -29,7 +29,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_kn20aa.c,v 1.55 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_kn20aa.c,v 1.56 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -41,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn20aa.c #include <sys/syslog.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> @@ -48,8 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn20aa.c #include <alpha/pci/ciareg.h> #include <alpha/pci/ciavar.h> -#include <alpha/pci/pci_kn20aa.h> - #include "sio.h" #if NSIO > 0 || NPCEB > 0 #include <alpha/pci/siovar.h> @@ -65,17 +64,14 @@ static int dec_kn20aa_intr_map(const str static void kn20aa_enable_intr(pci_chipset_tag_t pc, int irq); static void kn20aa_disable_intr(pci_chipset_tag_t pc, int irq); -void -pci_kn20aa_pickintr(struct cia_config *ccp) +static void +pci_kn20aa_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { int i; -#if NSIO > 0 || NPCEB > 0 - bus_space_tag_t iot = &ccp->cc_iot; -#endif - pci_chipset_tag_t pc = &ccp->cc_pc; char *cp; - pc->pc_intr_v = ccp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_kn20aa_intr_map; pc->pc_intr_string = alpha_pci_generic_intr_string; pc->pc_intr_evcnt = alpha_pci_generic_intr_evcnt; @@ -111,6 +107,7 @@ pci_kn20aa_pickintr(struct cia_config *c kn20aa_enable_intr(pc, KN20AA_PCEB_IRQ); #endif } +ALPHA_PCI_INTR_INIT(ST_DEC_KN20AA, pci_kn20aa_pickintr) static int dec_kn20aa_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/pci_kn8ae.c diff -u src/sys/arch/alpha/pci/pci_kn8ae.c:1.32 src/sys/arch/alpha/pci/pci_kn8ae.c:1.33 --- src/sys/arch/alpha/pci/pci_kn8ae.c:1.32 Sat Jun 19 16:29:03 2021 +++ src/sys/arch/alpha/pci/pci_kn8ae.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_kn8ae.c,v 1.32 2021/06/19 16:29:03 thorpej Exp $ */ +/* $NetBSD: pci_kn8ae.c,v 1.33 2021/06/19 16:59:07 thorpej Exp $ */ /* * Copyright (c) 1997 by Matthew Jacob @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c,v 1.32 2021/06/19 16:29:03 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c,v 1.33 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -46,13 +46,13 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c, #include <sys/once.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> #include <alpha/pci/dwlpxreg.h> #include <alpha/pci/dwlpxvar.h> -#include <alpha/pci/pci_kn8ae.h> static int dec_kn8ae_intr_map(const struct pci_attach_args *, pci_intr_handle_t *); @@ -106,12 +106,12 @@ pci_kn8ae_init_imaskcache(void) return 0; } -void -pci_kn8ae_pickintr(struct dwlpx_config *ccp) +static void +pci_kn8ae_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { - pci_chipset_tag_t pc = &ccp->cc_pc; - pc->pc_intr_v = ccp; + pc->pc_intr_v = core; pc->pc_intr_map = dec_kn8ae_intr_map; pc->pc_intr_string = dec_kn8ae_intr_string; pc->pc_intr_evcnt = dec_kn8ae_intr_evcnt; @@ -123,6 +123,7 @@ pci_kn8ae_pickintr(struct dwlpx_config * RUN_ONCE(&pci_kn8ae_once, pci_kn8ae_init_imaskcache); } +ALPHA_PCI_INTR_INIT(ST_DEC_21000, pci_kn8ae_pickintr) #define IH_MAKE(vec, dev, pin) \ ((vec) | ((dev) << 16) | ((pin) << 24)) Index: src/sys/arch/alpha/pci/pci_machdep.c diff -u src/sys/arch/alpha/pci/pci_machdep.c:1.28 src/sys/arch/alpha/pci/pci_machdep.c:1.29 --- src/sys/arch/alpha/pci/pci_machdep.c:1.28 Sat Sep 26 21:07:48 2020 +++ src/sys/arch/alpha/pci/pci_machdep.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_machdep.c,v 1.28 2020/09/26 21:07:48 thorpej Exp $ */ +/* $NetBSD: pci_machdep.c,v 1.29 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.28 2020/09/26 21:07:48 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.29 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -160,6 +160,22 @@ device_pci_register(device_t dev, void * } } +void +alpha_pci_intr_init(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) +{ + __link_set_decl(alpha_pci_intr_impls, struct alpha_pci_intr_impl); + struct alpha_pci_intr_impl * const *impl; + + __link_set_foreach(impl, alpha_pci_intr_impls) { + if ((*impl)->systype == cputype) { + (*impl)->intr_init(core, iot, memt, pc); + return; + } + } + panic("%s: unknown systype %d", __func__, cputype); +} + int alpha_pci_generic_intr_map(const struct pci_attach_args * const pa, pci_intr_handle_t * const ihp) Index: src/sys/arch/alpha/pci/pci_up1000.c diff -u src/sys/arch/alpha/pci/pci_up1000.c:1.16 src/sys/arch/alpha/pci/pci_up1000.c:1.17 --- src/sys/arch/alpha/pci/pci_up1000.c:1.16 Tue Sep 22 15:24:02 2020 +++ src/sys/arch/alpha/pci/pci_up1000.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_up1000.c,v 1.16 2020/09/22 15:24:02 thorpej Exp $ */ +/* $NetBSD: pci_up1000.c,v 1.17 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_up1000.c,v 1.16 2020/09/22 15:24:02 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_up1000.c,v 1.17 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -41,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_up1000.c #include <sys/device.h> #include <machine/autoconf.h> +#include <machine/rpb.h> #include <sys/bus.h> #include <machine/intr.h> @@ -53,7 +54,6 @@ __KERNEL_RCSID(0, "$NetBSD: pci_up1000.c #include <alpha/pci/irongatevar.h> -#include <alpha/pci/pci_up1000.h> #include <alpha/pci/siovar.h> #include <alpha/pci/sioreg.h> @@ -62,14 +62,12 @@ __KERNEL_RCSID(0, "$NetBSD: pci_up1000.c static int api_up1000_intr_map(const struct pci_attach_args *, pci_intr_handle_t *); -void -pci_up1000_pickintr(struct irongate_config *icp) +static void +pci_up1000_pickintr(void *core, bus_space_tag_t iot, bus_space_tag_t memt, + pci_chipset_tag_t pc) { #if NSIO - bus_space_tag_t iot = &icp->ic_iot; - pci_chipset_tag_t pc = &icp->ic_pc; - - pc->pc_intr_v = icp; + pc->pc_intr_v = core; pc->pc_intr_map = api_up1000_intr_map; pc->pc_intr_string = sio_pci_intr_string; pc->pc_intr_evcnt = sio_pci_intr_evcnt; @@ -84,6 +82,7 @@ pci_up1000_pickintr(struct irongate_conf panic("pci_up1000_pickintr: no I/O interrupt handler (no sio)"); #endif } +ALPHA_PCI_INTR_INIT(ST_API_NAUTILUS, pci_up1000_pickintr) static int api_up1000_intr_map(const struct pci_attach_args *pa, pci_intr_handle_t *ihp) Index: src/sys/arch/alpha/pci/tsc.c diff -u src/sys/arch/alpha/pci/tsc.c:1.26 src/sys/arch/alpha/pci/tsc.c:1.27 --- src/sys/arch/alpha/pci/tsc.c:1.26 Thu May 27 22:11:31 2021 +++ src/sys/arch/alpha/pci/tsc.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tsc.c,v 1.26 2021/05/27 22:11:31 thorpej Exp $ */ +/* $NetBSD: tsc.c,v 1.27 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 by Ross Harvey. All rights reserved. @@ -31,11 +31,9 @@ * */ -#include "opt_dec_6600.h" - #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tsc.c,v 1.26 2021/05/27 22:11:31 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tsc.c,v 1.27 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -55,10 +53,6 @@ __KERNEL_RCSID(0, "$NetBSD: tsc.c,v 1.26 #include "tsciic.h" -#ifdef DEC_6600 -#include <alpha/pci/pci_6600.h> -#endif - #define tsc() { Generate ctags(1) key. } static int tscmatch(device_t, cfdata_t, void *); @@ -225,7 +219,7 @@ tspattach(device_t parent, device_t self */ tsp_bus_mem_init2(&pcp->pc_memt, pcp); - pci_6600_pickintr(pcp); + alpha_pci_intr_init(pcp, &pcp->pc_iot, &pcp->pc_memt, &pcp->pc_pc); pba.pba_iot = &pcp->pc_iot; pba.pba_memt = &pcp->pc_memt; Index: src/sys/arch/alpha/pci/ttwoga.c diff -u src/sys/arch/alpha/pci/ttwoga.c:1.17 src/sys/arch/alpha/pci/ttwoga.c:1.18 --- src/sys/arch/alpha/pci/ttwoga.c:1.17 Sat May 8 00:08:43 2021 +++ src/sys/arch/alpha/pci/ttwoga.c Sat Jun 19 16:59:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttwoga.c,v 1.17 2021/05/08 00:08:43 thorpej Exp $ */ +/* $NetBSD: ttwoga.c,v 1.18 2021/06/19 16:59:07 thorpej Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: ttwoga.c,v 1.17 2021/05/08 00:08:43 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttwoga.c,v 1.18 2021/06/19 16:59:07 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -235,19 +235,10 @@ ttwopciattach(device_t parent, device_t tcp->tc_rev); if (tcp->tc_rev < 1) - aprint_normal_dev(self, "WARNING: T2 NOT PASS2... NO BETS...\n"); + aprint_normal_dev(self, + "WARNING: T2 NOT PASS2... NO BETS...\n"); - switch (cputype) { -#if defined(DEC_2100_A500) || defined(DEC_2100A_A500) - case ST_DEC_2100_A500: - case ST_DEC_2100A_A500: - pci_2100_a500_pickintr(tcp); - break; -#endif - - default: - panic("ttwogaattach: shouldn't be here, really..."); - } + alpha_pci_intr_init(tcp, &tcp->tc_iot, &tcp->tc_memt, &tcp->tc_pc); npba.pba_iot = &tcp->tc_iot; npba.pba_memt = &tcp->tc_memt;