1 1.5 fvdl /* $NetBSD: mpconfig.h,v 1.5 2003/10/16 22:56:29 fvdl Exp $ */ 2 1.1 fvdl 3 1.1 fvdl /* 4 1.1 fvdl * Definitions originally from the mpbios code, but now used for ACPI 5 1.1 fvdl * MP config as well. 6 1.1 fvdl */ 7 1.1 fvdl 8 1.1 fvdl #ifndef _X86_MPCONFIG_H 9 1.1 fvdl #define _X86_MPCONFIG_H 10 1.1 fvdl 11 1.5 fvdl /* 12 1.5 fvdl * XXX 13 1.5 fvdl */ 14 1.5 fvdl #include <machine/bus.h> 15 1.5 fvdl #include <dev/pci/pcivar.h> 16 1.5 fvdl #include <machine/pci_machdep.h> 17 1.5 fvdl 18 1.1 fvdl /* 19 1.1 fvdl * Interrupt typess 20 1.1 fvdl */ 21 1.1 fvdl #define MPS_INTTYPE_INT 0 22 1.1 fvdl #define MPS_INTTYPE_NMI 1 23 1.1 fvdl #define MPS_INTTYPE_SMI 2 24 1.1 fvdl #define MPS_INTTYPE_ExtINT 3 25 1.1 fvdl 26 1.1 fvdl #define MPS_INTPO_DEF 0 27 1.1 fvdl #define MPS_INTPO_ACTHI 1 28 1.1 fvdl #define MPS_INTPO_ACTLO 3 29 1.1 fvdl 30 1.1 fvdl #define MPS_INTTR_DEF 0 31 1.1 fvdl #define MPS_INTTR_EDGE 1 32 1.1 fvdl #define MPS_INTTR_LEVEL 3 33 1.1 fvdl 34 1.1 fvdl #ifndef _LOCORE 35 1.1 fvdl 36 1.1 fvdl struct mpbios_int; 37 1.1 fvdl 38 1.1 fvdl struct mp_bus 39 1.1 fvdl { 40 1.1 fvdl char *mb_name; /* XXX bus name */ 41 1.1 fvdl int mb_idx; /* XXX bus index */ 42 1.1 fvdl void (*mb_intr_print) __P((int)); 43 1.1 fvdl void (*mb_intr_cfg) __P((const struct mpbios_int *, u_int32_t *)); 44 1.1 fvdl struct mp_intr_map *mb_intrs; 45 1.1 fvdl u_int32_t mb_data; /* random bus-specific datum. */ 46 1.3 fvdl int mb_configured; /* has been autoconfigured */ 47 1.5 fvdl pcitag_t *mb_pci_bridge_tag; 48 1.5 fvdl pci_chipset_tag_t mb_pci_chipset_tag; 49 1.1 fvdl }; 50 1.1 fvdl 51 1.1 fvdl struct mp_intr_map 52 1.1 fvdl { 53 1.1 fvdl struct mp_intr_map *next; 54 1.1 fvdl struct mp_bus *bus; 55 1.1 fvdl int bus_pin; 56 1.1 fvdl struct ioapic_softc *ioapic; 57 1.1 fvdl int ioapic_pin; 58 1.1 fvdl int ioapic_ih; /* int handle, for apic_intr_est */ 59 1.1 fvdl int type; /* from mp spec intr record */ 60 1.1 fvdl int flags; /* from mp spec intr record */ 61 1.1 fvdl u_int32_t redir; 62 1.1 fvdl int cpu_id; 63 1.2 fvdl int global_int; /* ACPI global interrupt number */ 64 1.4 fvdl int sflags; /* other, software flags (see below) */ 65 1.1 fvdl }; 66 1.4 fvdl 67 1.4 fvdl #define MPI_OVR 0x0001 /* Was overridden by an ACPI OVR */ 68 1.1 fvdl 69 1.1 fvdl #if defined(_KERNEL) 70 1.1 fvdl extern int mp_verbose; 71 1.1 fvdl extern struct mp_bus *mp_busses; 72 1.1 fvdl extern struct mp_intr_map *mp_intrs; 73 1.1 fvdl extern int mp_nintr; 74 1.1 fvdl extern int mp_isa_bus, mp_eisa_bus; 75 1.1 fvdl extern int mp_nbus; 76 1.1 fvdl #endif 77 1.1 fvdl #endif 78 1.1 fvdl 79 1.1 fvdl #endif /* _X86_MPCONFIG_H */ 80