summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Sec/SecEntryPoint.S
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2013-03-12 00:54:02 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2013-03-12 00:54:02 +0000
commita9d7090fc217dad23330ddc54cad4d4987cab65a (patch)
tree8d20f2d187e0b2322815ef0fafd6149490092239 /ArmPlatformPkg/Sec/SecEntryPoint.S
parentc63626b7d31cb8c6ffee5870de742f4aa859fee8 (diff)
downloadedk2-platforms-a9d7090fc217dad23330ddc54cad4d4987cab65a.tar.xz
ArmPlatformPkg: Moved ARMv7 specific files to a 'Arm' subdirectory
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14182 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg/Sec/SecEntryPoint.S')
-rw-r--r--ArmPlatformPkg/Sec/SecEntryPoint.S123
1 files changed, 0 insertions, 123 deletions
diff --git a/ArmPlatformPkg/Sec/SecEntryPoint.S b/ArmPlatformPkg/Sec/SecEntryPoint.S
deleted file mode 100644
index 92035a1ffe..0000000000
--- a/ArmPlatformPkg/Sec/SecEntryPoint.S
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// 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 <AutoGen.h>
-#include <AsmMacroIoLib.h>
-#include "SecInternal.h"
-
-.text
-.align 3
-
-GCC_ASM_IMPORT(CEntryPoint)
-GCC_ASM_IMPORT(ArmPlatformSecBootAction)
-GCC_ASM_IMPORT(ArmPlatformSecBootMemoryInit)
-GCC_ASM_IMPORT(ArmDisableInterrupts)
-GCC_ASM_IMPORT(ArmDisableCachesAndMmu)
-GCC_ASM_IMPORT(ArmReadMpidr)
-GCC_ASM_IMPORT(ArmCallWFE)
-GCC_ASM_EXPORT(_ModuleEntryPoint)
-
-StartupAddr: .word ASM_PFX(CEntryPoint)
-
-ASM_PFX(_ModuleEntryPoint):
- // First ensure all interrupts are disabled
- bl ASM_PFX(ArmDisableInterrupts)
-
- // Ensure that the MMU and caches are off
- bl ASM_PFX(ArmDisableCachesAndMmu)
-
- // By default, we are doing a cold boot
- mov r10, #ARM_SEC_COLD_BOOT
-
- // Jump to Platform Specific Boot Action function
- blx ASM_PFX(ArmPlatformSecBootAction)
-
-_IdentifyCpu:
- // Identify CPU ID
- bl ASM_PFX(ArmReadMpidr)
- // Get ID of this CPU in Multicore system
- LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1)
- and r5, r0, r1
-
- // Is it the Primary Core ?
- LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r3)
- cmp r5, r3
- // Only the primary core initialize the memory (SMC)
- beq _InitMem
-
-_WaitInitMem:
- // If we are not doing a cold boot in this case we should assume the Initial Memory to be already initialized
- // Otherwise we have to wait the Primary Core to finish the initialization
- cmp r10, #ARM_SEC_COLD_BOOT
- bne _SetupSecondaryCoreStack
-
- // Wait for the primary core to initialize the initial memory (event: BOOT_MEM_INIT)
- bl ASM_PFX(ArmCallWFE)
- // Now the Init Mem is initialized, we setup the secondary core stacks
- b _SetupSecondaryCoreStack
-
-_InitMem:
- // If we are not doing a cold boot in this case we should assume the Initial Memory to be already initialized
- cmp r10, #ARM_SEC_COLD_BOOT
- bne _SetupPrimaryCoreStack
-
- // Initialize Init Boot Memory
- bl ASM_PFX(ArmPlatformSecBootMemoryInit)
-
- // Only Primary CPU could run this line (the secondary cores have jumped from _IdentifyCpu to _SetupStack)
- LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r5)
-
-_SetupPrimaryCoreStack:
- // Get the top of the primary stacks (and the base of the secondary stacks)
- LoadConstantToReg (FixedPcdGet32(PcdCPUCoresSecStackBase), r1)
- LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecPrimaryStackSize), r2)
- add r1, r1, r2
-
- LoadConstantToReg (FixedPcdGet32(PcdSecGlobalVariableSize), r2)
-
- // The reserved space for global variable must be 8-bytes aligned for pushing
- // 64-bit variable on the stack
- SetPrimaryStack (r1, r2, r3)
- b _PrepareArguments
-
-_SetupSecondaryCoreStack:
- // Get the top of the primary stacks (and the base of the secondary stacks)
- LoadConstantToReg (FixedPcdGet32(PcdCPUCoresSecStackBase), r1)
- LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecPrimaryStackSize), r2)
- add r1, r1, r2
-
- // Get the Core Position (ClusterId * 4) + CoreId
- GetCorePositionFromMpId(r0, r5, r2)
- // The stack starts at the top of the stack region. Add '1' to the Core Position to get the top of the stack
- add r0, r0, #1
-
- // StackOffset = CorePos * StackSize
- LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecSecondaryStackSize), r2)
- mul r0, r0, r2
- // SP = StackBase + StackOffset
- add sp, r1, r0
-
-_PrepareArguments:
- // Move sec startup address into a data register
- // Ensure we're jumping to FV version of the code (not boot remapped alias)
- ldr r3, StartupAddr
-
- // Jump to SEC C code
- // r0 = mp_id
- // r1 = Boot Mode
- mov r0, r5
- mov r1, r10
- blx r3
-
-_NeverReturn:
- b _NeverReturn