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

📄 smp_priv.h

📁 newos is new operation system
💻 H
字号:
/* ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.** Distributed under the terms of the NewOS License.*/#ifndef _NEWOS_KERNEL_ARCH_I386_SMP_PRIV_H#define _NEWOS_KERNEL_ARCH_I386_SMP_PRIV_H#include <kernel/arch/timer.h>int i386_smp_interrupt(int vector);void arch_smp_ack_interrupt(void);int arch_smp_set_apic_timer(bigtime_t relative_timeout, int type);int arch_smp_clear_apic_timer(void);#define MP_FLT_SIGNATURE '_PM_'#define MP_CTH_SIGNATURE 'PCMP'#define APIC_DM_INIT       (5 << 8)#define APIC_DM_STARTUP    (6 << 8)#define APIC_LEVEL_TRIG    (1 << 14)#define APIC_ASSERT        (1 << 13)#define APIC_ENABLE        0x100#define APIC_FOCUS         (~(1 << 9))#define APIC_SIV           (0xff)#define APIC_ID            ((unsigned int *) ((unsigned int) apic + 0x020))#define APIC_VERSION       ((unsigned int *) ((unsigned int) apic + 0x030))#define APIC_TPRI          ((unsigned int *) ((unsigned int) apic + 0x080))#define APIC_EOI           ((unsigned int *) ((unsigned int) apic + 0x0b0))#define APIC_SIVR          ((unsigned int *) ((unsigned int) apic + 0x0f0))#define APIC_ESR           ((unsigned int *) ((unsigned int) apic + 0x280))#define APIC_ICR1          ((unsigned int *) ((unsigned int) apic + 0x300))#define APIC_ICR2          ((unsigned int *) ((unsigned int) apic + 0x310))#define APIC_LVTT          ((unsigned int *) ((unsigned int) apic + 0x320))#define APIC_LINT0         ((unsigned int *) ((unsigned int) apic + 0x350))#define APIC_LVT3          ((unsigned int *) ((unsigned int) apic + 0x370))#define APIC_ICRT          ((unsigned int *) ((unsigned int) apic + 0x380))#define APIC_CCRT          ((unsigned int *) ((unsigned int) apic + 0x390))#define APIC_TDCR          ((unsigned int *) ((unsigned int) apic + 0x3e0))#define APIC_ICR1_WRITE_MASK    0xfff3f000#define APIC_ICR1_DELMODE_FIXED 0#define APIC_ICR1_DELMODE_LOWESTPRI (1 << 8)#define APIC_ICR1_DESTMODE_LOG (1 << 11)#define APIC_ICR1_DESTMODE_PHYS 0#define APIC_ICR1_READ_MASK     0xfff32000#define APIC_ICR1_DELSTATUS (1 << 12)#define APIC_ICR1_DEST_FIELD          (0)#define APIC_ICR1_DEST_SELF           (1 << 18)#define APIC_ICR1_DEST_ALL            (2 << 18)#define APIC_ICR1_DEST_ALL_BUT_SELF   (3 << 18)#define APIC_ICR2_MASK     0x00ffffff#define APIC_TDCR_2        0x00#define APIC_TDCR_4        0x01#define APIC_TDCR_8        0x02#define APIC_TDCR_16       0x03#define APIC_TDCR_32       0x08#define APIC_TDCR_64       0x09#define APIC_TDCR_128      0x0a#define APIC_TDCR_1        0x0b#define APIC_LVTT_MASK     0x000310ff#define APIC_LVTT_VECTOR   0x000000ff#define APIC_LVTT_DS       0x00001000#define APIC_LVTT_M        0x00010000#define APIC_LVTT_TM       0x00020000#define APIC_LVT_DM        0x00000700#define APIC_LVT_IIPP      0x00002000#define APIC_LVT_TM        0x00008000#define APIC_LVT_M         0x00010000#define APIC_LVT_OS        0x00020000#define APIC_TPR_PRIO      0x000000ff#define APIC_TPR_INT       0x000000f0#define APIC_TPR_SUB       0x0000000f#define APIC_SVR_SWEN      0x00000100#define APIC_SVR_FOCUS     0x00000200#define APIC_DEST_STARTUP  0x00600#define LOPRIO_LEVEL       0x00000010#define IOAPIC_ID          0x0#define IOAPIC_VERSION     0x1#define IOAPIC_ARB         0x2#define IOAPIC_REDIR_TABLE 0x10#define IPI_CACHE_FLUSH    0x40#define IPI_INV_TLB        0x41#define IPI_INV_PTE        0x42#define IPI_INV_RESCHED    0x43#define IPI_STOP           0x44#define MP_EXT_PE          0#define MP_EXT_BUS         1#define MP_EXT_IO_APIC     2#define MP_EXT_IO_INT      3#define MP_EXT_LOCAL_INT   4#define MP_EXT_PE_LEN          20#define MP_EXT_BUS_LEN         8#define MP_EXT_IO_APIC_LEN     8#define MP_EXT_IO_INT_LEN      8#define MP_EXT_LOCAL_INT_LEN   8struct mp_config_table {	unsigned int signature;       /* "PCMP" */	unsigned short table_len;     /* length of this structure */	unsigned char mp_rev;         /* spec supported, 1 for 1.1 or 4 for 1.4 */	unsigned char checksum;       /* checksum, all bytes add up to zero */	char oem[8];                  /* oem identification, not null-terminated */	char product[12];             /* product name, not null-terminated */	void *oem_table_ptr;          /* addr of oem-defined table, zero if none */	unsigned short oem_len;       /* length of oem table */	unsigned short num_entries;   /* number of entries in base table */	unsigned int apic;            /* address of apic */	unsigned short ext_len;       /* length of extended section */	unsigned char ext_checksum;   /* checksum of extended table entries */};struct mp_flt_struct {	unsigned int signature;       /* "_MP_" */	struct mp_config_table *mpc;  /* address of mp configuration table */	unsigned char mpc_len;        /* length of this structure in 16-byte units */	unsigned char mp_rev;         /* spec supported, 1 for 1.1 or 4 for 1.4 */	unsigned char checksum;       /* checksum, all bytes add up to zero */	unsigned char mp_feature_1;   /* mp system configuration type if no mpc */	unsigned char mp_feature_2;   /* imcrp */	unsigned char mp_feature_3, mp_feature_4, mp_feature_5; /* reserved */};struct mp_ext_pe{	unsigned char type;	unsigned char apic_id;	unsigned char apic_version;	unsigned char cpu_flags;	unsigned int signature;       /* stepping, model, family, each four bits */	unsigned int feature_flags;	unsigned int res1, res2;};struct mp_ext_ioapic{	unsigned char type;	unsigned char ioapic_id;	unsigned char ioapic_version;	unsigned char ioapic_flags;	unsigned int *addr;};#endif

⌨️ 快捷键说明

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