]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OVMF VTF0 Reset Vector: Cleanup Global Descriptor Table (GDT)
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 4 Jan 2010 16:18:09 +0000 (16:18 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 4 Jan 2010 16:18:09 +0000 (16:18 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9676 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/ResetVector/Bin/ResetVector.ia32.port80.raw
OvmfPkg/ResetVector/Bin/ResetVector.ia32.raw
OvmfPkg/ResetVector/Bin/ResetVector.ia32.serial.raw
OvmfPkg/ResetVector/Bin/ResetVector.x64.port80.raw
OvmfPkg/ResetVector/Bin/ResetVector.x64.raw
OvmfPkg/ResetVector/Bin/ResetVector.x64.serial.raw
OvmfPkg/ResetVector/Ia16/16RealTo32Flat.asm

index ad5f156b972b931cafc11047324764c98ce08d95..c071f1afaf8ca65796a93ea1feecabf486f188e8 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.ia32.port80.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.ia32.port80.raw differ
index 5761a75af6c3d4ab52182a74dea5a139791b1405..97e639ab7005626950c3519df2186788b6de42e1 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.ia32.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.ia32.raw differ
index 779553e4ae0d0bc6f460c325eb0bc97805e5ec2d..c775900fbf960fc082afba1cfd748710967cc0a4 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.ia32.serial.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.ia32.serial.raw differ
index 5c9a7a3d54d4ee082ee1a51525f8029da3786e08..09c911707269be5f46ea0a75caca5338411aab4f 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.x64.port80.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.x64.port80.raw differ
index b93599e17461a24f9ed583dfc72123de23c21604..4b98137b1dfa6752d00b826ef32c8a89941b9e28 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.x64.raw differ
index b7726e3a87815ba0e51601698b19a965f98dcd6f..dfbb4f46d3ba9124e2dbe04646fa27263ed23b5b 100644 (file)
Binary files a/OvmfPkg/ResetVector/Bin/ResetVector.x64.serial.raw and b/OvmfPkg/ResetVector/Bin/ResetVector.x64.serial.raw differ
index d4416ce85e76afccf0b1fbf32f76f7f3d9f229c4..adf049cf77e937c3ee6aaedace5bae16f79444a8 100644 (file)
@@ -63,78 +63,71 @@ gdtr:
 \r
 ALIGN   16\r
 \r
+;\r
+; Macros for GDT entries\r
+;\r
+\r
+%define  PRESENT_FLAG(p) (p << 7)\r
+%define  DPL(dpl) (dpl << 5)\r
+%define  SYSTEM_FLAG(s) (s << 4)\r
+%define  DESC_TYPE(t) (t)\r
+\r
+; Type: data, expand-up, writable, accessed\r
+%define  DATA32_TYPE 3\r
+\r
+; Type: execute, readable, expand-up, accessed\r
+%define  CODE32_TYPE 0xb\r
+\r
+; Type: execute, readable, expand-up, accessed\r
+%define  CODE64_TYPE 0xb\r
+\r
+%define  GRANULARITY_FLAG(g) (g << 7)\r
+%define  DEFAULT_SIZE32(d) (d << 6)\r
+%define  CODE64_FLAG(l) (l << 5)\r
+%define  UPPER_LIMIT(l) (l)\r
+\r
+;\r
+; The Global Descriptor Table (GDT)\r
+;\r
+\r
 GDT_BASE:\r
 ; null descriptor\r
 NULL_SEL            equ $-GDT_BASE\r
-    dw      0            ; limit 15:0\r
-    dw      0            ; base 15:0\r
-    db      0            ; base 23:16\r
-    db      0            ; type\r
-    db      0            ; limit 19:16, flags\r
-    db      0            ; base 31:24\r
+    DW      0            ; limit 15:0\r
+    DW      0            ; base 15:0\r
+    DB      0            ; base 23:16\r
+    DB      0            ; sys flag, dpl, type\r
+    DB      0            ; limit 19:16, flags\r
+    DB      0            ; base 31:24\r
 \r
 ; linear data segment descriptor\r
-LINEAR_SEL      equ $-GDT_BASE\r
-    dw      0FFFFh       ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      093h         ; present, ring 0, data, expand-up, writable, accessed\r
-    db      0CFh         ; page-granular, 32-bit\r
-    db      0\r
+LINEAR_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(DATA32_TYPE)\r
+    DB      GRANULARITY_FLAG(1)|DEFAULT_SIZE32(1)|CODE64_FLAG(0)|UPPER_LIMIT(0xf)\r
+    DB      0            ; base 31:24\r
 \r
 ; linear code segment descriptor\r
-LINEAR_CODE_SEL equ $-GDT_BASE\r
-    dw      0FFFFh       ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      09Bh         ; present, ring 0, data, expand-up, writable, accessed\r
-    db      0CFh         ; page-granular, 32-bit\r
-    db      0\r
-\r
-; system data segment descriptor\r
-SYS_DATA_SEL    equ $-GDT_BASE\r
-    dw      0FFFFh       ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      093h         ; present, ring 0, data, expand-up, writable, accessed\r
-    db      0CFh         ; page-granular, 32-bit\r
-    db      0\r
-\r
-; system code segment descriptor\r
-SYS_CODE_SEL    equ $-GDT_BASE\r
-    dw      0FFFFh       ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      09Bh         ; present, ring 0, data, expand-up, writable, accessed\r
-    db      0CFh         ; page-granular, 32-bit\r
-    db      0\r
-\r
-; spare segment descriptor\r
-LINEAR_CODE64_SEL  equ $-GDT_BASE\r
-    DW      -1           ; LimitLow\r
-    DW      0            ; BaseLow\r
-    DB      0            ; BaseMid\r
-    DB      9bh\r
-    DB      0afh         ; LimitHigh   (CS.L=1, CS.D=0)\r
-    DB      0            ; BaseHigh\r
-\r
-; spare segment descriptor\r
-SPARE4_SEL  equ $-GDT_BASE\r
-    dw      0            ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      0            ; present, ring 0, data, expand-up, writable\r
-    db      0            ; page-granular, 32-bit\r
-    db      0\r
-\r
-; spare segment descriptor\r
-SPARE5_SEL  equ $-GDT_BASE\r
-    dw      0            ; limit 0xFFFFF\r
-    dw      0            ; base 0\r
-    db      0\r
-    db      0            ; present, ring 0, data, expand-up, writable\r
-    db      0            ; page-granular, 32-bit\r
-    db      0\r
+LINEAR_CODE_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(1)|CODE64_FLAG(0)|UPPER_LIMIT(0xf)\r
+    DB      0            ; base 31:24\r
+\r
+%ifdef ARCH_X64\r
+; linear code (64-bit) segment descriptor\r
+LINEAR_CODE64_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(CODE64_TYPE)\r
+    DB      GRANULARITY_FLAG(1)|DEFAULT_SIZE32(0)|CODE64_FLAG(1)|UPPER_LIMIT(0xf)\r
+    DB      0            ; base 31:24\r
+%endif\r
 \r
 GDT_END:\r
 \r