Changeset 99d6fd0 in mainline for kernel/arch/ia32/include/pm.h
- Timestamp:
- 2009-03-13T12:57:15Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 421c833
- Parents:
- 0160b1c8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/include/pm.h
r0160b1c8 r99d6fd0 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ia32_PM_H_ 37 37 38 #define IDT_ITEMS 6439 #define GDT_ITEMS 38 #define IDT_ITEMS 64 39 #define GDT_ITEMS 7 40 40 41 #define VESA_INIT_SEGMENT 0x8000 42 43 #define NULL_DES 0 44 #define KTEXT_DES 1 45 #define KDATA_DES 2 46 #define UTEXT_DES 3 47 #define UDATA_DES 4 48 #define TSS_DES 5 49 #define TLS_DES 6 /* Pointer to Thread-Local-Storage data */ 41 #define NULL_DES 0 42 #define KTEXT_DES 1 43 #define KDATA_DES 2 44 #define UTEXT_DES 3 45 #define UDATA_DES 4 46 #define TSS_DES 5 47 #define TLS_DES 6 /* Pointer to Thread-Local-Storage data */ 50 48 51 49 #ifdef CONFIG_FB 52 50 53 #define VESA_INIT_SEGMENT 0x8000 54 #define VESA_INIT_DES 7 51 #define VESA_INIT_SEGMENT 0x8000 52 #define VESA_INIT_DES 7 53 #define KTEXT32_DES KTEXT_DES 54 55 55 #undef GDT_ITEMS 56 #define GDT_ITEMS 856 #define GDT_ITEMS 8 57 57 58 58 #endif /* CONFIG_FB */ 59 59 60 #define gdtselector(des) ((des) << 3) 60 61 61 #define gdtselector(des) ((des) << 3) 62 #define PL_KERNEL 0 63 #define PL_USER 3 62 64 63 #define PL_KERNEL 0 64 #define PL_USER 3 65 #define AR_PRESENT (1 << 7) 66 #define AR_DATA (2 << 3) 67 #define AR_CODE (3 << 3) 68 #define AR_WRITABLE (1 << 1) 69 #define AR_INTERRUPT (0x0e) 70 #define AR_TSS (0x09) 65 71 66 #define AR_PRESENT (1 << 7) 67 #define AR_DATA (2 << 3) 68 #define AR_CODE (3 << 3) 69 #define AR_WRITABLE (1 << 1) 70 #define AR_INTERRUPT (0xe) 71 #define AR_TSS (0x9) 72 #define DPL_KERNEL (PL_KERNEL << 5) 73 #define DPL_USER (PL_USER << 5) 72 74 73 #define DPL_KERNEL (PL_KERNEL << 5)74 #define DPL_USER (PL_USER << 5)75 #define TSS_BASIC_SIZE 104 76 #define TSS_IOMAP_SIZE (16 * 1024 + 1) /* 16K for bitmap + 1 terminating byte for convenience */ 75 77 76 #define TSS_BASIC_SIZE 104 77 #define TSS_IOMAP_SIZE (16 * 1024 + 1) /* 16K for bitmap + 1 terminating byte for convenience */ 78 79 #define IO_PORTS (64 * 1024) 78 #define IO_PORTS (64 * 1024) 80 79 81 80 #ifndef __ASM__ … … 84 83 #include <arch/context.h> 85 84 86 struct ptr_16_32{85 typedef struct { 87 86 uint16_t limit; 88 87 uint32_t base; 89 } __attribute__ ((packed)); 90 typedef struct ptr_16_32 ptr_16_32_t; 88 } __attribute__ ((packed)) ptr_16_32_t; 91 89 92 struct descriptor{90 typedef struct { 93 91 unsigned limit_0_15: 16; 94 92 unsigned base_0_15: 16; … … 101 99 unsigned granularity : 1; 102 100 unsigned base_24_31: 8; 103 } __attribute__ ((packed)); 104 typedef struct descriptor descriptor_t; 101 } __attribute__ ((packed)) descriptor_t; 105 102 106 struct idescriptor{103 typedef struct { 107 104 unsigned offset_0_15: 16; 108 105 unsigned selector: 16; … … 110 107 unsigned access: 8; 111 108 unsigned offset_16_31: 16; 112 } __attribute__ ((packed)); 113 typedef struct idescriptor idescriptor_t; 109 } __attribute__ ((packed)) idescriptor_t; 114 110 115 struct tss{111 typedef struct { 116 112 uint16_t link; 117 113 unsigned : 16; … … 153 149 uint16_t iomap_base; 154 150 uint8_t iomap[TSS_IOMAP_SIZE]; 155 } __attribute__ ((packed)); 156 typedef struct tss tss_t; 151 } __attribute__ ((packed)) tss_t; 157 152 158 153 extern ptr_16_32_t gdtr; 159 154 extern ptr_16_32_t bootstrap_gdtr; 160 155 extern ptr_16_32_t protected_ap_gdtr; 161 extern struct tss*tss_p;156 extern tss_t *tss_p; 162 157 163 158 extern descriptor_t gdt[];
Note:
See TracChangeset
for help on using the changeset viewer.