audk/UefiCpuPkg
Laszlo Ersek fc504fdea7 UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmiStack" with PatchInstructionX86()
Rename the variable to "gPatchSmiStack" so that its association with
PatchInstructionX86() is clear from the declaration. Also change its type
to X86_ASSEMBLY_PATCH_LABEL.

Unlike "gSmbase" in the previous patch, "gSmiStack"'s patched value is
also de-referenced by C code (in other words, it is read back after
patching): the InstallSmiHandler() function stores "CpuIndex" to the given
CPU's SMI stack through "gSmiStack". Introduce the local variable
"CpuSmiStack" in InstallSmiHandler() for calculating the stack location
separately, then use this variable for both patching into the assembly
code, and for storing "CpuIndex" through it.

It's assumed that "volatile" stood in the declaration of "gSmiStack"
because we used to read "gSmiStack" back for de-referencing; with that use
gone, we can remove "volatile" too. (Note that the *target* of the pointer
was never volatile-qualified.)

Finally, replace the binary (DB) encoding of "mov esp, imm32" in
"SmiEntry.nasm".

Cc: Eric Dong <eric.dong@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=866
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-04-04 16:44:04 +02:00
..
Application/Cpuid UefiCpuPkg/Cpuid.h: Update CPUID definitions with SDM (Sep.2016) 2016-12-16 11:48:21 +08:00
CpuDxe UefiCpuPkg/CpuDxe: remove all code to flush TLB for APs 2018-01-29 09:37:41 +08:00
CpuFeatures UefiCpuPkg/CpuFeatures: Export HOB if CPU initialized in PEI 2017-10-27 09:34:37 +08:00
CpuIo2Dxe UefiCpuPkg: Refine casting expression result to bigger size 2017-03-06 14:33:26 +08:00
CpuIo2Smm UefiCpuPkg: Refine casting expression result to bigger size 2017-03-06 14:33:26 +08:00
CpuIoPei UefiCpuPkg: Modify CpuIoPei to support new IoLib library 2017-01-17 10:10:32 +08:00
CpuMpPei UefiCpuPkg CpuMpPei: Update return status to follow spec. 2017-07-07 08:54:11 +08:00
CpuS3DataDxe UefiCpuPkg/CpuS3DataDxe: Consume the existing PcdCpuS3DataAddress 2017-03-22 10:11:25 +08:00
Include UefiCpuPkg/MtrrLib: Add comments to recommend to use batch-set API 2018-01-24 11:13:17 +08:00
Library UefiCpuPkg/MpInitLib: Disable interrupt at ExitBootServices AP Mwait 2018-03-20 15:53:25 +08:00
PiSmmCommunication UefiCpuPkg PiSmmCommunicationSmm: Deprecate SMM Communication ACPI Table 2017-07-27 14:08:09 +08:00
PiSmmCpuDxeSmm UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmiStack" with PatchInstructionX86() 2018-04-04 16:44:04 +02:00
ResetVector UefiCpuPkg/ResetVector/Vtf0: document segment register setup 2017-11-17 18:11:58 +01:00
SecCore UefiCpuPkg: Remove the unused file ResetVec.asm16 2018-02-01 09:24:53 +08:00
Universal/Acpi/S3Resume2Pei UefiCpuPkg S3ResumePei: Signal S3SmmInitDone 2018-03-03 14:20:57 +08:00
UefiCpuPkg.dec UefiCpuPkg: Update package version. 2018-01-22 19:23:56 +08:00
UefiCpuPkg.dsc UefiCpuPkg: Update package version. 2018-01-22 19:23:56 +08:00
UefiCpuPkg.uni UefiCpuPkg/UefiCpuPkg.uni: Add missing string definition for new PCDs 2017-12-26 09:44:14 +08:00
UefiCpuPkgExtra.uni UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00