Update IntelFspPkg to support FSP1.1
-- Add BootLoaderTolumSize support -- Extend FspApiCallingCheck with ApiParam for BootLoaderTolumSize -- Rename all Bootloader to BootLoader as official name -- Rename Ucode to Microcode -- Remove FspSelfCheck API, because it is merged into SecPlatformInit -- Add GetFspVpdDataPointer() in FspCommonLib.h -- Document FspSecPlatformLib.h -- Reorg FSP_PLAT_DATA data structure to let it match FSP spec. -- Move helper function in FspSecCore to reduce platform enabling effort -- Fix LibraryClasses declaration in DEC file. -- Enhance PatchFv to check if it is valid FSP bin. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <Jiewen.Yao@intel.com> Reviewed-by: "Ma, Maurice" <maurice.ma@intel.com> Reviewed-by: "Rangarajan, Ravi P" <ravi.p.rangarajan@intel.com> Reviewed-by: "Mudusuru, Giri P" <giri.p.mudusuru@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17196 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -144,7 +144,7 @@ SetFspContinuationFuncParameter (
|
||||
|
||||
|
||||
/**
|
||||
This function changes the Bootloader return address in stack.
|
||||
This function changes the BootLoader return address in stack.
|
||||
|
||||
@param[in] ReturnAddress Address to return.
|
||||
|
||||
@@ -162,7 +162,7 @@ SetFspApiReturnAddress (
|
||||
}
|
||||
|
||||
/**
|
||||
This function set the API status code returned to the bootloader.
|
||||
This function set the API status code returned to the BootLoader.
|
||||
|
||||
@param[in] ReturnStatus Status code to return.
|
||||
|
||||
@@ -331,6 +331,23 @@ GetFspInfoHeader (
|
||||
return GetFspGlobalDataPointer()->FspInfoHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
This function gets the VPD data pointer.
|
||||
|
||||
@return VpdDataRgnPtr VPD data pointer.
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetFspVpdDataPointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
FSP_INFO_HEADER *FspInfoHeader;
|
||||
|
||||
FspInfoHeader = GetFspInfoHeader ();
|
||||
return (VOID *)(FspInfoHeader->ImageBase + FspInfoHeader->CfgRegionOffset);
|
||||
}
|
||||
|
||||
/**
|
||||
This function gets FSP API calling mode.
|
||||
|
||||
|
@@ -68,7 +68,7 @@ FspGetSystemMemorySize (
|
||||
}
|
||||
|
||||
/**
|
||||
Migrate bootloader data before destroying CAR.
|
||||
Migrate BootLoader data before destroying CAR.
|
||||
|
||||
**/
|
||||
VOID
|
||||
@@ -93,7 +93,7 @@ FspMigrateTemporaryMemory (
|
||||
ApiMode = GetFspApiCallingMode ();
|
||||
|
||||
//
|
||||
// Get the temporary memory range used by the bootloader
|
||||
// Get the temporary memory range used by the BootLoader
|
||||
//
|
||||
BootLoaderTempRamStart = PcdGet32(PcdTemporaryRamBase);
|
||||
BootLoaderTempRamSize = PcdGet32(PcdTemporaryRamSize) - PcdGet32(PcdFspTemporaryRamSize);
|
||||
|
@@ -89,7 +89,7 @@ FspNotificationHandler (
|
||||
|
||||
/**
|
||||
This function transfer control to the ContinuationFunc passed in by the
|
||||
bootloader.
|
||||
BootLoader.
|
||||
|
||||
**/
|
||||
VOID
|
||||
@@ -101,9 +101,9 @@ FspInitDone (
|
||||
FSP_INIT_PARAMS *FspInitParams;
|
||||
|
||||
if (GetFspApiCallingMode() == 0) {
|
||||
//
|
||||
// FspInit API is used, so jump into the ContinuationFunc
|
||||
//
|
||||
//
|
||||
// FspInit API is used, so jump into the ContinuationFunc
|
||||
//
|
||||
FspInitParams = (FSP_INIT_PARAMS *)GetFspApiParameter ();
|
||||
|
||||
//
|
||||
@@ -139,8 +139,8 @@ FspInitDone (
|
||||
}
|
||||
|
||||
/**
|
||||
This function handle NotifyPhase API call from the bootloader.
|
||||
It gives control back to the bootloader after it is handled. If the
|
||||
This function handle NotifyPhase API call from the BootLoader.
|
||||
It gives control back to the BootLoader after it is handled. If the
|
||||
Notification code is a ReadyToBoot event, this function will return
|
||||
and FSP continues the remaining execution until it reaches the DxeIpl.
|
||||
|
||||
|
183
IntelFspPkg/Library/SecFspSecPlatformLibNull/Ia32/Flat32.asm
Normal file
183
IntelFspPkg/Library/SecFspSecPlatformLibNull/Ia32/Flat32.asm
Normal file
@@ -0,0 +1,183 @@
|
||||
;; @file
|
||||
; This is the code that goes from real-mode to protected mode.
|
||||
; It consumes the reset vector, configures the stack.
|
||||
;
|
||||
; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
; This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php.
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;;
|
||||
|
||||
;
|
||||
; Define assembler characteristics
|
||||
;
|
||||
.586p
|
||||
.xmm
|
||||
.model flat, c
|
||||
|
||||
EXTRN TempRamInitApi:NEAR
|
||||
EXTRN FspInitApi:NEAR
|
||||
|
||||
;
|
||||
; Contrary to the name, this file contains 16 bit code as well.
|
||||
;
|
||||
_TEXT_REALMODE SEGMENT PARA PUBLIC USE16 'CODE'
|
||||
ASSUME CS:_TEXT_REALMODE, DS:_TEXT_REALMODE
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
;
|
||||
; Procedure: _ModuleEntryPoint
|
||||
;
|
||||
; Input: None
|
||||
;
|
||||
; Output: None
|
||||
;
|
||||
; Destroys: Assume all registers
|
||||
;
|
||||
; Description:
|
||||
;
|
||||
; Transition to non-paged flat-model protected mode from a
|
||||
; hard-coded GDT that provides exactly two descriptors.
|
||||
; This is a bare bones transition to protected mode only
|
||||
; used for a while in PEI and possibly DXE.
|
||||
;
|
||||
; After enabling protected mode, a far jump is executed to
|
||||
; transfer to PEI using the newly loaded GDT.
|
||||
;
|
||||
; Return: None
|
||||
;
|
||||
;----------------------------------------------------------------------------
|
||||
align 16
|
||||
_ModuleEntryPoint PROC C PUBLIC
|
||||
;
|
||||
; Load the GDT table in GdtDesc
|
||||
;
|
||||
mov esi, OFFSET GdtDesc
|
||||
db 66h
|
||||
lgdt fword ptr cs:[si]
|
||||
|
||||
;
|
||||
; Transition to 16 bit protected mode
|
||||
;
|
||||
mov eax, cr0 ; Get control register 0
|
||||
or eax, 00000003h ; Set PE bit (bit #0) & MP bit (bit #1)
|
||||
mov cr0, eax ; Activate protected mode
|
||||
|
||||
;
|
||||
; Now we're in 16 bit protected mode
|
||||
; Set up the selectors for 32 bit protected mode entry
|
||||
;
|
||||
mov ax, SYS_DATA_SEL
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
mov fs, ax
|
||||
mov gs, ax
|
||||
mov ss, ax
|
||||
|
||||
;
|
||||
; Transition to Flat 32 bit protected mode
|
||||
; The jump to a far pointer causes the transition to 32 bit mode
|
||||
;
|
||||
mov esi, offset ProtectedModeEntryLinearAddress
|
||||
jmp fword ptr cs:[si]
|
||||
|
||||
_ModuleEntryPoint ENDP
|
||||
|
||||
_TEXT_REALMODE ENDS
|
||||
|
||||
.code
|
||||
;
|
||||
; Protected mode portion initializes stack, configures cache, and calls C entry point
|
||||
;
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
;
|
||||
; Procedure: ProtectedModeEntryPoint
|
||||
;
|
||||
; Input: Executing in 32 Bit Protected (flat) mode
|
||||
; cs: 0-4GB
|
||||
; ds: 0-4GB
|
||||
; es: 0-4GB
|
||||
; fs: 0-4GB
|
||||
; gs: 0-4GB
|
||||
; ss: 0-4GB
|
||||
;
|
||||
; Output: This function never returns
|
||||
;
|
||||
; Destroys:
|
||||
; ecx
|
||||
; edi
|
||||
; esi
|
||||
; esp
|
||||
;
|
||||
; Description:
|
||||
; Perform any essential early platform initilaisation
|
||||
; Setup a stack
|
||||
;
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
ProtectedModeEntryPoint PROC NEAR C PUBLIC
|
||||
;
|
||||
; Dummy function. Consume 2 API to make sure they can be linked.
|
||||
;
|
||||
mov eax, TempRamInitApi
|
||||
mov eax, FspInitApi
|
||||
|
||||
; Should never return
|
||||
jmp $
|
||||
|
||||
ProtectedModeEntryPoint ENDP
|
||||
|
||||
;
|
||||
; ROM-based Global-Descriptor Table for the PEI Phase
|
||||
;
|
||||
align 16
|
||||
PUBLIC BootGdtTable
|
||||
|
||||
;
|
||||
; GDT[0]: 0x00: Null entry, never used.
|
||||
;
|
||||
NULL_SEL equ $ - GDT_BASE ; Selector [0]
|
||||
GDT_BASE:
|
||||
BootGdtTable DD 0
|
||||
DD 0
|
||||
;
|
||||
; Linear code segment descriptor
|
||||
;
|
||||
LINEAR_CODE_SEL equ $ - GDT_BASE ; Selector [0x8]
|
||||
DW 0FFFFh ; limit 0xFFFF
|
||||
DW 0 ; base 0
|
||||
DB 0
|
||||
DB 09Bh ; present, ring 0, data, expand-up, not-writable
|
||||
DB 0CFh ; page-granular, 32-bit
|
||||
DB 0
|
||||
;
|
||||
; System data segment descriptor
|
||||
;
|
||||
SYS_DATA_SEL equ $ - GDT_BASE ; Selector [0x10]
|
||||
DW 0FFFFh ; limit 0xFFFF
|
||||
DW 0 ; base 0
|
||||
DB 0
|
||||
DB 093h ; present, ring 0, data, expand-up, not-writable
|
||||
DB 0CFh ; page-granular, 32-bit
|
||||
DB 0
|
||||
|
||||
GDT_SIZE EQU $ - BootGDTtable ; Size, in bytes
|
||||
|
||||
;
|
||||
; GDT Descriptor
|
||||
;
|
||||
GdtDesc: ; GDT descriptor
|
||||
DW GDT_SIZE - 1 ; GDT limit
|
||||
DD OFFSET BootGdtTable ; GDT base address
|
||||
|
||||
ProtectedModeEntryLinearAddress LABEL FWORD
|
||||
ProtectedModeEntryLinearOffset LABEL DWORD
|
||||
DD OFFSET ProtectedModeEntryPoint ; Offset of our 32 bit code
|
||||
DW LINEAR_CODE_SEL
|
||||
|
||||
END
|
171
IntelFspPkg/Library/SecFspSecPlatformLibNull/Ia32/Flat32.s
Normal file
171
IntelFspPkg/Library/SecFspSecPlatformLibNull/Ia32/Flat32.s
Normal file
@@ -0,0 +1,171 @@
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
# Abstract:
|
||||
#
|
||||
# This is the code that goes from real-mode to protected mode.
|
||||
# It consumes the reset vector, configures the stack.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#
|
||||
# Contrary to the name, this file contains 16 bit code as well.
|
||||
#
|
||||
.text
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# Procedure: _ModuleEntryPoint
|
||||
#
|
||||
# Input: None
|
||||
#
|
||||
# Output: None
|
||||
#
|
||||
# Destroys: Assume all registers
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# Transition to non-paged flat-model protected mode from a
|
||||
# hard-coded GDT that provides exactly two descriptors.
|
||||
# This is a bare bones transition to protected mode only
|
||||
# used for a while in PEI and possibly DXE.
|
||||
#
|
||||
# After enabling protected mode, a far jump is executed to
|
||||
# transfer to PEI using the newly loaded GDT.
|
||||
#
|
||||
# Return: None
|
||||
#
|
||||
#----------------------------------------------------------------------------
|
||||
ASM_GLOBAL ASM_PFX(_ModuleEntryPoint)
|
||||
ASM_PFX(_ModuleEntryPoint):
|
||||
|
||||
#
|
||||
# Load the GDT table in GdtDesc
|
||||
#
|
||||
.byte 0x66,0xbe #movl $GdtDesc, %esi
|
||||
.long GdtDesc
|
||||
|
||||
.byte 0x66,0x2e,0x0f,0x01,0x14 #lgdt %cs:(%si)
|
||||
|
||||
#
|
||||
# Transition to 16 bit protected mode
|
||||
#
|
||||
.byte 0x0f,0x20,0xc0 #movl %cr0, %eax # Get control register 0
|
||||
.byte 0x66,0x83,0xc8,0x03 #orl $0x0000003, %eax # Set PE bit (bit #0) & MP bit (bit #1)
|
||||
.byte 0x0f,0x22,0xc0 #movl %eax, %cr0 # Activate protected mode
|
||||
|
||||
#
|
||||
# Now we're in 16 bit protected mode
|
||||
# Set up the selectors for 32 bit protected mode entry
|
||||
#
|
||||
.byte 0xb8 #movw SYS_DATA_SEL, %ax
|
||||
.word SYS_DATA_SEL
|
||||
|
||||
.byte 0x8e,0xd8 #movw %ax, %ds
|
||||
.byte 0x8e,0xc0 #movw %ax, %es
|
||||
.byte 0x8e,0xe0 #movw %ax, %fs
|
||||
.byte 0x8e,0xe8 #movw %ax, %gs
|
||||
.byte 0x8e,0xd0 #movw %ax, %ss
|
||||
|
||||
#
|
||||
# Transition to Flat 32 bit protected mode
|
||||
# The jump to a far pointer causes the transition to 32 bit mode
|
||||
#
|
||||
.byte 0x66,0xbe #movl ProtectedModeEntryLinearAddress, %esi
|
||||
.long ProtectedModeEntryLinearAddress
|
||||
.byte 0x66,0x2e,0xff,0x2c #jmp %cs:(%esi)
|
||||
|
||||
#
|
||||
# Protected mode portion initializes stack, configures cache, and calls C entry point
|
||||
#
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# Procedure: ProtectedModeEntryPoint
|
||||
#
|
||||
# Input: Executing in 32 Bit Protected (flat) mode
|
||||
# cs: 0-4GB
|
||||
# ds: 0-4GB
|
||||
# es: 0-4GB
|
||||
# fs: 0-4GB
|
||||
# gs: 0-4GB
|
||||
# ss: 0-4GB
|
||||
#
|
||||
# Output: This function never returns
|
||||
#
|
||||
# Destroys:
|
||||
# ecx
|
||||
# edi
|
||||
# esi
|
||||
# esp
|
||||
#
|
||||
# Description:
|
||||
# Perform any essential early platform initilaisation
|
||||
# Setup a stack
|
||||
#
|
||||
#----------------------------------------------------------------------------
|
||||
ProtectedModeEntryPoint:
|
||||
#
|
||||
# Dummy function. Consume 2 API to make sure they can be linked.
|
||||
#
|
||||
movl ASM_PFX(TempRamInitApi), %eax
|
||||
movl ASM_PFX(FspInitApi), %eax
|
||||
#
|
||||
# Should never return
|
||||
#
|
||||
jmp . #'$'
|
||||
|
||||
#
|
||||
# ROM-based Global-Descriptor Table for the PEI Phase
|
||||
#
|
||||
.align 16
|
||||
#
|
||||
# GDT[0]: 000h: Null entry, never used.
|
||||
#
|
||||
.equ NULL_SEL, . - GDT_BASE # Selector [0]
|
||||
GDT_BASE:
|
||||
BootGdtTable:
|
||||
.long 0
|
||||
.long 0
|
||||
#
|
||||
# Linear code segment descriptor
|
||||
#
|
||||
.equ LINEAR_CODE_SEL, . - GDT_BASE # Selector [08h]
|
||||
.word 0xFFFF # limit 0FFFFh
|
||||
.word 0 # base 0
|
||||
.byte 0
|
||||
.byte 0x9B # present, ring 0, data, expand-up, not-writable
|
||||
.byte 0xCF # page-granular, 32-bit
|
||||
.byte 0
|
||||
#
|
||||
# System data segment descriptor
|
||||
#
|
||||
.equ SYS_DATA_SEL, . - GDT_BASE # Selector [010h]
|
||||
.word 0xFFFF # limit 0FFFFh
|
||||
.word 0 # base 0
|
||||
.byte 0
|
||||
.byte 0x93 # present, ring 0, data, expand-up, not-writable
|
||||
.byte 0xCF # page-granular, 32-bit
|
||||
.byte 0
|
||||
|
||||
.equ GDT_SIZE, . - BootGdtTable # Size, in bytes
|
||||
|
||||
#
|
||||
# GDT Descriptor
|
||||
#
|
||||
GdtDesc: # GDT descriptor
|
||||
.word GDT_SIZE - 1
|
||||
.long BootGdtTable
|
||||
|
||||
ProtectedModeEntryLinearAddress:
|
||||
ProtectedModeEntryLinearOffset:
|
||||
.long ProtectedModeEntryPoint
|
||||
.word LINEAR_CODE_SEL
|
@@ -0,0 +1,51 @@
|
||||
;; @file
|
||||
; SEC CAR function
|
||||
;
|
||||
; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
; This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php.
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;;
|
||||
|
||||
;
|
||||
; Define assembler characteristics
|
||||
;
|
||||
.586p
|
||||
.xmm
|
||||
.model flat, c
|
||||
|
||||
RET_ESI MACRO
|
||||
|
||||
movd esi, mm7 ; move ReturnAddress from MM7 to ESI
|
||||
jmp esi
|
||||
|
||||
ENDM
|
||||
|
||||
.code
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; Section: SecCarInit
|
||||
;
|
||||
; Description: This function initializes the Cache for Data, Stack, and Code
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
SecCarInit PROC NEAR PUBLIC
|
||||
|
||||
;
|
||||
; Set up CAR
|
||||
;
|
||||
|
||||
xor eax, eax
|
||||
|
||||
SecCarInitExit:
|
||||
|
||||
RET_ESI
|
||||
|
||||
SecCarInit ENDP
|
||||
|
||||
END
|
@@ -0,0 +1,37 @@
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php.
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
# Abstract:
|
||||
#
|
||||
# SEC CAR function
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# Section: SecCarInit
|
||||
#
|
||||
# Description: This function initializes the Cache for Data, Stack, and Code
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
ASM_GLOBAL ASM_PFX(SecCarInit)
|
||||
ASM_PFX(SecCarInit):
|
||||
|
||||
#
|
||||
# Set up CAR
|
||||
#
|
||||
|
||||
xor %eax, %eax
|
||||
|
||||
SecCarInitExit:
|
||||
|
||||
movd %mm7, %esi #RET_ESI
|
||||
jmp *%esi
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Null instance of Platform Sec Lib.
|
||||
|
||||
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -14,16 +14,4 @@
|
||||
|
||||
#include <PiPei.h>
|
||||
|
||||
/**
|
||||
This function provides dummy function so that SecCore can pass build
|
||||
validation in IntelFspPkg. All real platform library instances needs
|
||||
to implement the real entry point in assembly.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
_ModuleEntryPoint (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@@ -19,16 +19,16 @@
|
||||
################################################################################
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = SecPlatformSecLibNull
|
||||
BASE_NAME = BaseFspSecPlatformLibNull
|
||||
FILE_GUID = 03DA99B3-DDF4-4c7e-8CCA-216FC3F1F311
|
||||
MODULE_TYPE = SEC
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = NULL
|
||||
LIBRARY_CLASS = FspSecPlatformLib
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64
|
||||
# VALID_ARCHITECTURES = IA32
|
||||
#
|
||||
|
||||
################################################################################
|
||||
@@ -40,6 +40,11 @@
|
||||
[Sources]
|
||||
PlatformSecLibNull.c
|
||||
|
||||
[Sources.IA32]
|
||||
Ia32/Flat32.asm
|
||||
Ia32/Flat32.s
|
||||
Ia32/SecCarInit.asm
|
||||
Ia32/SecCarInit.s
|
||||
|
||||
################################################################################
|
||||
#
|
||||
@@ -50,4 +55,4 @@
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
|
||||
IntelFspPkg/IntelFspPkg.dec
|
Reference in New Issue
Block a user