diff options
Diffstat (limited to 'include/asm-i386/segment.h')
| -rw-r--r-- | include/asm-i386/segment.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/asm-i386/segment.h b/include/asm-i386/segment.h index faf995307b9e..b7ab59685ba7 100644 --- a/include/asm-i386/segment.h +++ b/include/asm-i386/segment.h | |||
| @@ -83,6 +83,11 @@ | |||
| 83 | 83 | ||
| 84 | #define GDT_SIZE (GDT_ENTRIES * 8) | 84 | #define GDT_SIZE (GDT_ENTRIES * 8) |
| 85 | 85 | ||
| 86 | /* Matches __KERNEL_CS and __USER_CS (they must be 2 entries apart) */ | ||
| 87 | #define SEGMENT_IS_FLAT_CODE(x) (((x) & 0xec) == GDT_ENTRY_KERNEL_CS * 8) | ||
| 88 | /* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */ | ||
| 89 | #define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == GDT_ENTRY_PNPBIOS_BASE * 8) | ||
| 90 | |||
| 86 | /* Simple and small GDT entries for booting only */ | 91 | /* Simple and small GDT entries for booting only */ |
| 87 | 92 | ||
| 88 | #define GDT_ENTRY_BOOT_CS 2 | 93 | #define GDT_ENTRY_BOOT_CS 2 |
| @@ -112,4 +117,16 @@ | |||
| 112 | */ | 117 | */ |
| 113 | #define IDT_ENTRIES 256 | 118 | #define IDT_ENTRIES 256 |
| 114 | 119 | ||
| 120 | /* Bottom two bits of selector give the ring privilege level */ | ||
| 121 | #define SEGMENT_RPL_MASK 0x3 | ||
| 122 | /* Bit 2 is table indicator (LDT/GDT) */ | ||
| 123 | #define SEGMENT_TI_MASK 0x4 | ||
| 124 | |||
| 125 | /* User mode is privilege level 3 */ | ||
| 126 | #define USER_RPL 0x3 | ||
| 127 | /* LDT segment has TI set, GDT has it cleared */ | ||
| 128 | #define SEGMENT_LDT 0x4 | ||
| 129 | #define SEGMENT_GDT 0x0 | ||
| 130 | |||
| 131 | #define get_kernel_rpl() 0 | ||
| 115 | #endif | 132 | #endif |
