On 10/26/15 14:47, Jeff Fan wrote: > Move STARTUP_CODE and ENABLE_EXECUTE_DISABLE_CODE definitions from ApStartup.c > to CpuMp.h. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Jeff Fan <[email protected]> > CC: Michael Kinney <[email protected]> > CC: Laszlo Ersek <[email protected]> > --- > UefiCpuPkg/CpuDxe/ApStartup.c | 99 > ------------------------------------------- > UefiCpuPkg/CpuDxe/CpuMp.h | 99 > +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 99 insertions(+), 99 deletions(-)
I think the subject should be changed to: UefiCpuPkg/CpuDxe: Move code template structures to header file Other than that: Reviewed-by: Laszlo Ersek <[email protected]> > > diff --git a/UefiCpuPkg/CpuDxe/ApStartup.c b/UefiCpuPkg/CpuDxe/ApStartup.c > index 78fb26f..77476ae 100644 > --- a/UefiCpuPkg/CpuDxe/ApStartup.c > +++ b/UefiCpuPkg/CpuDxe/ApStartup.c > @@ -16,29 +16,6 @@ > #include "CpuGdt.h" > #include "CpuMp.h" > > -#pragma pack(1) > - > -typedef struct { > - UINT8 MoveIa32EferMsrToEcx[5]; > - UINT8 ReadIa32EferMsr[2]; > - UINT8 SetExecuteDisableBitEnableBit[4]; > - UINT8 WriteIa32EferMsr[2]; > - > -#if defined (MDE_CPU_IA32) > - UINT8 MovEaxCr3; > - UINT32 Cr3Value; > - UINT8 MovCr3Eax[3]; > - > - UINT8 MoveCr4ToEax[3]; > - UINT8 SetCr4Bit5[4]; > - UINT8 MoveEaxToCr4[3]; > - > - UINT8 MoveCr0ToEax[3]; > - UINT8 SetCr0PagingBit[4]; > - UINT8 MoveEaxToCr0[3]; > -#endif > -} ENABLE_EXECUTE_DISABLE_CODE; > - > ENABLE_EXECUTE_DISABLE_CODE mEnableExecuteDisableCodeTemplate = { > { 0xB9, 0x80, 0x00, 0x00, 0xC0 }, // mov ecx, 0xc0000080 > { 0x0F, 0x32 }, // rdmsr > @@ -59,82 +36,6 @@ ENABLE_EXECUTE_DISABLE_CODE > mEnableExecuteDisableCodeTemplate = { > #endif > }; > > -typedef struct { > - UINT8 JmpToCli[2]; > - > - UINT16 GdtLimit; > - UINT32 GdtBase; > - > - UINT8 Cli; > - > - UINT8 MovAxRealSegment; UINT16 RealSegment; > - UINT8 MovDsAx[2]; > - > - UINT8 MovBxGdtr[3]; > - UINT8 LoadGdt[5]; > - > - UINT8 MovEaxCr0[2]; > - UINT32 MovEaxCr0Value; > - UINT8 MovCr0Eax[3]; > - > - UINT8 FarJmp32Flat[2]; UINT32 FlatJmpOffset; UINT16 FlatJmpSelector; > - > - // > - // Now in IA32 > - // > - UINT8 MovEaxCr4; > - UINT32 MovEaxCr4Value; > - UINT8 MovCr4Eax[3]; > - > - UINT8 MoveDataSelectorIntoAx[2]; UINT16 FlatDataSelector; > - UINT8 MoveFlatDataSelectorFromAxToDs[2]; > - UINT8 MoveFlatDataSelectorFromAxToEs[2]; > - UINT8 MoveFlatDataSelectorFromAxToFs[2]; > - UINT8 MoveFlatDataSelectorFromAxToGs[2]; > - UINT8 MoveFlatDataSelectorFromAxToSs[2]; > - > - // > - // Code placeholder to enable PAE Execute Disable for IA32 > - // and enable Execute Disable Bit for X64 > - // > - ENABLE_EXECUTE_DISABLE_CODE EnableExecuteDisable; > - > -#if defined (MDE_CPU_X64) > - // > - // Transition to X64 > - // > - UINT8 MovEaxCr3; > - UINT32 Cr3Value; > - UINT8 MovCr3Eax[3]; > - > - UINT8 MoveCr4ToEax[3]; > - UINT8 SetCr4Bit5[4]; > - UINT8 MoveEaxToCr4[3]; > - > - UINT8 MoveLongModeEnableMsrToEcx[5]; > - UINT8 ReadLmeMsr[2]; > - UINT8 SetLongModeEnableBit[4]; > - UINT8 WriteLmeMsr[2]; > - > - UINT8 MoveCr0ToEax[3]; > - UINT8 SetCr0PagingBit[4]; > - UINT8 MoveEaxToCr0[3]; > - //UINT8 DeadLoop[2]; > - > - UINT8 FarJmp32LongMode; UINT32 LongJmpOffset; UINT16 LongJmpSelector; > -#endif // defined (MDE_CPU_X64) > - > -#if defined (MDE_CPU_X64) > - UINT8 MovEaxOrRaxCpuDxeEntry[2]; UINTN CpuDxeEntryValue; > -#else > - UINT8 MovEaxOrRaxCpuDxeEntry; UINTN CpuDxeEntryValue; > -#endif > - UINT8 JmpToCpuDxeEntry[2]; > - > -} STARTUP_CODE; > - > -#pragma pack() > - > /** > This .asm code used for translating processor from 16 bit real mode into > 64 bit long mode. which help to create the mStartupCodeTemplate value. > diff --git a/UefiCpuPkg/CpuDxe/CpuMp.h b/UefiCpuPkg/CpuDxe/CpuMp.h > index 503f3ae..feca3be 100644 > --- a/UefiCpuPkg/CpuDxe/CpuMp.h > +++ b/UefiCpuPkg/CpuDxe/CpuMp.h > @@ -22,6 +22,105 @@ > #include <Library/HobLib.h> > #include <Library/ReportStatusCodeLib.h> > > +#pragma pack(1) > + > +typedef struct { > + UINT8 MoveIa32EferMsrToEcx[5]; > + UINT8 ReadIa32EferMsr[2]; > + UINT8 SetExecuteDisableBitEnableBit[4]; > + UINT8 WriteIa32EferMsr[2]; > + > +#if defined (MDE_CPU_IA32) > + UINT8 MovEaxCr3; > + UINT32 Cr3Value; > + UINT8 MovCr3Eax[3]; > + > + UINT8 MoveCr4ToEax[3]; > + UINT8 SetCr4Bit5[4]; > + UINT8 MoveEaxToCr4[3]; > + > + UINT8 MoveCr0ToEax[3]; > + UINT8 SetCr0PagingBit[4]; > + UINT8 MoveEaxToCr0[3]; > +#endif > +} ENABLE_EXECUTE_DISABLE_CODE; > + > +typedef struct { > + UINT8 JmpToCli[2]; > + > + UINT16 GdtLimit; > + UINT32 GdtBase; > + > + UINT8 Cli; > + > + UINT8 MovAxRealSegment; UINT16 RealSegment; > + UINT8 MovDsAx[2]; > + > + UINT8 MovBxGdtr[3]; > + UINT8 LoadGdt[5]; > + > + UINT8 MovEaxCr0[2]; > + UINT32 MovEaxCr0Value; > + UINT8 MovCr0Eax[3]; > + > + UINT8 FarJmp32Flat[2]; UINT32 FlatJmpOffset; UINT16 FlatJmpSelector; > + > + // > + // Now in IA32 > + // > + UINT8 MovEaxCr4; > + UINT32 MovEaxCr4Value; > + UINT8 MovCr4Eax[3]; > + > + UINT8 MoveDataSelectorIntoAx[2]; UINT16 FlatDataSelector; > + UINT8 MoveFlatDataSelectorFromAxToDs[2]; > + UINT8 MoveFlatDataSelectorFromAxToEs[2]; > + UINT8 MoveFlatDataSelectorFromAxToFs[2]; > + UINT8 MoveFlatDataSelectorFromAxToGs[2]; > + UINT8 MoveFlatDataSelectorFromAxToSs[2]; > + > + // > + // Code placeholder to enable PAE Execute Disable for IA32 > + // and enable Execute Disable Bit for X64 > + // > + ENABLE_EXECUTE_DISABLE_CODE EnableExecuteDisable; > + > +#if defined (MDE_CPU_X64) > + // > + // Transition to X64 > + // > + UINT8 MovEaxCr3; > + UINT32 Cr3Value; > + UINT8 MovCr3Eax[3]; > + > + UINT8 MoveCr4ToEax[3]; > + UINT8 SetCr4Bit5[4]; > + UINT8 MoveEaxToCr4[3]; > + > + UINT8 MoveLongModeEnableMsrToEcx[5]; > + UINT8 ReadLmeMsr[2]; > + UINT8 SetLongModeEnableBit[4]; > + UINT8 WriteLmeMsr[2]; > + > + UINT8 MoveCr0ToEax[3]; > + UINT8 SetCr0PagingBit[4]; > + UINT8 MoveEaxToCr0[3]; > + //UINT8 DeadLoop[2]; > + > + UINT8 FarJmp32LongMode; UINT32 LongJmpOffset; UINT16 LongJmpSelector; > +#endif // defined (MDE_CPU_X64) > + > +#if defined (MDE_CPU_X64) > + UINT8 MovEaxOrRaxCpuDxeEntry[2]; UINTN CpuDxeEntryValue; > +#else > + UINT8 MovEaxOrRaxCpuDxeEntry; UINTN CpuDxeEntryValue; > +#endif > + UINT8 JmpToCpuDxeEntry[2]; > + > +} STARTUP_CODE; > + > +#pragma pack() > + > /** > Initialize Multi-processor support. > > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

