0x0,\r
},\r
//\r
- // SPARE4_SEL\r
+ // SYS_CODE16_SEL\r
//\r
{\r
- 0x0, // limit 15:0\r
+ 0x0FFFF, // limit 15:0\r
0x0, // base 15:0\r
0x0, // base 23:16\r
- 0x0, // type\r
- 0x0, // limit 19:16, flags\r
+ 0x09A, // present, ring 0, code, execute/read\r
+ 0x08F, // page-granular, 16-bit\r
0x0, // base 31:24\r
},\r
//\r
GDT_ENTRY LinearCode;\r
GDT_ENTRY SysData;\r
GDT_ENTRY SysCode;\r
- GDT_ENTRY Spare4;\r
+ GDT_ENTRY SysCode16;\r
GDT_ENTRY LinearData64;\r
GDT_ENTRY LinearCode64;\r
GDT_ENTRY Spare5;\r
#define LINEAR_CODE_SEL OFFSET_OF (GDT_ENTRIES, LinearCode)\r
#define SYS_DATA_SEL OFFSET_OF (GDT_ENTRIES, SysData)\r
#define SYS_CODE_SEL OFFSET_OF (GDT_ENTRIES, SysCode)\r
-#define SPARE4_SEL OFFSET_OF (GDT_ENTRIES, Spare4)\r
+#define SYS_CODE16_SEL OFFSET_OF (GDT_ENTRIES, SysCode16)\r
#define LINEAR_DATA64_SEL OFFSET_OF (GDT_ENTRIES, LinearData64)\r
#define LINEAR_CODE64_SEL OFFSET_OF (GDT_ENTRIES, LinearCode64)\r
#define SPARE5_SEL OFFSET_OF (GDT_ENTRIES, Spare5)\r
DB 0 ; base 31:24\r
%endif\r
\r
+; linear code segment descriptor\r
+LINEAR_CODE16_SEL equ $-GDT_BASE\r
+ DW 0xffff ; limit 15:0\r
+ DW 0 ; base 15:0\r
+ DB 0 ; base 23:16\r
+ DB PRESENT_FLAG(1)|DPL(0)|SYSTEM_FLAG(1)|DESC_TYPE(CODE32_TYPE)\r
+ DB GRANULARITY_FLAG(1)|DEFAULT_SIZE32(0)|CODE64_FLAG(0)|UPPER_LIMIT(0xf)\r
+ DB 0 ; base 31:24\r
+\r
GDT_END:\r
\r