⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp.h

📁 类unix x86平台的简单操作系统
💻 H
字号:
// See MultiProcessor Specification Version 1.[14].struct mp {             // floating pointer  uchar signature[4];           // "_MP_"  void *physaddr;               // phys addr of MP config table  uchar length;                 // 1  uchar specrev;                // [14]  uchar checksum;               // all bytes must add up to 0  uchar type;                   // MP system config type  uchar imcrp;  uchar reserved[3];};struct mpctb {          // configuration table header  uchar signature[4];           // "PCMP"  ushort length;                // total table length  uchar version;                // [14]  uchar checksum;               // all bytes must add up to 0  uchar product[20];            // product id  uint *oemtable;               // OEM table pointer  ushort oemlength;             // OEM table length  ushort entry;                 // entry count  uint *lapicaddr;              // address of local APIC  ushort xlength;               // extended table length  uchar xchecksum;              // extended table checksum  uchar reserved;};struct mppe {           // processor table entry  uchar type;                   // entry type (0)  uchar apicid;                 // local APIC id  uchar version;                // local APIC verison  uchar flags;                  // CPU flags  uchar signature[4];           // CPU signature  uint feature;                 // feature flags from CPUID instruction  uchar reserved[8];};struct mpbe {           // bus table entry  uchar type;                   // entry type (1)  uchar busno;                  // bus id  char string[6];               // bus type string};struct mpioapic {       // I/O APIC table entry  uchar type;                   // entry type (2)  uchar apicno;                 // I/O APIC id  uchar version;                // I/O APIC version  uchar flags;                  // I/O APIC flags  uint *addr;                  // I/O APIC address};struct mpie {           // interrupt table entry  uchar type;                   // entry type ([34])  uchar intr;                   // interrupt type  ushort flags;                 // interrupt flag  uchar busno;                  // source bus id  uchar irq;                    // source bus irq  uchar apicno;                 // destination APIC id  uchar intin;                  // destination APIC [L]INTIN#};enum {                  // table entry types  MPPROCESSOR   = 0x00,         // one entry per processor  MPBUS = 0x01,                 // one entry per bus  MPIOAPIC = 0x02,              // one entry per I/O APIC  MPIOINTR = 0x03,              // one entry per bus interrupt source  MPLINTR = 0x04,               // one entry per system interrupt source  MPSASM = 0x80,  MPHIERARCHY   = 0x81,  MPCBASM = 0x82,                        // PCMPprocessor and PCMPioapic flags  MPEN = 0x01,                  // enabled  MPBP = 0x02,                  // bootstrap processor                        // PCMPiointr and PCMPlintr flags  MPPOMASK = 0x03,              // polarity conforms to bus specs  MPHIGH = 0x01,                // active high  MPLOW = 0x03,                 // active low  MPELMASK = 0x0C,              // trigger mode of APIC input signals  MPEDGE = 0x04,                // edge-triggered  MPLEVEL = 0x0C,               // level-triggered                        // PCMPiointr and PCMPlintr interrupt type  MPINT = 0x00,                 // vectored interrupt from APIC Rdt  MPNMI = 0x01,                 // non-maskable interrupt  MPSMI = 0x02,                 // system management interrupt  MPExtINT = 0x03,              // vectored interrupt from external PIC};// Common bits for//      I/O APIC Redirection Table Entry;//      Local APIC Local Interrupt Vector Table;//      Local APIC Inter-Processor Interrupt;//      Local APIC Timer Vector Table.enum {  APIC_FIXED     = 0x00000000,  // [10:8] Delivery Mode  APIC_LOWEST    = 0x00000100,  // Lowest priority  APIC_SMI       = 0x00000200,  // System Management Interrupt  APIC_RR        = 0x00000300,  // Remote Read  APIC_NMI       = 0x00000400,  APIC_INIT      = 0x00000500,  // INIT/RESET  APIC_STARTUP   = 0x00000600,  // Startup IPI  APIC_EXTINT    = 0x00000700,  APIC_PHYSICAL  = 0x00000000,  // [11] Destination Mode (RW)  APIC_LOGICAL   = 0x00000800,  APIC_DELIVS    = 0x00001000,  // [12] Delivery Status (RO)  APIC_HIGH      = 0x00000000,  // [13] Interrupt Input Pin Polarity (RW)  APIC_LOW       = 0x00002000,  APIC_REMOTEIRR = 0x00004000,  // [14] Remote IRR (RO)  APIC_EDGE      = 0x00000000,  // [15] Trigger Mode (RW)  APIC_LEVEL     = 0x00008000,  APIC_IMASK     = 0x00010000,  // [16] Interrupt Mask};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -