1 #define SD_TYPE(x) (x << 8)
2 #define SD_CODE_DATA(x) (x << 12)
3 #define SD_DPL(x) (x << 13)
4 #define SD_PRESENT(x) (x << 15)
5 #define SD_AVL(x) (x << 20)
6 #define SD_64BITS(x) (x << 21)
7 #define SD_32BITS(x) (x << 22)
8 #define SD_4K_GRAN(x) (x << 23)
10 #define SEG_LIM_L(x) (x & 0x0ffff)
11 #define SEG_LIM_H(x) (x & 0xf0000)
12 #define SEG_BASE_L(x) ((x & 0x0000ffff) << 16)
13 #define SEG_BASE_M(x) ((x & 0x00ff0000) >> 16)
14 #define SEG_BASE_H(x) (x & 0xff000000)
16 #define SEG_DATA_RD 0x00 // Read-Only
17 #define SEG_DATA_RDA 0x01 // Read-Only, accessed
18 #define SEG_DATA_RDWR 0x02 // Read/Write
19 #define SEG_DATA_RDWRA 0x03 // Read/Write, accessed
20 #define SEG_DATA_RDEXPD 0x04 // Read-Only, expand-down
21 #define SEG_DATA_RDEXPDA 0x05 // Read-Only, expand-down, accessed
22 #define SEG_DATA_RDWREXPD 0x06 // Read/Write, expand-down
23 #define SEG_DATA_RDWREXPDA 0x07 // Read/Write, expand-down, accessed
24 #define SEG_CODE_EX 0x08 // Execute-Only
25 #define SEG_CODE_EXA 0x09 // Execute-Only, accessed
26 #define SEG_CODE_EXRD 0x0A // Execute/Read
27 #define SEG_CODE_EXRDA 0x0B // Execute/Read, accessed
28 #define SEG_CODE_EXC 0x0C // Execute-Only, conforming
29 #define SEG_CODE_EXCA 0x0D // Execute-Only, conforming, accessed
30 #define SEG_CODE_EXRDC 0x0E // Execute/Read, conforming
31 #define SEG_CODE_EXRDCA 0x0F // Execute/Read, conforming, accessed
33 #define SEG_R0_CODE SD_TYPE(SEG_CODE_EXRD) | SD_CODE_DATA(1) | SD_DPL(0) | \
34 SD_PRESENT(1) | SD_AVL(0) | SD_64BITS(0) | SD_32BITS(1) | \
37 #define SEG_R0_DATA SD_TYPE(SEG_DATA_RDWR) | SD_CODE_DATA(1) | SD_DPL(0) | \
38 SD_PRESENT(1) | SD_AVL(0) | SD_64BITS(0) | SD_32BITS(1) | \
41 #define SEG_R3_CODE SD_TYPE(SEG_CODE_EXRD) | SD_CODE_DATA(1) | SD_DPL(3) | \
42 SD_PRESENT(1) | SD_AVL(0) | SD_64BITS(0) | SD_32BITS(1) | \
45 #define SEG_R3_DATA SD_TYPE(SEG_DATA_RDWR) | SD_CODE_DATA(1) | SD_DPL(3) | \
46 SD_PRESENT(1) | SD_AVL(0) | SD_64BITS(0) | SD_32BITS(1) | \