Revision: 17994
http://sourceforge.net/p/edk2/code/17994
Author: vanjeff
Date: 2015-07-15 03:37:25 +0000 (Wed, 15 Jul 2015)
Log Message:
-----------
UefiCpuPkg/CpuMpPei: Get AP reset code size and far jump information
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <[email protected]>
Reviewed-by: Feng Tian <[email protected]>
Reviewed-by: Jiewen Yao <[email protected]>
Modified Paths:
--------------
trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h
trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h 2015-07-15 03:36:51 UTC (rev
17993)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/CpuMpPei.h 2015-07-15 03:37:25 UTC (rev
17994)
@@ -23,6 +23,16 @@
#include <Library/PeimEntryPoint.h>
#include <Library/UefiCpuLib.h>
+//
+// AP reset code information
+//
+typedef struct {
+ UINT8 *RendezvousFunnelAddress;
+ UINTN PModeEntryOffset;
+ UINTN LModeEntryOffset;
+ UINTN RendezvousFunnelSize;
+} MP_ASSEMBLY_ADDRESS_MAP;
+
#pragma pack(1)
typedef union {
@@ -62,7 +72,20 @@
} MP_CPU_EXCHANGE_INFO;
#pragma pack()
+
/**
+ Assembly code to get starting address and size of the rendezvous entry for
APs.
+ Information for fixing a jump instruction in the code is also returned.
+
+ @param AddressMap Output buffer for address map information.
+**/
+VOID
+EFIAPI
+AsmGetAddressMap (
+ OUT MP_ASSEMBLY_ADDRESS_MAP *AddressMap
+ );
+
+/**
Assembly code to load GDT table and update segment accordingly.
@param Gdtr Pointer to GDT descriptor
Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm 2015-07-15 03:36:51 UTC
(rev 17993)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm 2015-07-15 03:37:25 UTC
(rev 17994)
@@ -144,7 +144,23 @@
RendezvousFunnelProc ENDP
RendezvousFunnelProcEnd::
+;-------------------------------------------------------------------------------------
+; AsmGetAddressMap (&AddressMap);
+;-------------------------------------------------------------------------------------
+AsmGetAddressMap PROC near C PUBLIC
+ pushad
+ mov ebp,esp
+ 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
+
+ popad
+ ret
+AsmGetAddressMap ENDP
+
AsmInitializeGdt PROC near C PUBLIC
push ebp
mov ebp, esp
Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm 2015-07-15 03:36:51 UTC
(rev 17993)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm 2015-07-15 03:37:25 UTC
(rev 17994)
@@ -132,7 +132,23 @@
jmp $ ; never reach here
RendezvousFunnelProcEnd:
+;-------------------------------------------------------------------------------------
+; AsmGetAddressMap (&AddressMap);
+;-------------------------------------------------------------------------------------
+global ASM_PFX(AsmGetAddressMap)
+ASM_PFX(AsmGetAddressMap):
+ pushad
+ mov ebp,esp
+ 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
+
+ popad
+ ret
+
global ASM_PFX(AsmInitializeGdt)
ASM_PFX(AsmInitializeGdt):
push ebp
Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm 2015-07-15 03:36:51 UTC
(rev 17993)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm 2015-07-15 03:37:25 UTC
(rev 17994)
@@ -181,6 +181,17 @@
RendezvousFunnelProc ENDP
RendezvousFunnelProcEnd::
+;-------------------------------------------------------------------------------------
+; AsmGetAddressMap (&AddressMap);
+;-------------------------------------------------------------------------------------
+AsmGetAddressMap PROC
+ mov rax, offset RendezvousFunnelProcStart
+ mov qword ptr [rcx], rax
+ mov qword ptr [rcx + 8h], Flat32Start - RendezvousFunnelProcStart
+ mov qword ptr [rcx + 10h], LongModeStart - RendezvousFunnelProcStart
+ mov qword ptr [rcx + 18h], RendezvousFunnelProcEnd -
RendezvousFunnelProcStart
+ ret
+AsmGetAddressMap ENDP
AsmInitializeGdt PROC
push rbp
Modified: trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm
===================================================================
--- trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm 2015-07-15 03:36:51 UTC
(rev 17993)
+++ trunk/edk2/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm 2015-07-15 03:37:25 UTC
(rev 17994)
@@ -175,6 +175,17 @@
RendezvousFunnelProcEnd:
+;-------------------------------------------------------------------------------------
+; AsmGetAddressMap (&AddressMap);
+;-------------------------------------------------------------------------------------
+global ASM_PFX(AsmGetAddressMap)
+ASM_PFX(AsmGetAddressMap):
+ mov rax, ASM_PFX(RendezvousFunnelProc)
+ mov qword [rcx], rax
+ mov qword [rcx + 8h], Flat32Start - RendezvousFunnelProcStart
+ mov qword [rcx + 10h], LongModeStart - RendezvousFunnelProcStart
+ mov qword [rcx + 18h], RendezvousFunnelProcEnd -
RendezvousFunnelProcStart
+ ret
global ASM_PFX(AsmInitializeGdt)
ASM_PFX(AsmInitializeGdt):
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits