mirror of https://github.com/acidanthera/audk.git
OvmfPkg/Sec: Declare local variable as volatile in SecCoreStartupWithStack
RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429 Declare the local variables in SecCoreStartupWithStack that actually move the data elements as volatile to prevent the optimizer from replacing this function with the intrinsic memcpy(). Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Erdem Aktas <erdemaktas@google.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
This commit is contained in:
parent
b22ac35b75
commit
ccca1c2d5d
|
@ -757,12 +757,17 @@ SecCoreStartupWithStack (
|
|||
//
|
||||
IdtTableInStack.PeiService = NULL;
|
||||
for (Index = 0; Index < SEC_IDT_ENTRY_COUNT; Index++) {
|
||||
UINT8 *Src;
|
||||
UINT8 *Dst;
|
||||
//
|
||||
// Declare the local variables that actually move the data elements as
|
||||
// volatile to prevent the optimizer from replacing this function with
|
||||
// the intrinsic memcpy()
|
||||
//
|
||||
CONST UINT8 *Src;
|
||||
volatile UINT8 *Dst;
|
||||
UINTN Byte;
|
||||
|
||||
Src = (UINT8 *)&mIdtEntryTemplate;
|
||||
Dst = (UINT8 *)&IdtTableInStack.IdtTable[Index];
|
||||
Src = (CONST UINT8 *)&mIdtEntryTemplate;
|
||||
Dst = (volatile UINT8 *)&IdtTableInStack.IdtTable[Index];
|
||||
for (Byte = 0; Byte < sizeof (mIdtEntryTemplate); Byte++) {
|
||||
Dst[Byte] = Src[Byte];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue