|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * @OSF_COPYRIGHT@ ! 24: */ ! 25: ! 26: #ifndef _MP_MP_V1_1_H_ ! 27: #define _MP_MP_V1_1_H_ ! 28: ! 29: #include <mach/mach_types.h> ! 30: #include <i386/apic.h> ! 31: #include <kern/lock.h> ! 32: ! 33: struct MP_Config_EntryP { ! 34: unsigned char Entry_Type; ! 35: unsigned char Local_Apic_Id; ! 36: unsigned char Local_Apic_Version; ! 37: unsigned char CPU_Flags; ! 38: unsigned int CPU_Signature; ! 39: unsigned int Feature_Flags; ! 40: unsigned int Reserved[2]; ! 41: }; ! 42: ! 43: /* Entry types */ ! 44: ! 45: #define MP_CPU_ENTRY 0 /* Processor entry */ ! 46: #define MP_BUS_ENTRY 1 /* bus entry */ ! 47: #define MP_IO_APIC_ENTRY 2 /* I/O APIC entry */ ! 48: #define MP_IO_INT_ENTRY 3 /* I/O Interrupt assignment */ ! 49: #define MP_LOC_INT_ENTRY 4 /* Local Interrupt assignment */ ! 50: ! 51: struct MP_Config_EntryB { ! 52: unsigned char Entry_Type; ! 53: unsigned char Bus_Id; ! 54: char Ident[6]; ! 55: }; ! 56: ! 57: struct MP_Config_EntryA { ! 58: unsigned char Entry_Type; ! 59: unsigned char IO_Apic_Id; ! 60: unsigned char IO_Apic_Version; ! 61: unsigned char IO_Apic_Flags; ! 62: vm_offset_t IO_Apic_Address; ! 63: }; ! 64: ! 65: struct MP_Config_EntryI { ! 66: unsigned char Entry_Type; ! 67: unsigned char Int_Type; ! 68: unsigned short Int_Flag; ! 69: unsigned char Source_Bus; ! 70: unsigned char Source_IRQ; ! 71: unsigned char Dest_IO_Apic; ! 72: unsigned char Dest_INTIN; ! 73: }; ! 74: struct MP_Config_EntryL { ! 75: unsigned char Entry_Type; ! 76: unsigned char Int_Type; ! 77: unsigned short Int_Flag; ! 78: unsigned char Source_Bus; ! 79: unsigned char Source_IRQ; ! 80: unsigned char Dest_Local_Apic; ! 81: unsigned char Dest_INTIN; ! 82: }; ! 83: ! 84: struct MP_FPS_struct { ! 85: unsigned int Signature; ! 86: vm_offset_t Config_Ptr; ! 87: unsigned char Length; ! 88: unsigned char Spec_Rev; ! 89: unsigned char CheckSum; ! 90: unsigned char Feature[5]; ! 91: }; ! 92: ! 93: struct MP_Config_Table { ! 94: unsigned int Signature; ! 95: unsigned short Length; ! 96: unsigned char Spec_Rev; ! 97: unsigned char CheckSum; ! 98: char OEM[8]; ! 99: char PROD[12]; ! 100: vm_offset_t OEM_Ptr; ! 101: unsigned short OEM_Size; ! 102: unsigned short Entries; ! 103: vm_offset_t Local_Apic; ! 104: unsigned int Reserved; ! 105: }; ! 106: ! 107: #define IMCR_ADDRESS 0x22 ! 108: #define IMCR_DATA 0x23 ! 109: #define IMCR_SELECT 0x70 ! 110: #define IMCR_APIC_ENABLE 0x01 ! 111: ! 112: #if 0 ! 113: extern boolean_t mp_v1_1_take_irq(int pic, ! 114: int unit, ! 115: int spl, ! 116: i386_intr_t intr); ! 117: ! 118: extern boolean_t mp_v1_1_reset_irq(int pic, ! 119: int *unit, ! 120: int *spl, ! 121: i386_intr_t *intr); ! 122: ! 123: #endif ! 124: ! 125: void mp_v1_1_init(void); ! 126: boolean_t mp_v1_1_io_lock(int, struct processor **); ! 127: void mp_v1_1_io_unlock(struct processor *); ! 128: ! 129: /* Intel default Configurations */ ! 130: ! 131: #define MP_PROPRIETARY_CONF 0 ! 132: #define MP_ISA_CONF 1 ! 133: #define MP_EISA_1_CONF 2 ! 134: #define MP_EISA_2_CONF 3 ! 135: #define MP_MCA_CONF 4 ! 136: #define MP_ISA_PCI_CONF 5 ! 137: #define MP_EISA_PCI_CONF 6 ! 138: #define MP_MCA_PCI_CONF 7 ! 139: ! 140: #if NCPUS > 1 ! 141: #define at386_io_lock_state() panic("at386_io_lock_state called") ! 142: #define at386_io_lock(x) panic("at386_io_lock called"); ! 143: #define at386_io_unlock() panic("at386_io_unlock") ! 144: #endif /* NCPUS > 1 */ ! 145: ! 146: #endif /* _MP_MP_V1_1_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.