From 01beffa7e9bb47adfeeb9868058311a478698b72 Mon Sep 17 00:00:00 2001 From: Jeff Fan Date: Tue, 12 Jul 2016 08:49:33 +0800 Subject: [PATCH] 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 Cc: Michael Kinney Cc: Giri Mudusuru Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan Reviewed-by: Giri P Mudusuru --- UefiCpuPkg/CpuMpPei/CpuMpPei.c | 3 +-- UefiCpuPkg/CpuMpPei/CpuMpPei.h | 6 ++---- UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc | 2 +- UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm | 7 +++---- UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm | 5 ++--- UefiCpuPkg/CpuMpPei/X64/MpEqu.inc | 5 ++--- UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm | 7 +++---- UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm | 7 +++---- 8 files changed, 17 insertions(+), 25 deletions(-) diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.c b/UefiCpuPkg/CpuMpPei/CpuMpPei.c index bfaaa7a6b0..4a453c6570 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.c +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.c @@ -428,8 +428,7 @@ WakeUpAP ( 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 ef21450365..b2e578b96a 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.h +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.h @@ -66,8 +66,7 @@ typedef enum { // typedef struct { UINT8 *RendezvousFunnelAddress; - UINTN PModeEntryOffset; - UINTN LModeEntryOffset; + UINTN ModeEntryOffset; UINTN RendezvousFunnelSize; } MP_ASSEMBLY_ADDRESS_MAP; @@ -98,11 +97,10 @@ typedef struct { 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 50111e5023..773eab3a4d 100644 --- a/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc +++ b/UefiCpuPkg/CpuMpPei/Ia32/MpEqu.inc @@ -32,7 +32,7 @@ ApProcedureLocation equ LockLocation + 0Ch 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 d0b0088729..27e16c66f4 100644 --- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm +++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm @@ -52,7 +52,7 @@ RendezvousFunnelProcStart:: 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 @@ AsmGetAddressMap PROC near C PUBLIC 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 fc9db873fc..0852a5bc84 100644 --- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm +++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm @@ -48,7 +48,7 @@ BITS 16 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 @@ ASM_PFX(AsmGetAddressMap): 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 07caf3b991..00f57ce549 100644 --- a/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc +++ b/UefiCpuPkg/CpuMpPei/X64/MpEqu.inc @@ -32,11 +32,10 @@ ApProcedureLocation equ LockLocation + 18h 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 03e00924fb..4adfff3c1c 100644 --- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm +++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm @@ -48,7 +48,7 @@ RendezvousFunnelProcStart:: 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 @@ RendezvousFunnelProcEnd:: 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 e0a98647df..f19c75f913 100644 --- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm +++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm @@ -52,7 +52,7 @@ BITS 16 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 @@ global ASM_PFX(AsmGetAddressMap) 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 ;------------------------------------------------------------------------------------- -- 2.39.2