1*9bec9e43Sjsg /* $OpenBSD: mpbiosreg.h,v 1.5 2023/04/10 04:21:20 jsg Exp $ */ 2f5df1827Smickey /* $NetBSD: mpbiosreg.h,v 1.3 2003/03/04 23:27:32 fvdl Exp $ */ 3f5df1827Smickey 4f5df1827Smickey /*- 5f5df1827Smickey * Copyright (c) 2000 The NetBSD Foundation, Inc. 6f5df1827Smickey * All rights reserved. 7f5df1827Smickey * 8f5df1827Smickey * This code is derived from software contributed to The NetBSD Foundation 9f5df1827Smickey * by RedBack Networks Inc. 10f5df1827Smickey * 11f5df1827Smickey * Author: Bill Sommerfeld 12f5df1827Smickey * 13f5df1827Smickey * Redistribution and use in source and binary forms, with or without 14f5df1827Smickey * modification, are permitted provided that the following conditions 15f5df1827Smickey * are met: 16f5df1827Smickey * 1. Redistributions of source code must retain the above copyright 17f5df1827Smickey * notice, this list of conditions and the following disclaimer. 18f5df1827Smickey * 2. Redistributions in binary form must reproduce the above copyright 19f5df1827Smickey * notice, this list of conditions and the following disclaimer in the 20f5df1827Smickey * documentation and/or other materials provided with the distribution. 21f5df1827Smickey * 22f5df1827Smickey * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 23f5df1827Smickey * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 24f5df1827Smickey * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 25f5df1827Smickey * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 26f5df1827Smickey * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 27f5df1827Smickey * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28f5df1827Smickey * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29f5df1827Smickey * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 30f5df1827Smickey * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31f5df1827Smickey * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32f5df1827Smickey * POSSIBILITY OF SUCH DAMAGE. 33f5df1827Smickey */ 34f5df1827Smickey 352fa72412Spirofti #ifndef _MACHINE_MPBIOSREG_H_ 362fa72412Spirofti #define _MACHINE_MPBIOSREG_H_ 37f5df1827Smickey 38f5df1827Smickey #define BIOS_BASE (0xf0000) 39f5df1827Smickey #define BIOS_SIZE (0x10000) 40f5df1827Smickey #define BIOS_COUNT (BIOS_SIZE) 41f5df1827Smickey 42f5df1827Smickey /* 43f5df1827Smickey * Multiprocessor config table entry types. 44f5df1827Smickey */ 45f5df1827Smickey 46f5df1827Smickey #define MPS_MCT_CPU 0 47f5df1827Smickey #define MPS_MCT_BUS 1 48f5df1827Smickey #define MPS_MCT_IOAPIC 2 49f5df1827Smickey #define MPS_MCT_IOINT 3 50f5df1827Smickey #define MPS_MCT_LINT 4 51f5df1827Smickey 52f5df1827Smickey #define MPS_MCT_NTYPES 5 53f5df1827Smickey 542b8325a4Skettenis /* 55*9bec9e43Sjsg * Interrupt types 562b8325a4Skettenis */ 572b8325a4Skettenis 582b8325a4Skettenis #define MPS_INTTYPE_INT 0 592b8325a4Skettenis #define MPS_INTTYPE_NMI 1 602b8325a4Skettenis #define MPS_INTTYPE_SMI 2 612b8325a4Skettenis #define MPS_INTTYPE_ExtINT 3 622b8325a4Skettenis 632b8325a4Skettenis #define MPS_INTPO_DEF 0 642b8325a4Skettenis #define MPS_INTPO_ACTHI 1 652b8325a4Skettenis #define MPS_INTPO_ACTLO 3 662b8325a4Skettenis #define MPS_INTPO_SHIFT 0 672b8325a4Skettenis #define MPS_INTPO_MASK 3 682b8325a4Skettenis 692b8325a4Skettenis #define MPS_INTTR_DEF 0 702b8325a4Skettenis #define MPS_INTTR_EDGE 1 712b8325a4Skettenis #define MPS_INTTR_LEVEL 3 722b8325a4Skettenis #define MPS_INTTR_SHIFT 2 732b8325a4Skettenis #define MPS_INTTR_MASK 3 742b8325a4Skettenis 752b8325a4Skettenis #define MPS_INT(p,t) \ 762b8325a4Skettenis ((((p) & MPS_INTPO_MASK) << MPS_INTPO_SHIFT) | \ 772b8325a4Skettenis (((t) & MPS_INTTR_MASK) << MPS_INTTR_SHIFT)) 782b8325a4Skettenis 79f5df1827Smickey /* MP Floating Pointer Structure */ 80f5df1827Smickey struct mpbios_fps { 81f5df1827Smickey u_int32_t signature; 82f5df1827Smickey /* string defined by the Intel MP Spec as identifying the MP table */ 83f5df1827Smickey #define MP_FP_SIG 0x5f504d5f /* _MP_ */ 84f5df1827Smickey 85f5df1827Smickey u_int32_t pap; 86f5df1827Smickey u_int8_t length; 87f5df1827Smickey u_int8_t spec_rev; 88f5df1827Smickey u_int8_t checksum; 89f5df1827Smickey u_int8_t mpfb1; /* system configuration */ 90f5df1827Smickey u_int8_t mpfb2; /* flags */ 91f5df1827Smickey #define MPFPS_FLAG_IMCR 0x80 /* IMCR present */ 92f5df1827Smickey u_int8_t mpfb3; /* unused */ 93f5df1827Smickey u_int8_t mpfb4; /* unused */ 94f5df1827Smickey u_int8_t mpfb5; /* unused */ 95f5df1827Smickey }; 96f5df1827Smickey 97f5df1827Smickey /* MP Configuration Table Header */ 98f5df1827Smickey struct mpbios_cth { 99f5df1827Smickey u_int32_t signature; 100f5df1827Smickey #define MP_CT_SIG 0x504d4350 /* PCMP */ 101f5df1827Smickey 102f5df1827Smickey u_int16_t base_len; 103f5df1827Smickey u_int8_t spec_rev; 104f5df1827Smickey u_int8_t checksum; 105f5df1827Smickey u_int8_t oem_id[8]; 106f5df1827Smickey u_int8_t product_id[12]; 107f5df1827Smickey u_int32_t oem_table_pointer; 108f5df1827Smickey u_int16_t oem_table_size; 109f5df1827Smickey u_int16_t entry_count; 110f5df1827Smickey u_int32_t apic_address; 111f5df1827Smickey u_int16_t ext_len; 112f5df1827Smickey u_int8_t ext_cksum; 113f5df1827Smickey u_int8_t reserved; 114f5df1827Smickey }; 115f5df1827Smickey 116f5df1827Smickey struct mpbios_proc { 117f5df1827Smickey u_int8_t type; 118f5df1827Smickey u_int8_t apic_id; 119f5df1827Smickey u_int8_t apic_version; 120f5df1827Smickey u_int8_t cpu_flags; 121f5df1827Smickey #define PROCENTRY_FLAG_EN 0x01 122f5df1827Smickey #define PROCENTRY_FLAG_BP 0x02 123f5df1827Smickey u_int32_t cpu_signature; 124f5df1827Smickey u_int32_t feature_flags; 125f5df1827Smickey u_int32_t reserved1; 126f5df1827Smickey u_int32_t reserved2; 127f5df1827Smickey }; 128f5df1827Smickey 129f5df1827Smickey struct mpbios_bus { 130f5df1827Smickey u_int8_t type; 131f5df1827Smickey u_int8_t bus_id; 132f5df1827Smickey char bus_type[6]; 133f5df1827Smickey }; 134f5df1827Smickey 135f5df1827Smickey struct mpbios_ioapic { 136f5df1827Smickey u_int8_t type; 137f5df1827Smickey u_int8_t apic_id; 138f5df1827Smickey u_int8_t apic_version; 139f5df1827Smickey u_int8_t apic_flags; 140f5df1827Smickey #define IOAPICENTRY_FLAG_EN 0x01 141f5df1827Smickey u_int32_t apic_address; 142f5df1827Smickey }; 143f5df1827Smickey 144f5df1827Smickey struct mpbios_int { 145f5df1827Smickey u_int8_t type; 146f5df1827Smickey u_int8_t int_type; 147f5df1827Smickey u_int16_t int_flags; 148f5df1827Smickey u_int8_t src_bus_id; 149f5df1827Smickey u_int8_t src_bus_irq; 150f5df1827Smickey u_int8_t dst_apic_id; 151f5df1827Smickey #define MPS_ALL_APICS 0xff 152f5df1827Smickey u_int8_t dst_apic_int; 153f5df1827Smickey }; 154f5df1827Smickey 155f5df1827Smickey 1562fa72412Spirofti #endif /* !_MACHINE_MPBIOSREG_H_ */ 157