UefiCpuPkg/CpuMpPei: Remove PmodeOffset and LmodeOffset

Remove Pmode(Entry)Offset/Lmode(Entry)Offset and use unified Mode(Entry)Offset
to clean up the definition of MP_ASSEMBLY_ADDRESS_MAP and MP_CPU_EXCHANGE_INFO.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Giri Mudusuru <giri.p.mudusuru@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@intel.com>
diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.c b/UefiCpuPkg/CpuMpPei/CpuMpPei.c
index bfaaa7a..4a453c6 100644
--- a/UefiCpuPkg/CpuMpPei/CpuMpPei.c
+++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.c
@@ -428,8 +428,7 @@
   ExchangeInfo->StackStart         = PeiCpuMpData->Buffer;

   ExchangeInfo->StackSize          = PeiCpuMpData->CpuApStackSize;

   ExchangeInfo->BufferStart        = PeiCpuMpData->WakeupBuffer;

-  ExchangeInfo->PmodeOffset        = PeiCpuMpData->AddressMap.PModeEntryOffset;

-  ExchangeInfo->LmodeOffset        = PeiCpuMpData->AddressMap.LModeEntryOffset;

+  ExchangeInfo->ModeOffset         = PeiCpuMpData->AddressMap.ModeEntryOffset;

   ExchangeInfo->Cr3                = AsmReadCr3 ();

   ExchangeInfo->CodeSegment        = AsmReadCs ();

   ExchangeInfo->DataSegment        = AsmReadDs ();

diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.h b/UefiCpuPkg/CpuMpPei/CpuMpPei.h
index ef21450..b2e578b 100644
--- a/UefiCpuPkg/CpuMpPei/CpuMpPei.h
+++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.h
@@ -66,8 +66,7 @@
 //

 typedef struct {

   UINT8             *RendezvousFunnelAddress;

-  UINTN             PModeEntryOffset;

-  UINTN             LModeEntryOffset;

+  UINTN             ModeEntryOffset;

   UINTN             RendezvousFunnelSize;

 } MP_ASSEMBLY_ADDRESS_MAP;

 

@@ -98,11 +97,10 @@
   IA32_DESCRIPTOR       GdtrProfile;

   IA32_DESCRIPTOR       IdtrProfile;

   UINTN                 BufferStart;

-  UINTN                 PmodeOffset;

+  UINTN                 ModeOffset;

   UINTN                 NumApsExecuting;

   UINTN                 CodeSegment;

   UINTN                 DataSegment;

-  UINTN                 LmodeOffset;

   UINTN                 Cr3;

   PEI_CPU_MP_DATA       *PeiCpuMpData;

 } MP_CPU_EXCHANGE_INFO;

diff --git a/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc b/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc
index 50111e5..773eab3 100644
--- a/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc
+++ b/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc
@@ -32,7 +32,7 @@
 GdtrLocation                  equ        LockLocation + 10h

 IdtrLocation                  equ        LockLocation + 16h

 BufferStartLocation           equ        LockLocation + 1Ch

-PmodeOffsetLocation           equ        LockLocation + 20h

+ModeOffsetLocation            equ        LockLocation + 20h

 NumApsExecutingLoction        equ        LockLocation + 24h

 CodeSegmentLocation           equ        LockLocation + 28h

 DataSegmentLocation           equ        LockLocation + 2Ch

diff --git a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
index d0b0088..27e16c6 100644
--- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
+++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
@@ -52,7 +52,7 @@
     db 66h,  8Bh, 1Ch                   ; mov        ebx, dword ptr [si]

 

     db 0BEh                             ; opcode of mov si, mem16

-    dw PmodeOffsetLocation              ; mov        si,  PmodeOffsetLocation

+    dw ModeOffsetLocation               ; mov        si,  ModeOffsetLocation

     db 66h,  8Bh,  04h                  ; mov        eax, [si]

     db 0BEh                             ; opcode of mov si, mem16

     dw CodeSegmentLocation              ; mov        si,  CodeSegmentLocation

@@ -161,9 +161,8 @@
 

     mov        ebx, dword ptr [ebp+24h]

     mov        dword ptr [ebx], RendezvousFunnelProcStart

-    mov        dword ptr [ebx +  4h], Flat32Start - RendezvousFunnelProcStart

