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

Reply via email to