mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-28 08:04:07 +02:00
ArmPlatformPkg: Introduced 'ArmPlatformSecLib'
The function only used in Secure Firmware used to be mixed with the Non-Secure/Normal functions in ArmPlatformLib. When the Secure Firmware was not required for some platforms (eg: BeagleBoard), these functions were empty functions. This new interface has been created to clean the ArmPlatformLib interface between the SEC and PEI phases. Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13260 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
315649cda2
commit
e314d564db
@ -115,6 +115,7 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
|
ArmPlatformSecLib|ArmPlatformPkg/Library/ArmPlatformSecLibNull/ArmPlatformLibNullSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNullSec.inf
|
ArmPlatformLib|ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNullSec.inf
|
||||||
ArmTrustedMonitorLib|ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf
|
ArmTrustedMonitorLib|ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEbSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbSecLibRTSM/ArmRealViewEbSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEbLibSec.inf
|
||||||
|
|
||||||
[BuildOptions]
|
[BuildOptions]
|
||||||
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A8 --fpu=softvfp -I$(WORKSPACE)/ArmPlatformPkg/ArmRealViewEbPkg/Include/Platform
|
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A8 --fpu=softvfp -I$(WORKSPACE)/ArmPlatformPkg/ArmRealViewEbPkg/Include/Platform
|
||||||
|
@ -40,7 +40,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEbSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbSecLibRTSM/ArmRealViewEbSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEbLibSec.inf
|
||||||
|
|
||||||
[BuildOptions]
|
[BuildOptions]
|
||||||
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A9 --fpu=softvfp -I$(WORKSPACE)/ArmPlatformPkg/ArmRealViewEbPkg/Include/Platform
|
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A9 --fpu=softvfp -I$(WORKSPACE)/ArmPlatformPkg/ArmRealViewEbPkg/Include/Platform
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
#/* @file
|
||||||
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#*/
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = ArmRealViewEbLibSec
|
||||||
|
FILE_GUID = 5d1013ae-57b8-4a37-87d8-f5bf70e49059
|
||||||
|
MODULE_TYPE = SEC
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = ArmPlatformLib
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
EmbeddedPkg/EmbeddedPkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
IoLib
|
||||||
|
ArmLib
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
ArmRealViewEb.c
|
||||||
|
|
||||||
|
[FeaturePcd]
|
||||||
|
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
||||||
|
|
||||||
|
[FixedPcd]
|
||||||
|
gArmTokenSpaceGuid.PcdSystemMemoryBase
|
||||||
|
gArmTokenSpaceGuid.PcdSystemMemorySize
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#include <AsmMacroIoLib.h>
|
#include <AsmMacroIoLib.h>
|
||||||
#include <Base.h>
|
#include <Base.h>
|
||||||
#include <Library/ArmPlatformLib.h>
|
#include <Library/ArmPlatformSecLib.h>
|
||||||
#include <ArmPlatform.h>
|
#include <ArmPlatform.h>
|
||||||
#include <AutoGen.h>
|
#include <AutoGen.h>
|
||||||
|
|
||||||
@ -21,7 +21,7 @@
|
|||||||
.align 3
|
.align 3
|
||||||
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
||||||
GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
GCC_ASM_EXPORT(ArmPlatformSecBootMemoryInit)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Call at the beginning of the platform boot up
|
Call at the beginning of the platform boot up
|
||||||
@ -33,7 +33,11 @@ GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
ASM_PFX(ArmPlatformSecBootAction):
|
ASM_PFX(ArmPlatformSecBootAction):
|
||||||
bx lr
|
LoadConstantToReg (ARM_EB_SYS_FLAGS_NV_REG, r0)
|
||||||
|
ldr r0, [r0]
|
||||||
|
cmp r0, #0
|
||||||
|
bxeq lr
|
||||||
|
bxne r0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the memory where the initial stacks will reside
|
Initialize the memory where the initial stacks will reside
|
||||||
@ -45,6 +49,6 @@ ASM_PFX(ArmPlatformSecBootAction):
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ASM_PFX(ArmPlatformInitializeBootMemory):
|
ASM_PFX(ArmPlatformSecBootMemoryInit):
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -13,17 +13,17 @@
|
|||||||
|
|
||||||
#include <AsmMacroIoLib.h>
|
#include <AsmMacroIoLib.h>
|
||||||
#include <Base.h>
|
#include <Base.h>
|
||||||
#include <Library/ArmPlatformLib.h>
|
#include <Library/ArmPlatformSecLib.h>
|
||||||
#include <ArmPlatform.h>
|
#include <ArmPlatform.h>
|
||||||
#include <AutoGen.h>
|
#include <AutoGen.h>
|
||||||
|
|
||||||
INCLUDE AsmMacroIoLib.inc
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
EXPORT ArmPlatformSecBootAction
|
EXPORT ArmPlatformSecBootAction
|
||||||
EXPORT ArmPlatformInitializeBootMemory
|
EXPORT ArmPlatformSecBootMemoryInit
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
AREA CTA9x4BootMode, CODE, READONLY
|
AREA ArmRealviewEbBootMode, CODE, READONLY
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Call at the beginning of the platform boot up
|
Call at the beginning of the platform boot up
|
||||||
@ -35,7 +35,11 @@
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
ArmPlatformSecBootAction
|
ArmPlatformSecBootAction
|
||||||
bx lr
|
LoadConstantToReg (ARM_EB_SYS_FLAGS_NV_REG, r0)
|
||||||
|
ldr r0, [r0]
|
||||||
|
cmp r0, #0
|
||||||
|
bxeq lr
|
||||||
|
bxne r0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the memory where the initial stacks will reside
|
Initialize the memory where the initial stacks will reside
|
||||||
@ -47,6 +51,6 @@ ArmPlatformSecBootAction
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ArmPlatformInitializeBootMemory
|
ArmPlatformSecBootMemoryInit
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011, ARM Limited. All rights reserved.
|
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are licensed and made available under the terms and conditions of the BSD License
|
* are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -13,7 +13,8 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
#include <Library/IoLib.h>
|
#include <Library/IoLib.h>
|
||||||
#include <Library/ArmPlatformLib.h>
|
#include <Library/ArmLib.h>
|
||||||
|
#include <Library/ArmPlatformSecLib.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
@ -30,7 +31,7 @@
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
ArmPlatformTrustzoneInit (
|
ArmPlatformSecTrustzoneInit (
|
||||||
IN UINTN MpId
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -44,12 +45,18 @@ ArmPlatformTrustzoneInit (
|
|||||||
For example, some L2x0 requires to be initialized in Secure World
|
For example, some L2x0 requires to be initialized in Secure World
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
RETURN_STATUS
|
||||||
ArmPlatformSecInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
// If it is not the primary core then there is nothing to do
|
||||||
|
if (!IS_PRIMARY_CORE(MpId)) {
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
// Do nothing yet
|
// Do nothing yet
|
||||||
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,5 +1,5 @@
|
|||||||
#/* @file
|
#/* @file
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -17,7 +17,7 @@
|
|||||||
FILE_GUID = 6e02ebe0-1d96-11e0-b9cb-0002a5d5c51b
|
FILE_GUID = 6e02ebe0-1d96-11e0-b9cb-0002a5d5c51b
|
||||||
MODULE_TYPE = BASE
|
MODULE_TYPE = BASE
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
LIBRARY_CLASS = ArmPlatformLib
|
LIBRARY_CLASS = ArmPlatformSecLib
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
@ -31,7 +31,6 @@
|
|||||||
ArmLib
|
ArmLib
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
ArmRealViewEb.c
|
|
||||||
ArmRealViewEbSec.c
|
ArmRealViewEbSec.c
|
||||||
ArmRealViewEbBoot.asm | RVCT
|
ArmRealViewEbBoot.asm | RVCT
|
||||||
ArmRealViewEbBoot.S | GCC
|
ArmRealViewEbBoot.S | GCC
|
||||||
@ -41,3 +40,6 @@
|
|||||||
|
|
||||||
[FixedPcd]
|
[FixedPcd]
|
||||||
gArmTokenSpaceGuid.PcdFvBaseAddress
|
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -54,7 +54,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/ArmVExpressSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibCTA9x4/ArmVExpressSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/ArmVExpressLibSec.inf
|
||||||
|
|
||||||
# Uncomment to turn on GDB stub in SEC.
|
# Uncomment to turn on GDB stub in SEC.
|
||||||
#DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf
|
#DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -48,7 +48,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
|
||||||
|
|
||||||
[BuildOptions]
|
[BuildOptions]
|
||||||
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -48,7 +48,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
|
||||||
|
|
||||||
[BuildOptions]
|
[BuildOptions]
|
||||||
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -42,7 +42,8 @@
|
|||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
||||||
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressSecLib.inf
|
ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
|
||||||
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
|
||||||
|
|
||||||
# Uncomment to turn on GDB stub in SEC.
|
# Uncomment to turn on GDB stub in SEC.
|
||||||
#DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf
|
#DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf
|
||||||
|
@ -1,57 +1,53 @@
|
|||||||
#/* @file
|
#/* @file
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# 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
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
# http://opensource.org/licenses/bsd-license.php
|
||||||
#
|
#
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#
|
#
|
||||||
#*/
|
#*/
|
||||||
|
|
||||||
[Defines]
|
[Defines]
|
||||||
INF_VERSION = 0x00010005
|
INF_VERSION = 0x00010005
|
||||||
BASE_NAME = CTA9x4ArmVExpressLib
|
BASE_NAME = CTA9x4ArmVExpressLibSec
|
||||||
FILE_GUID = b16c63a0-f417-11df-b3af-0002a5d5c51b
|
FILE_GUID = b16c63a0-f417-11df-b3af-0002a5d5c51b
|
||||||
MODULE_TYPE = BASE
|
MODULE_TYPE = BASE
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
LIBRARY_CLASS = ArmPlatformLib
|
LIBRARY_CLASS = ArmPlatformLib
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
MdeModulePkg/MdeModulePkg.dec
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
EmbeddedPkg/EmbeddedPkg.dec
|
EmbeddedPkg/EmbeddedPkg.dec
|
||||||
ArmPkg/ArmPkg.dec
|
ArmPkg/ArmPkg.dec
|
||||||
ArmPlatformPkg/ArmPlatformPkg.dec
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
ArmLib
|
IoLib
|
||||||
ArmTrustZoneLib
|
ArmLib
|
||||||
ArmPlatformSysConfigLib
|
ArmTrustZoneLib
|
||||||
ArmPlatformSecExtraActionLib
|
PL341DmcLib
|
||||||
IoLib
|
PL301AxiLib
|
||||||
L2X0CacheLib
|
L2X0CacheLib
|
||||||
PL301AxiLib
|
SerialPortLib
|
||||||
PL341DmcLib
|
|
||||||
PL35xSmcLib
|
[Sources.common]
|
||||||
SerialPortLib
|
CTA9x4.c
|
||||||
|
|
||||||
[Sources.common]
|
[FeaturePcd]
|
||||||
CTA9x4Sec.c
|
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
||||||
CTA9x4.c
|
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
||||||
CTA9x4Boot.asm | RVCT
|
|
||||||
CTA9x4Boot.S | GCC
|
[FixedPcd]
|
||||||
|
gArmTokenSpaceGuid.PcdTrustzoneSupport
|
||||||
[FeaturePcd]
|
gArmTokenSpaceGuid.PcdSystemMemoryBase
|
||||||
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
gArmTokenSpaceGuid.PcdSystemMemorySize
|
||||||
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
|
||||||
|
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||||
[FixedPcd]
|
|
||||||
gArmTokenSpaceGuid.PcdTrustzoneSupport
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
||||||
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
|
||||||
|
|
||||||
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
|
||||||
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
|
@ -0,0 +1,50 @@
|
|||||||
|
#/* @file
|
||||||
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#*/
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = RTSMArmVExpressLibSec
|
||||||
|
FILE_GUID = a79eed97-4b98-4974-9690-37b32d6a5b56
|
||||||
|
MODULE_TYPE = BASE
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = ArmPlatformLib
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
EmbeddedPkg/EmbeddedPkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
IoLib
|
||||||
|
ArmLib
|
||||||
|
SerialPortLib
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
RTSM.c
|
||||||
|
RTSMHelper.asm | RVCT
|
||||||
|
RTSMHelper.S | GCC
|
||||||
|
|
||||||
|
[FeaturePcd]
|
||||||
|
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdStandalone
|
||||||
|
|
||||||
|
[FixedPcd]
|
||||||
|
gArmTokenSpaceGuid.PcdSystemMemoryBase
|
||||||
|
gArmTokenSpaceGuid.PcdSystemMemorySize
|
||||||
|
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
@ -0,0 +1,59 @@
|
|||||||
|
#/* @file
|
||||||
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#*/
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = CTA9x4ArmVExpressLib
|
||||||
|
FILE_GUID = aac05341-56df-4a77-b20f-f5daa456bd90
|
||||||
|
MODULE_TYPE = BASE
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = ArmPlatformSecLib
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
EmbeddedPkg/EmbeddedPkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
ArmLib
|
||||||
|
ArmTrustZoneLib
|
||||||
|
ArmPlatformLib
|
||||||
|
ArmPlatformSysConfigLib
|
||||||
|
ArmPlatformSecExtraActionLib
|
||||||
|
IoLib
|
||||||
|
L2X0CacheLib
|
||||||
|
PL301AxiLib
|
||||||
|
PL341DmcLib
|
||||||
|
PL35xSmcLib
|
||||||
|
SerialPortLib
|
||||||
|
|
||||||
|
[Sources.common]
|
||||||
|
CTA9x4Sec.c
|
||||||
|
CTA9x4Boot.asm | RVCT
|
||||||
|
CTA9x4Boot.S | GCC
|
||||||
|
|
||||||
|
[FeaturePcd]
|
||||||
|
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdStandalone
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec
|
||||||
|
|
||||||
|
[FixedPcd]
|
||||||
|
gArmTokenSpaceGuid.PcdTrustzoneSupport
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -22,7 +22,7 @@
|
|||||||
.align 3
|
.align 3
|
||||||
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
||||||
GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
GCC_ASM_EXPORT(ArmPlatformSecBootMemoryInit)
|
||||||
GCC_ASM_IMPORT(PL35xSmcInitialize)
|
GCC_ASM_IMPORT(PL35xSmcInitialize)
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -82,7 +82,7 @@ ASM_PFX(ArmPlatformSecBootAction):
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ASM_PFX(ArmPlatformInitializeBootMemory):
|
ASM_PFX(ArmPlatformSecBootMemoryInit):
|
||||||
mov r5, lr
|
mov r5, lr
|
||||||
|
|
||||||
//
|
//
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -21,7 +21,7 @@
|
|||||||
INCLUDE AsmMacroIoLib.inc
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
EXPORT ArmPlatformSecBootAction
|
EXPORT ArmPlatformSecBootAction
|
||||||
EXPORT ArmPlatformInitializeBootMemory
|
EXPORT ArmPlatformSecBootMemoryInit
|
||||||
IMPORT PL35xSmcInitialize
|
IMPORT PL35xSmcInitialize
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
@ -84,7 +84,7 @@ ArmPlatformSecBootAction
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ArmPlatformInitializeBootMemory
|
ArmPlatformSecBootMemoryInit
|
||||||
mov r5, lr
|
mov r5, lr
|
||||||
|
|
||||||
//
|
//
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
ArmPlatformTrustzoneInit (
|
ArmPlatformSecTrustzoneInit (
|
||||||
IN UINTN MpId
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -114,10 +114,16 @@ ArmPlatformTrustzoneInit (
|
|||||||
For example, some L2x0 requires to be initialized in Secure World
|
For example, some L2x0 requires to be initialized in Secure World
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
RETURN_STATUS
|
||||||
ArmPlatformSecInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
IN UINTN MpId
|
||||||
) {
|
)
|
||||||
|
{
|
||||||
|
// If it is not the primary core then there is nothing to do
|
||||||
|
if (!IS_PRIMARY_CORE(MpId)) {
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
// The L2x0 controller must be intialize in Secure World
|
// The L2x0 controller must be intialize in Secure World
|
||||||
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase),
|
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase),
|
||||||
PL310_TAG_LATENCIES(L2x0_LATENCY_8_CYCLES,L2x0_LATENCY_8_CYCLES,L2x0_LATENCY_8_CYCLES),
|
PL310_TAG_LATENCIES(L2x0_LATENCY_8_CYCLES,L2x0_LATENCY_8_CYCLES,L2x0_LATENCY_8_CYCLES),
|
||||||
@ -127,4 +133,16 @@ ArmPlatformSecInitialize (
|
|||||||
|
|
||||||
// Initialize the System Configuration
|
// Initialize the System Configuration
|
||||||
ArmPlatformSysConfigInitialize ();
|
ArmPlatformSysConfigInitialize ();
|
||||||
|
|
||||||
|
// If we skip the PEI Core we could want to initialize the DRAM in the SEC phase.
|
||||||
|
// If we are in standalone, we need the initialization to copy the UEFI firmware into DRAM
|
||||||
|
if ((FeaturePcdGet (PcdSystemMemoryInitializeInSec)) || (FeaturePcdGet (PcdStandalone) == FALSE)) {
|
||||||
|
// If it is not a standalone build ensure the PcdSystemMemoryInitializeInSec has been set
|
||||||
|
ASSERT(FeaturePcdGet (PcdSystemMemoryInitializeInSec) == TRUE);
|
||||||
|
|
||||||
|
// Initialize system memory (DRAM)
|
||||||
|
ArmPlatformInitializeSystemMemory ();
|
||||||
|
}
|
||||||
|
|
||||||
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
#/* @file
|
#/* @file
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -13,11 +13,11 @@
|
|||||||
|
|
||||||
[Defines]
|
[Defines]
|
||||||
INF_VERSION = 0x00010005
|
INF_VERSION = 0x00010005
|
||||||
BASE_NAME = RTSMArmVExpressLib
|
BASE_NAME = RTSMArmVExpressSecLib
|
||||||
FILE_GUID = 6352e3a0-ed14-4613-bf90-d316014dd142
|
FILE_GUID = 1fdaabb0-ab7d-480c-91ff-428dc1546f3a
|
||||||
MODULE_TYPE = BASE
|
MODULE_TYPE = BASE
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
LIBRARY_CLASS = ArmPlatformLib
|
LIBRARY_CLASS = ArmPlatformSecLib
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
@ -33,14 +33,11 @@
|
|||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
RTSMSec.c
|
RTSMSec.c
|
||||||
RTSM.c
|
|
||||||
RTSMBoot.asm | RVCT
|
RTSMBoot.asm | RVCT
|
||||||
RTSMBoot.S | GCC
|
RTSMBoot.S | GCC
|
||||||
RTSMHelper.asm | RVCT
|
RTSMHelper.asm | RVCT
|
||||||
RTSMHelper.S | GCC
|
RTSMHelper.S | GCC
|
||||||
|
|
||||||
[Protocols]
|
|
||||||
|
|
||||||
[FeaturePcd]
|
[FeaturePcd]
|
||||||
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
gEmbeddedTokenSpaceGuid.PcdCacheEnable
|
||||||
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping
|
||||||
@ -48,3 +45,6 @@
|
|||||||
|
|
||||||
[FixedPcd]
|
[FixedPcd]
|
||||||
gArmTokenSpaceGuid.PcdFvBaseAddress
|
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
|
||||||
|
gArmTokenSpaceGuid.PcdArmPrimaryCore
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -21,7 +21,7 @@
|
|||||||
.align 3
|
.align 3
|
||||||
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
||||||
GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
GCC_ASM_EXPORT(ArmPlatformSecBootMemoryInit)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Call at the beginning of the platform boot up
|
Call at the beginning of the platform boot up
|
||||||
@ -45,6 +45,6 @@ ASM_PFX(ArmPlatformSecBootAction):
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ASM_PFX(ArmPlatformInitializeBootMemory):
|
ASM_PFX(ArmPlatformSecBootMemoryInit):
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -20,7 +20,7 @@
|
|||||||
INCLUDE AsmMacroIoLib.inc
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
EXPORT ArmPlatformSecBootAction
|
EXPORT ArmPlatformSecBootAction
|
||||||
EXPORT ArmPlatformInitializeBootMemory
|
EXPORT ArmPlatformSecBootMemoryInit
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
AREA RTSMVExpressBootMode, CODE, READONLY
|
AREA RTSMVExpressBootMode, CODE, READONLY
|
||||||
@ -47,6 +47,6 @@ ArmPlatformSecBootAction
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ArmPlatformInitializeBootMemory
|
ArmPlatformSecBootMemoryInit
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -0,0 +1,71 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
#include <AsmMacroIoLib.h>
|
||||||
|
#include <Base.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
#include <AutoGen.h>
|
||||||
|
#.include AsmMacroIoLib.inc
|
||||||
|
|
||||||
|
#include <Chipset/ArmCortexA9.h>
|
||||||
|
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
|
||||||
|
GCC_ASM_EXPORT(ArmGetCpuCountPerCluster)
|
||||||
|
|
||||||
|
# IN None
|
||||||
|
# OUT r0 = SCU Base Address
|
||||||
|
ASM_PFX(ArmGetScuBaseAddress):
|
||||||
|
# Read Configuration Base Address Register. ArmCBar cannot be called to get
|
||||||
|
# the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
||||||
|
# offset 0x0000 from the Private Memory Region.
|
||||||
|
mrc p15, 4, r0, c15, c0, 0
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
# IN None
|
||||||
|
# OUT r0 = number of cores present in the system
|
||||||
|
ASM_PFX(ArmGetCpuCountPerCluster):
|
||||||
|
stmfd SP!, {r1-r2}
|
||||||
|
|
||||||
|
# Read CP15 MIDR
|
||||||
|
mrc p15, 0, r1, c0, c0, 0
|
||||||
|
|
||||||
|
# Check if the CPU is A15
|
||||||
|
mov r1, r1, LSR #4
|
||||||
|
LoadConstantToReg (ARM_CPU_TYPE_MASK, r0)
|
||||||
|
and r1, r1, r0
|
||||||
|
|
||||||
|
LoadConstantToReg (ARM_CPU_TYPE_A15, r0)
|
||||||
|
cmp r1, r0
|
||||||
|
beq _Read_cp15_reg
|
||||||
|
|
||||||
|
_CPU_is_not_A15:
|
||||||
|
mov r2, lr @ Save link register
|
||||||
|
bl ArmGetScuBaseAddress @ Read SCU Base Address
|
||||||
|
mov lr, r2 @ Restore link register val
|
||||||
|
ldr r0, [r0, #A9_SCU_CONFIG_OFFSET] @ Read SCU Config reg to get CPU count
|
||||||
|
b _Return
|
||||||
|
|
||||||
|
_Read_cp15_reg:
|
||||||
|
mrc p15, 1, r0, c9, c0, 2 @ Read C9 register of CP15 to get CPU count
|
||||||
|
lsr r0, #24
|
||||||
|
|
||||||
|
_Return:
|
||||||
|
and r0, r0, #3
|
||||||
|
# Add '1' to the number of CPU on the Cluster
|
||||||
|
add r0, r0, #1
|
||||||
|
ldmfd SP!, {r1-r2}
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
|
@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <AsmMacroIoLib.h>
|
||||||
|
#include <Base.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
|
#include <Chipset/ArmCortexA9.h>
|
||||||
|
|
||||||
|
#include <AutoGen.h>
|
||||||
|
|
||||||
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
|
EXPORT ArmGetCpuCountPerCluster
|
||||||
|
|
||||||
|
AREA RTSMHelper, CODE, READONLY
|
||||||
|
|
||||||
|
// IN None
|
||||||
|
// OUT r0 = SCU Base Address
|
||||||
|
ArmGetScuBaseAddress
|
||||||
|
// Read Configuration Base Address Register. ArmCBar cannot be called to get
|
||||||
|
// the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
||||||
|
// offset 0x0000 from the Private Memory Region.
|
||||||
|
mrc p15, 4, r0, c15, c0, 0
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
// IN None
|
||||||
|
// OUT r0 = number of cores present in the system
|
||||||
|
ArmGetCpuCountPerCluster
|
||||||
|
stmfd SP!, {r1-r2}
|
||||||
|
|
||||||
|
// Read CP15 MIDR
|
||||||
|
mrc p15, 0, r1, c0, c0, 0
|
||||||
|
|
||||||
|
// Check if the CPU is A15
|
||||||
|
mov r1, r1, LSR #4
|
||||||
|
mov r0, #ARM_CPU_TYPE_MASK
|
||||||
|
and r1, r1, r0
|
||||||
|
|
||||||
|
mov r0, #ARM_CPU_TYPE_A15
|
||||||
|
cmp r1, r0
|
||||||
|
beq _Read_cp15_reg
|
||||||
|
|
||||||
|
_CPU_is_not_A15
|
||||||
|
mov r2, lr ; Save link register
|
||||||
|
bl ArmGetScuBaseAddress ; Read SCU Base Address
|
||||||
|
mov lr, r2 ; Restore link register val
|
||||||
|
ldr r0, [r0, #A9_SCU_CONFIG_OFFSET] ; Read SCU Config reg to get CPU count
|
||||||
|
b _Return
|
||||||
|
|
||||||
|
_Read_cp15_reg
|
||||||
|
mrc p15, 1, r0, c9, c0, 2 ; Read C9 register of CP15 to get CPU count
|
||||||
|
lsr r0, #24
|
||||||
|
|
||||||
|
|
||||||
|
_Return
|
||||||
|
and r0, r0, #3
|
||||||
|
// Add '1' to the number of CPU on the Cluster
|
||||||
|
add r0, r0, #1
|
||||||
|
ldmfd SP!, {r1-r2}
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
END
|
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
ArmPlatformTrustzoneInit (
|
ArmPlatformSecTrustzoneInit (
|
||||||
IN UINTN MpId
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -44,11 +44,16 @@ ArmPlatformTrustzoneInit (
|
|||||||
For example, some L2x0 requires to be initialized in Secure World
|
For example, some L2x0 requires to be initialized in Secure World
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
RETURN_STATUS
|
||||||
ArmPlatformSecInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
// If it is not the primary core then there is nothing to do
|
||||||
|
if (!IS_PRIMARY_CORE(MpId)) {
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
// Configure periodic timer (TIMER0) for 1MHz operation
|
// Configure periodic timer (TIMER0) for 1MHz operation
|
||||||
MmioOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, SP810_SYS_CTRL_TIMER0_TIMCLK);
|
MmioOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, SP810_SYS_CTRL_TIMER0_TIMCLK);
|
||||||
// Configure 1MHz clock
|
// Configure 1MHz clock
|
||||||
@ -57,6 +62,8 @@ ArmPlatformSecInitialize (
|
|||||||
MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER2_EN, SP810_SYS_CTRL_TIMER2_TIMCLK);
|
MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER2_EN, SP810_SYS_CTRL_TIMER2_TIMCLK);
|
||||||
// Configure SP810 to use 1MHz clock and disable
|
// Configure SP810 to use 1MHz clock and disable
|
||||||
MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER3_EN, SP810_SYS_CTRL_TIMER3_TIMCLK);
|
MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER3_EN, SP810_SYS_CTRL_TIMER3_TIMCLK);
|
||||||
|
|
||||||
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -41,21 +41,6 @@ typedef struct {
|
|||||||
UINT64 NumberOfBytes;
|
UINT64 NumberOfBytes;
|
||||||
} ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR;
|
} ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR;
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize the memory where the initial stacks will reside
|
|
||||||
|
|
||||||
This memory can contain the initial stacks (Secure and Secure Monitor stacks).
|
|
||||||
In some platform, this region is already initialized and the implementation of this function can
|
|
||||||
do nothing. This memory can also represent the Secure RAM.
|
|
||||||
This function is called before the satck has been set up. Its implementation must ensure the stack
|
|
||||||
pointer is not used (probably required to use assembly language)
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformInitializeBootMemory (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the current Boot Mode
|
Return the current Boot Mode
|
||||||
|
|
||||||
@ -69,45 +54,6 @@ ArmPlatformGetBootMode (
|
|||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
Call at the beginning of the platform boot up
|
|
||||||
|
|
||||||
This function allows the firmware platform to do extra actions at the early
|
|
||||||
stage of the platform power up.
|
|
||||||
|
|
||||||
Note: This function must be implemented in assembler as there is no stack set up yet
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformSecBootAction (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize controllers that must setup at the early stage
|
|
||||||
|
|
||||||
Some peripherals must be initialized in Secure World.
|
|
||||||
For example, some L2x0 requires to be initialized in Secure World
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformSecInitialize (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Call before jumping to Normal World
|
|
||||||
|
|
||||||
This function allows the firmware platform to do extra actions before
|
|
||||||
jumping to the Normal World
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformSecExtraAction (
|
|
||||||
IN UINTN MpId,
|
|
||||||
OUT UINTN* JumpAddress
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize controllers that must setup in the normal world
|
Initialize controllers that must setup in the normal world
|
||||||
|
|
||||||
@ -131,18 +77,6 @@ ArmPlatformInitializeSystemMemory (
|
|||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize the Secure peripherals and memory regions
|
|
||||||
|
|
||||||
If Trustzone is supported by your platform then this function makes the required initialization
|
|
||||||
of the secure peripherals and memory regions.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformTrustzoneInit (
|
|
||||||
IN UINTN MpId
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the Virtual Memory Map of your platform
|
Return the Virtual Memory Map of your platform
|
||||||
|
|
||||||
|
84
ArmPlatformPkg/Include/Library/ArmPlatformSecLib.h
Normal file
84
ArmPlatformPkg/Include/Library/ArmPlatformSecLib.h
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
/** @file
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _ARMPLATFORMSECLIB_H_
|
||||||
|
#define _ARMPLATFORMSECLIB_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the memory where the initial stacks will reside
|
||||||
|
|
||||||
|
This memory can contain the initial stacks (Secure and Secure Monitor stacks).
|
||||||
|
In some platform, this region is already initialized and the implementation of this function can
|
||||||
|
do nothing. This memory can also represent the Secure RAM.
|
||||||
|
This function is called before the satck has been set up. Its implementation must ensure the stack
|
||||||
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ArmPlatformSecBootMemoryInit (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Call at the beginning of the platform boot up
|
||||||
|
|
||||||
|
This function allows the firmware platform to do extra actions at the early
|
||||||
|
stage of the platform power up.
|
||||||
|
|
||||||
|
Note: This function must be implemented in assembler as there is no stack set up yet
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ArmPlatformSecBootAction (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize controllers that must setup at the early stage
|
||||||
|
|
||||||
|
Some peripherals must be initialized in Secure World.
|
||||||
|
For example: Some L2 controller, interconnect, clock, DMC, etc
|
||||||
|
|
||||||
|
**/
|
||||||
|
RETURN_STATUS
|
||||||
|
ArmPlatformSecInitialize (
|
||||||
|
IN UINTN MpId
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Call before jumping to Normal World
|
||||||
|
|
||||||
|
This function allows the firmware platform to do extra actions before
|
||||||
|
jumping to the Normal World
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ArmPlatformSecExtraAction (
|
||||||
|
IN UINTN MpId,
|
||||||
|
OUT UINTN* JumpAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the Secure peripherals and memory regions
|
||||||
|
|
||||||
|
If Trustzone is supported by your platform then this function makes the required initialization
|
||||||
|
of the secure peripherals and memory regions.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ArmPlatformSecTrustzoneInit (
|
||||||
|
IN UINTN MpId
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -18,7 +18,7 @@
|
|||||||
.align 3
|
.align 3
|
||||||
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
GCC_ASM_EXPORT(ArmPlatformSecBootAction)
|
||||||
GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
GCC_ASM_EXPORT(ArmPlatformSecBootMemoryInit)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Call at the beginning of the platform boot up
|
Call at the beginning of the platform boot up
|
||||||
@ -42,6 +42,6 @@ ASM_PFX(ArmPlatformSecBootAction):
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ASM_PFX(ArmPlatformInitializeBootMemory):
|
ASM_PFX(ArmPlatformSecBootMemoryInit):
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
// Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
//
|
//
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -15,10 +15,10 @@
|
|||||||
#include <AutoGen.h>
|
#include <AutoGen.h>
|
||||||
|
|
||||||
EXPORT ArmPlatformSecBootAction
|
EXPORT ArmPlatformSecBootAction
|
||||||
EXPORT ArmPlatformInitializeBootMemory
|
EXPORT ArmPlatformSecBootMemoryInit
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
AREA ArmPlatformLibBoot, CODE, READONLY
|
AREA ArmPlatformSecLibBoot, CODE, READONLY
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Call at the beginning of the platform boot up
|
Call at the beginning of the platform boot up
|
||||||
@ -42,6 +42,6 @@ ArmPlatformSecBootAction
|
|||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
ArmPlatformInitializeBootMemory
|
ArmPlatformSecBootMemoryInit
|
||||||
// The SMC does not need to be initialized for RTSM
|
// The SMC does not need to be initialized for RTSM
|
||||||
bx lr
|
bx lr
|
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011, ARM Limited. All rights reserved.
|
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program and the accompanying materials
|
* This program and the accompanying materials
|
||||||
* are licensed and made available under the terms and conditions of the BSD License
|
* are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
ArmPlatformTrustzoneInit (
|
ArmPlatformSecTrustzoneInit (
|
||||||
IN UINTN MpId
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -43,12 +43,18 @@ ArmPlatformTrustzoneInit (
|
|||||||
For example, some L2x0 requires to be initialized in Secure World
|
For example, some L2x0 requires to be initialized in Secure World
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
RETURN_STATUS
|
||||||
ArmPlatformSecInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
IN UINTN MpId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
// If it is not the primary core then there is nothing to do
|
||||||
|
if (!IS_PRIMARY_CORE(MpId)) {
|
||||||
|
return RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
// Do nothing yet
|
// Do nothing yet
|
||||||
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -14,10 +14,10 @@
|
|||||||
[Defines]
|
[Defines]
|
||||||
INF_VERSION = 0x00010005
|
INF_VERSION = 0x00010005
|
||||||
BASE_NAME = ArmPlatformLibSecNull
|
BASE_NAME = ArmPlatformLibSecNull
|
||||||
FILE_GUID = 83333d9e-b00d-44cb-819c-e154c7efe79a
|
FILE_GUID = a2cf63c6-d44f-4cd0-8af6-722a0138c021
|
||||||
MODULE_TYPE = BASE
|
MODULE_TYPE = BASE
|
||||||
VERSION_STRING = 1.0
|
VERSION_STRING = 1.0
|
||||||
LIBRARY_CLASS = ArmPlatformLib
|
LIBRARY_CLASS = ArmPlatformSecLib
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
@ -30,7 +30,6 @@
|
|||||||
DebugLib
|
DebugLib
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
ArmPlatformLibNull.c
|
|
||||||
ArmPlatformLibNullSec.c
|
ArmPlatformLibNullSec.c
|
||||||
ArmPlatformLibNullBoot.asm | RVCT
|
ArmPlatformLibNullBoot.asm | RVCT
|
||||||
ArmPlatformLibNullBoot.S | GCC
|
ArmPlatformLibNullBoot.S | GCC
|
@ -19,7 +19,6 @@
|
|||||||
#include <Library/BaseMemoryLib.h>
|
#include <Library/BaseMemoryLib.h>
|
||||||
#include <Library/SerialPortLib.h>
|
#include <Library/SerialPortLib.h>
|
||||||
#include <Library/ArmGicLib.h>
|
#include <Library/ArmGicLib.h>
|
||||||
#include <Library/ArmCpuLib.h>
|
|
||||||
|
|
||||||
#include "SecInternal.h"
|
#include "SecInternal.h"
|
||||||
|
|
||||||
@ -50,7 +49,11 @@ CEntryPoint (
|
|||||||
if (FixedPcdGet32 (PcdVFPEnabled)) {
|
if (FixedPcdGet32 (PcdVFPEnabled)) {
|
||||||
ArmEnableVFP();
|
ArmEnableVFP();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize peripherals that must be done at the early stage
|
||||||
|
// Example: Some L2 controller, interconnect, clock, DMC, etc
|
||||||
|
ArmPlatformSecInitialize (MpId);
|
||||||
|
|
||||||
// Primary CPU clears out the SCU tag RAMs, secondaries wait
|
// Primary CPU clears out the SCU tag RAMs, secondaries wait
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
if (IS_PRIMARY_CORE(MpId)) {
|
||||||
if (ArmIsMpCore()) {
|
if (ArmIsMpCore()) {
|
||||||
@ -93,19 +96,6 @@ CEntryPoint (
|
|||||||
// Enable Full Access to CoProcessors
|
// Enable Full Access to CoProcessors
|
||||||
ArmWriteCpacr (CPACR_CP_FULL_ACCESS);
|
ArmWriteCpacr (CPACR_CP_FULL_ACCESS);
|
||||||
|
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
|
||||||
// Initialize peripherals that must be done at the early stage
|
|
||||||
// Example: Some L2x0 controllers must be initialized in Secure World
|
|
||||||
ArmPlatformSecInitialize ();
|
|
||||||
|
|
||||||
// If we skip the PEI Core we could want to initialize the DRAM in the SEC phase.
|
|
||||||
// If we are in standalone, we need the initialization to copy the UEFI firmware into DRAM
|
|
||||||
if (FeaturePcdGet (PcdSystemMemoryInitializeInSec)) {
|
|
||||||
// Initialize system memory (DRAM)
|
|
||||||
ArmPlatformInitializeSystemMemory ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test if Trustzone is supported on this platform
|
// Test if Trustzone is supported on this platform
|
||||||
if (FixedPcdGetBool (PcdTrustzoneSupport)) {
|
if (FixedPcdGetBool (PcdTrustzoneSupport)) {
|
||||||
if (ArmIsMpCore()) {
|
if (ArmIsMpCore()) {
|
||||||
@ -155,7 +145,7 @@ TrustedWorldInitialization (
|
|||||||
ArmGicSetupNonSecure (MpId, PcdGet32(PcdGicDistributorBase), PcdGet32(PcdGicInterruptInterfaceBase));
|
ArmGicSetupNonSecure (MpId, PcdGet32(PcdGicDistributorBase), PcdGet32(PcdGicInterruptInterfaceBase));
|
||||||
|
|
||||||
// Initialize platform specific security policy
|
// Initialize platform specific security policy
|
||||||
ArmPlatformTrustzoneInit (MpId);
|
ArmPlatformSecTrustzoneInit (MpId);
|
||||||
|
|
||||||
// Setup the Trustzone Chipsets
|
// Setup the Trustzone Chipsets
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
if (IS_PRIMARY_CORE(MpId)) {
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
ArmCpuLib
|
ArmCpuLib
|
||||||
ArmLib
|
ArmLib
|
||||||
ArmPlatformLib
|
ArmPlatformSecLib
|
||||||
ArmTrustedMonitorLib
|
ArmTrustedMonitorLib
|
||||||
BaseLib
|
BaseLib
|
||||||
DebugLib
|
DebugLib
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
GCC_ASM_IMPORT(CEntryPoint)
|
GCC_ASM_IMPORT(CEntryPoint)
|
||||||
GCC_ASM_IMPORT(ArmPlatformSecBootAction)
|
GCC_ASM_IMPORT(ArmPlatformSecBootAction)
|
||||||
GCC_ASM_IMPORT(ArmPlatformInitializeBootMemory)
|
GCC_ASM_IMPORT(ArmPlatformSecBootMemoryInit)
|
||||||
GCC_ASM_IMPORT(ArmDisableInterrupts)
|
GCC_ASM_IMPORT(ArmDisableInterrupts)
|
||||||
GCC_ASM_IMPORT(ArmDisableCachesAndMmu)
|
GCC_ASM_IMPORT(ArmDisableCachesAndMmu)
|
||||||
GCC_ASM_IMPORT(ArmWriteVBar)
|
GCC_ASM_IMPORT(ArmWriteVBar)
|
||||||
@ -66,7 +66,7 @@ _WaitInitMem:
|
|||||||
|
|
||||||
_InitMem:
|
_InitMem:
|
||||||
// Initialize Init Boot Memory
|
// Initialize Init Boot Memory
|
||||||
bl ASM_PFX(ArmPlatformInitializeBootMemory)
|
bl ASM_PFX(ArmPlatformSecBootMemoryInit)
|
||||||
|
|
||||||
// Only Primary CPU could run this line (the secondary cores have jumped from _IdentifyCpu to _SetupStack)
|
// Only Primary CPU could run this line (the secondary cores have jumped from _IdentifyCpu to _SetupStack)
|
||||||
LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r5)
|
LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r5)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
IMPORT CEntryPoint
|
IMPORT CEntryPoint
|
||||||
IMPORT ArmPlatformSecBootAction
|
IMPORT ArmPlatformSecBootAction
|
||||||
IMPORT ArmPlatformInitializeBootMemory
|
IMPORT ArmPlatformSecBootMemoryInit
|
||||||
IMPORT ArmDisableInterrupts
|
IMPORT ArmDisableInterrupts
|
||||||
IMPORT ArmDisableCachesAndMmu
|
IMPORT ArmDisableCachesAndMmu
|
||||||
IMPORT ArmWriteVBar
|
IMPORT ArmWriteVBar
|
||||||
@ -68,7 +68,7 @@ _WaitInitMem
|
|||||||
|
|
||||||
_InitMem
|
_InitMem
|
||||||
// Initialize Init Boot Memory
|
// Initialize Init Boot Memory
|
||||||
bl ArmPlatformInitializeBootMemory
|
bl ArmPlatformSecBootMemoryInit
|
||||||
|
|
||||||
// Only Primary CPU could run this line (the secondary cores have jumped from _IdentifyCpu to _SetupStack)
|
// Only Primary CPU could run this line (the secondary cores have jumped from _IdentifyCpu to _SetupStack)
|
||||||
LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r5)
|
LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r5)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <Base.h>
|
#include <Base.h>
|
||||||
#include <Library/ArmLib.h>
|
#include <Library/ArmLib.h>
|
||||||
#include <Library/ArmCpuLib.h>
|
#include <Library/ArmCpuLib.h>
|
||||||
#include <Library/ArmPlatformLib.h>
|
#include <Library/ArmPlatformSecLib.h>
|
||||||
#include <Library/BaseLib.h>
|
#include <Library/BaseLib.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
@ -49,11 +49,6 @@ SecVectorTable (
|
|||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
VOID
|
|
||||||
NonSecureWaitForFirmware (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
enter_monitor_mode (
|
enter_monitor_mode (
|
||||||
IN UINTN MonitorEntryPoint,
|
IN UINTN MonitorEntryPoint,
|
||||||
|
@ -54,41 +54,6 @@ BeagleBoardGetRevision (
|
|||||||
return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7);
|
return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Return if Trustzone is supported by your platform
|
|
||||||
|
|
||||||
A non-zero value must be returned if you want to support a Secure World on your platform.
|
|
||||||
ArmPlatformTrustzoneInit() will later set up the secure regions.
|
|
||||||
This function can return 0 even if Trustzone is supported by your processor. In this case,
|
|
||||||
the platform will continue to run in Secure World.
|
|
||||||
|
|
||||||
@return A non-zero value if Trustzone supported.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINTN
|
|
||||||
ArmPlatformTrustzoneSupported (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
// The BeagleBoard starts in Normal World (Non Secure World)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Remap the memory at 0x0
|
|
||||||
|
|
||||||
Some platform requires or gives the ability to remap the memory at the address 0x0.
|
|
||||||
This function can do nothing if this feature is not relevant to your platform.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
ArmPlatformBootRemapping (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
// Do nothing for the BeagleBoard
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the current Boot Mode
|
Return the current Boot Mode
|
||||||
|
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <AsmMacroIoLib.h>
|
|
||||||
#include <Base.h>
|
|
||||||
#include <Library/PcdLib.h>
|
|
||||||
#include <BeagleBoard.h>
|
|
||||||
#include <AutoGen.h>
|
|
||||||
|
|
||||||
.text
|
|
||||||
.align 3
|
|
||||||
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformIsBootMemoryInitialized)
|
|
||||||
GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
|
|
||||||
|
|
||||||
/**
|
|
||||||
Called at the early stage of the Boot phase to know if the memory has already been initialized
|
|
||||||
|
|
||||||
Running the code from the reset vector does not mean we start from cold boot. In some case, we
|
|
||||||
can go through this code with the memory already initialized.
|
|
||||||
Because this function is called at the early stage, the implementation must not use the stack.
|
|
||||||
Its implementation must probably done in assembly to ensure this requirement.
|
|
||||||
|
|
||||||
@return Return a non zero value if initialized
|
|
||||||
|
|
||||||
**/
|
|
||||||
ASM_PFX(ArmPlatformIsBootMemoryInitialized):
|
|
||||||
// The system memory is initialized by the BeagleBoard firmware
|
|
||||||
mov r0, #1
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize the memory where the initial stacks will reside
|
|
||||||
|
|
||||||
This memory can contain the initial stacks (Secure and Secure Monitor stacks).
|
|
||||||
In some platform, this region is already initialized and the implementation of this function can
|
|
||||||
do nothing. This memory can also represent the Secure RAM.
|
|
||||||
This function is called before the satck has been set up. Its implementation must ensure the stack
|
|
||||||
pointer is not used (probably required to use assembly language)
|
|
||||||
|
|
||||||
**/
|
|
||||||
ASM_PFX(ArmPlatformInitializeBootMemory):
|
|
||||||
// We must need to go into this function
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
|
|
@ -1,58 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2011, ARM Limited. All rights reserved.
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <AsmMacroIoLib.h>
|
|
||||||
#include <Base.h>
|
|
||||||
#include <Library/PcdLib.h>
|
|
||||||
#include <BeagleBoard.h>
|
|
||||||
#include <AutoGen.h>
|
|
||||||
|
|
||||||
INCLUDE AsmMacroIoLib.inc
|
|
||||||
|
|
||||||
EXPORT ArmPlatformIsBootMemoryInitialized
|
|
||||||
EXPORT ArmPlatformInitializeBootMemory
|
|
||||||
|
|
||||||
PRESERVE8
|
|
||||||
AREA BeagleBoardHelper, CODE, READONLY
|
|
||||||
|
|
||||||
/**
|
|
||||||
Called at the early stage of the Boot phase to know if the memory has already been initialized
|
|
||||||
|
|
||||||
Running the code from the reset vector does not mean we start from cold boot. In some case, we
|
|
||||||
can go through this code with the memory already initialized.
|
|
||||||
Because this function is called at the early stage, the implementation must not use the stack.
|
|
||||||
Its implementation must probably done in assembly to ensure this requirement.
|
|
||||||
|
|
||||||
@return Return a non zero value if initialized
|
|
||||||
|
|
||||||
**/
|
|
||||||
ArmPlatformIsBootMemoryInitialized
|
|
||||||
// The system memory is initialized by the BeagleBoard firmware
|
|
||||||
mov r0, #1
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize the memory where the initial stacks will reside
|
|
||||||
|
|
||||||
This memory can contain the initial stacks (Secure and Secure Monitor stacks).
|
|
||||||
In some platform, this region is already initialized and the implementation of this function can
|
|
||||||
do nothing. This memory can also represent the Secure RAM.
|
|
||||||
This function is called before the satck has been set up. Its implementation must ensure the stack
|
|
||||||
pointer is not used (probably required to use assembly language)
|
|
||||||
|
|
||||||
**/
|
|
||||||
ArmPlatformInitializeBootMemory
|
|
||||||
// We must need to go into this function
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
END
|
|
@ -1,5 +1,5 @@
|
|||||||
#/* @file
|
#/* @file
|
||||||
# Copyright (c) 2011, ARM Limited. All rights reserved.
|
# Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -37,8 +37,6 @@
|
|||||||
[Sources.common]
|
[Sources.common]
|
||||||
BeagleBoard.c
|
BeagleBoard.c
|
||||||
BeagleBoardMem.c
|
BeagleBoardMem.c
|
||||||
BeagleBoardHelper.asm | RVCT
|
|
||||||
BeagleBoardHelper.S | GCC
|
|
||||||
PadConfiguration.c
|
PadConfiguration.c
|
||||||
Clock.c
|
Clock.c
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user