-    mov        dword ptr [ebx +  8h], 0

-    mov        dword ptr [ebx + 0ch], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

+    mov        dword ptr [ebx + 4h], Flat32Start - RendezvousFunnelProcStart

+    mov        dword ptr [ebx + 8h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

 

     popad

     ret

diff --git a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
index fc9db87..0852a5b 100644
--- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
+++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
@@ -48,7 +48,7 @@
     mov        si,  BufferStartLocation

     mov        ebx, [si]

 

-    mov        si,  PmodeOffsetLocation

+    mov        si,  ModeOffsetLocation

     mov        eax, [si]

     mov        si,  CodeSegmentLocation

     mov        edx, [si]

@@ -149,8 +149,7 @@
     mov        ebx,  [ebp + 24h]

     mov        dword [ebx], RendezvousFunnelProcStart

     mov        dword [ebx +  4h], Flat32Start - RendezvousFunnelProcStart

-    mov        dword [ebx +  8h], 0

-    mov        dword [ebx + 0ch], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

+    mov        dword [ebx +  8h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

 

     popad

     ret

diff --git a/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc b/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc
index 07caf3b..00f57ce 100644
--- a/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc
+++ b/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc
@@ -32,11 +32,10 @@
 GdtrLocation                  equ        LockLocation + 20h

 IdtrLocation                  equ        LockLocation + 2Ah

 BufferStartLocation           equ        LockLocation + 34h

-PmodeOffsetLocation           equ        LockLocation + 3Ch

+ModeOffsetLocation            equ        LockLocation + 3Ch

 NumApsExecutingLoction        equ        LockLocation + 44h

 CodeSegmentLocation           equ        LockLocation + 4Ch

 DataSegmentLocation           equ        LockLocation + 54h

-LmodeOffsetLocation           equ        LockLocation + 5Ch

-Cr3Location                   equ        LockLocation + 64h

+Cr3Location                   equ        LockLocation + 5Ch

 

 ;-------------------------------------------------------------------------------

diff --git a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
index 03e0092..4adfff3 100644
--- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
+++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
@@ -48,7 +48,7 @@
     db 66h,  8Bh, 1Ch                 ; mov        ebx, dword ptr [si]

 

     db 0BFh                           ; opcode of mov di, mem16                         

-    dw LmodeOffsetLocation            ; mov        di,  LmodeOffsetLocation

+    dw ModeOffsetLocation             ; mov        di,  ModeOffsetLocation

     db 66h, 8Bh, 05h                  ; mov        eax, [di]

     db 0BFh                           ; opcode of mov di, mem16  

     dw CodeSegmentLocation            ; mov        di,  CodeSegmentLocation

@@ -176,9 +176,8 @@
 AsmGetAddressMap   PROC

     mov        rax, offset RendezvousFunnelProcStart

     mov        qword ptr [rcx], rax

-    mov        qword ptr [rcx +  8h], 0

-    mov        qword ptr [rcx + 10h], LongModeStart - RendezvousFunnelProcStart

-    mov        qword ptr [rcx + 18h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

+    mov        qword ptr [rcx +  8h], LongModeStart - RendezvousFunnelProcStart

+    mov        qword ptr [rcx + 10h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

     ret

 AsmGetAddressMap   ENDP

 

diff --git a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
index e0a9864..f19c75f 100644
--- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
+++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
@@ -52,7 +52,7 @@
     mov        si,  BufferStartLocation

     mov        ebx, [si]

 

-    mov        di,  LmodeOffsetLocation

+    mov        di,  ModeOffsetLocation

     mov        eax, [di]

     mov        di,  CodeSegmentLocation

     mov        edx, [di]

@@ -170,9 +170,8 @@
 ASM_PFX(AsmGetAddressMap):

     mov        rax, ASM_PFX(RendezvousFunnelProc)

     mov        qword [rcx], rax

-    mov        qword [rcx +  8h], 0

-    mov        qword [rcx + 10h], LongModeStart - RendezvousFunnelProcStart

-    mov        qword [rcx + 18h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

+    mov        qword [rcx +  8h], LongModeStart - RendezvousFunnelProcStart

+    mov        qword [rcx + 10h], RendezvousFunnelProcEnd - RendezvousFunnelProcStart

     ret

 

 ;-------------------------------------------------------------------------------------