]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
UefiCpuPkg/CpuMpPei/Ia32: Use CodeSegment and DataSegment fields
[mirror_edk2.git] / UefiCpuPkg / CpuMpPei / Ia32 / MpFuncs.nasm
index 2ff16dc297bc189245bf3df171aadfcac7c265cd..577ca4e31c8f5794a3cb09a103eccab7acf240bf 100644 (file)
@@ -1,5 +1,5 @@
 ;------------------------------------------------------------------------------ ;\r
-; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
 ; This program and the accompanying materials\r
 ; are licensed and made available under the terms and conditions of the BSD License\r
 ; which accompanies this distribution.  The full text of the license may be found at\r
@@ -48,13 +48,20 @@ BITS 16
     mov        si,  BufferStartLocation\r
     mov        ebx, [si]\r
 \r
-    mov        di,  PmodeOffsetLocation\r
-    mov        eax, [di]\r
+    mov        si,  PmodeOffsetLocation\r
+    mov        eax, [si]\r
+    mov        si,  CodeSegmentLocation\r
+    mov        edx, [si]\r
     mov        di,  ax\r
-    sub        di,  06h\r
+    sub        di,  02h\r
+    mov        [di], dx\r
+    sub        di,  04h\r
     add        eax, ebx\r
     mov        [di],eax\r
 \r
+    mov        si,  DataSegmentLocation\r
+    mov        edx, [si]\r
+\r
     mov        si, GdtrLocation\r
 o32 lgdt       [cs:si]\r
 \r
@@ -68,15 +75,14 @@ o32 lidt       [cs:si]
     or         eax, 000000003h                 ;Set PE bit (bit #0) & MP\r
     mov        cr0, eax\r
 \r
-    jmp        PROTECT_MODE_CS:strict dword 0  ; far jump to protected mode\r
+    jmp        0:strict dword 0                ; far jump to protected mode\r
 BITS 32\r
 Flat32Start:                                   ; protected mode entry point\r
-    mov        ax, PROTECT_MODE_DS\r
-    mov        ds, ax\r
-    mov        es, ax\r
-    mov        fs, ax\r
-    mov        gs, ax\r
-    mov        ss, ax\r
+    mov        ds, dx\r
+    mov        es, dx\r
+    mov        fs, dx\r
+    mov        gs, dx\r
+    mov        ss, dx\r
 \r
     mov        esi, ebx\r
     mov        edi, esi\r