From a9d7090fc217dad23330ddc54cad4d4987cab65a Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Tue, 12 Mar 2013 00:54:02 +0000 Subject: ArmPlatformPkg: Moved ARMv7 specific files to a 'Arm' subdirectory Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14182 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S | 149 +++++++++++++++++++++++++ ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm | 152 ++++++++++++++++++++++++++ ArmPlatformPkg/PrePi/ModuleEntryPoint.S | 149 ------------------------- ArmPlatformPkg/PrePi/ModuleEntryPoint.asm | 152 -------------------------- ArmPlatformPkg/PrePi/PeiMPCore.inf | 8 +- ArmPlatformPkg/PrePi/PeiUniCore.inf | 8 +- 6 files changed, 311 insertions(+), 307 deletions(-) create mode 100644 ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S create mode 100644 ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm delete mode 100755 ArmPlatformPkg/PrePi/ModuleEntryPoint.S delete mode 100644 ArmPlatformPkg/PrePi/ModuleEntryPoint.asm (limited to 'ArmPlatformPkg/PrePi') diff --git a/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S b/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S new file mode 100644 index 0000000000..c0c20a9206 --- /dev/null +++ b/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S @@ -0,0 +1,149 @@ +// +// Copyright (c) 2011-2013, 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 +#include +#include +#include + +#include + +.text +.align 3 + +GCC_ASM_IMPORT(CEntryPoint) +GCC_ASM_IMPORT(ArmReadMpidr) +GCC_ASM_IMPORT(ArmPlatformStackSet) +GCC_ASM_EXPORT(_ModuleEntryPoint) + +StartupAddr: .word CEntryPoint + + +ASM_PFX(_ModuleEntryPoint): + // Get ID of this CPU in Multicore system + bl ASM_PFX(ArmReadMpidr) + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1) + and r6, r0, r1 + +_SetSVCMode: + // Enter SVC mode, Disable FIQ and IRQ + mov r1, #(CPSR_MODE_SVC | CPSR_IRQ | CPSR_FIQ) + msr CPSR_c, r1 + +// Check if we can install the stack at the top of the System Memory or if we need +// to install the stacks at the bottom of the Firmware Device (case the FD is located +// at the top of the DRAM) +_SetupStackPosition: + // Compute Top of System Memory + LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryBase), r1) + LoadConstantToReg (FixedPcdGet32(PcdSystemMemorySize), r2) + sub r2, r2, #1 + add r1, r1, r2 // r1 = SystemMemoryTop = PcdSystemMemoryBase + PcdSystemMemorySize + + // Calculate Top of the Firmware Device + LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), r2) + LoadConstantToReg (FixedPcdGet32(PcdFdSize), r3) + sub r3, r3, #1 + add r3, r3, r2 // r3 = FdTop = PcdFdBaseAddress + PcdFdSize + + // UEFI Memory Size (stacks are allocated in this region) + LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryUefiRegionSize), r4) + + // + // Reserve the memory for the UEFI region (contain stacks on its top) + // + + // Calculate how much space there is between the top of the Firmware and the Top of the System Memory + subs r0, r1, r3 // r0 = SystemMemoryTop - FdTop + bmi _SetupStack // Jump if negative (FdTop > SystemMemoryTop). Case when the PrePi is in XIP memory outside of the DRAM + cmp r0, r4 + bge _SetupStack + + // Case the top of stacks is the FdBaseAddress + mov r1, r2 + +_SetupStack: + // r1 contains the top of the stack (and the UEFI Memory) + + // Because the 'push' instruction is equivalent to 'stmdb' (decrement before), we need to increment + // one to the top of the stack. We check if incrementing one does not overflow (case of DRAM at the + // top of the memory space) + adds r7, r1, #1 + bcs _SetupOverflowStack + +_SetupAlignedStack: + mov r1, r7 + b _GetBaseUefiMemory + +_SetupOverflowStack: + // Case memory at the top of the address space. Ensure the top of the stack is EFI_PAGE_SIZE + // aligned (4KB) + LoadConstantToReg (EFI_PAGE_MASK, r7) + and r7, r7, r1 + sub r1, r1, r7 + +_GetBaseUefiMemory: + // Calculate the Base of the UEFI Memory + sub r7, r1, r4 + +_GetStackBase: + // r1 = The top of the Mpcore Stacks + // Stack for the primary core = PrimaryCoreStack + LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) + sub r8, r1, r2 + + // Stack for the secondary core = Number of Cores - 1 + LoadConstantToReg (FixedPcdGet32(PcdCoreCount), r0) + sub r0, r0, #1 + LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r1) + mul r1, r1, r0 + sub r8, r8, r1 + + // r8 = The base of the MpCore Stacks (primary stack & secondary stacks) + mov r0, r8 + mov r1, r6 + //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize, SecondaryStackSize) + LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) + LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r3) + bl ASM_PFX(ArmPlatformStackSet) + + // Is it the Primary Core ? + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r4) + cmp r6, r4 + bne _PrepareArguments + +_ReserveGlobalVariable: + LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0) + // InitializePrimaryStack($GlobalVariableSize, $Tmp1) + InitializePrimaryStack(r0, r1) + +_PrepareArguments: + mov r0, r6 + mov r1, r7 + mov r2, r8 + mov r3, sp + + // Move sec startup address into a data register + // Ensure we're jumping to FV version of the code (not boot remapped alias) + ldr r4, StartupAddr + + // Jump to PrePiCore C code + // r0 = MpId + // r1 = UefiMemoryBase + // r2 = StacksBase + // r3 = GlobalVariableBase + blx r4 + +_NeverReturn: + b _NeverReturn + diff --git a/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm b/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm new file mode 100644 index 0000000000..5efdb532af --- /dev/null +++ b/ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm @@ -0,0 +1,152 @@ +// +// Copyright (c) 2011-2013, 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 +#include +#include +#include + +#include + + INCLUDE AsmMacroIoLib.inc + + IMPORT CEntryPoint + IMPORT ArmReadMpidr + IMPORT ArmPlatformStackSet + + EXPORT _ModuleEntryPoint + + PRESERVE8 + AREA PrePiCoreEntryPoint, CODE, READONLY + +StartupAddr DCD CEntryPoint + +_ModuleEntryPoint + // Get ID of this CPU in Multicore system + bl ArmReadMpidr + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1) + and r6, r0, r1 + +_SetSVCMode + // Enter SVC mode, Disable FIQ and IRQ + mov r1, #(CPSR_MODE_SVC :OR: CPSR_IRQ :OR: CPSR_FIQ) + msr CPSR_c, r1 + +// Check if we can install the stack at the top of the System Memory or if we need +// to install the stacks at the bottom of the Firmware Device (case the FD is located +// at the top of the DRAM) +_SetupStackPosition + // Compute Top of System Memory + LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryBase), r1) + LoadConstantToReg (FixedPcdGet32(PcdSystemMemorySize), r2) + sub r2, r2, #1 + add r1, r1, r2 // r1 = SystemMemoryTop = PcdSystemMemoryBase + PcdSystemMemorySize + + // Calculate Top of the Firmware Device + LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), r2) + LoadConstantToReg (FixedPcdGet32(PcdFdSize), r3) + sub r3, r3, #1 + add r3, r3, r2 // r3 = FdTop = PcdFdBaseAddress + PcdFdSize + + // UEFI Memory Size (stacks are allocated in this region) + LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryUefiRegionSize), r4) + + // + // Reserve the memory for the UEFI region (contain stacks on its top) + // + + // Calculate how much space there is between the top of the Firmware and the Top of the System Memory + subs r0, r1, r3 // r0 = SystemMemoryTop - FdTop + bmi _SetupStack // Jump if negative (FdTop > SystemMemoryTop). Case when the PrePi is in XIP memory outside of the DRAM + cmp r0, r4 + bge _SetupStack + + // Case the top of stacks is the FdBaseAddress + mov r1, r2 + +_SetupStack + // r1 contains the top of the stack (and the UEFI Memory) + + // Because the 'push' instruction is equivalent to 'stmdb' (decrement before), we need to increment + // one to the top of the stack. We check if incrementing one does not overflow (case of DRAM at the + // top of the memory space) + adds r7, r1, #1 + bcs _SetupOverflowStack + +_SetupAlignedStack + mov r1, r7 + b _GetBaseUefiMemory + +_SetupOverflowStack + // Case memory at the top of the address space. Ensure the top of the stack is EFI_PAGE_SIZE + // aligned (4KB) + LoadConstantToReg (EFI_PAGE_MASK, r7) + and r7, r7, r1 + sub r1, r1, r7 + +_GetBaseUefiMemory + // Calculate the Base of the UEFI Memory + sub r7, r1, r4 + +_GetStackBase + // r1 = The top of the Mpcore Stacks + // Stack for the primary core = PrimaryCoreStack + LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) + sub r8, r1, r2 + + // Stack for the secondary core = Number of Cores - 1 + LoadConstantToReg (FixedPcdGet32(PcdCoreCount), r0) + sub r0, r0, #1 + LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r1) + mul r1, r1, r0 + sub r8, r8, r1 + + // r8 = The base of the MpCore Stacks (primary stack & secondary stacks) + mov r0, r8 + mov r1, r6 + //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize, SecondaryStackSize) + LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) + LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r3) + bl ArmPlatformStackSet + + // Is it the Primary Core ? + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r4) + cmp r6, r4 + bne _PrepareArguments + +_ReserveGlobalVariable + LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0) + // InitializePrimaryStack($GlobalVariableSize, $Tmp1) + InitializePrimaryStack r0, r1 + +_PrepareArguments + mov r0, r6 + mov r1, r7 + mov r2, r8 + mov r3, sp + + // Move sec startup address into a data register + // Ensure we're jumping to FV version of the code (not boot remapped alias) + ldr r4, StartupAddr + + // Jump to PrePiCore C code + // r0 = MpId + // r1 = UefiMemoryBase + // r2 = StacksBase + // r3 = GlobalVariableBase + blx r4 + +_NeverReturn + b _NeverReturn + + END diff --git a/ArmPlatformPkg/PrePi/ModuleEntryPoint.S b/ArmPlatformPkg/PrePi/ModuleEntryPoint.S deleted file mode 100755 index c0c20a9206..0000000000 --- a/ArmPlatformPkg/PrePi/ModuleEntryPoint.S +++ /dev/null @@ -1,149 +0,0 @@ -// -// Copyright (c) 2011-2013, 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 -#include -#include -#include - -#include - -.text -.align 3 - -GCC_ASM_IMPORT(CEntryPoint) -GCC_ASM_IMPORT(ArmReadMpidr) -GCC_ASM_IMPORT(ArmPlatformStackSet) -GCC_ASM_EXPORT(_ModuleEntryPoint) - -StartupAddr: .word CEntryPoint - - -ASM_PFX(_ModuleEntryPoint): - // Get ID of this CPU in Multicore system - bl ASM_PFX(ArmReadMpidr) - LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1) - and r6, r0, r1 - -_SetSVCMode: - // Enter SVC mode, Disable FIQ and IRQ - mov r1, #(CPSR_MODE_SVC | CPSR_IRQ | CPSR_FIQ) - msr CPSR_c, r1 - -// Check if we can install the stack at the top of the System Memory or if we need -// to install the stacks at the bottom of the Firmware Device (case the FD is located -// at the top of the DRAM) -_SetupStackPosition: - // Compute Top of System Memory - LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryBase), r1) - LoadConstantToReg (FixedPcdGet32(PcdSystemMemorySize), r2) - sub r2, r2, #1 - add r1, r1, r2 // r1 = SystemMemoryTop = PcdSystemMemoryBase + PcdSystemMemorySize - - // Calculate Top of the Firmware Device - LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), r2) - LoadConstantToReg (FixedPcdGet32(PcdFdSize), r3) - sub r3, r3, #1 - add r3, r3, r2 // r3 = FdTop = PcdFdBaseAddress + PcdFdSize - - // UEFI Memory Size (stacks are allocated in this region) - LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryUefiRegionSize), r4) - - // - // Reserve the memory for the UEFI region (contain stacks on its top) - // - - // Calculate how much space there is between the top of the Firmware and the Top of the System Memory - subs r0, r1, r3 // r0 = SystemMemoryTop - FdTop - bmi _SetupStack // Jump if negative (FdTop > SystemMemoryTop). Case when the PrePi is in XIP memory outside of the DRAM - cmp r0, r4 - bge _SetupStack - - // Case the top of stacks is the FdBaseAddress - mov r1, r2 - -_SetupStack: - // r1 contains the top of the stack (and the UEFI Memory) - - // Because the 'push' instruction is equivalent to 'stmdb' (decrement before), we need to increment - // one to the top of the stack. We check if incrementing one does not overflow (case of DRAM at the - // top of the memory space) - adds r7, r1, #1 - bcs _SetupOverflowStack - -_SetupAlignedStack: - mov r1, r7 - b _GetBaseUefiMemory - -_SetupOverflowStack: - // Case memory at the top of the address space. Ensure the top of the stack is EFI_PAGE_SIZE - // aligned (4KB) - LoadConstantToReg (EFI_PAGE_MASK, r7) - and r7, r7, r1 - sub r1, r1, r7 - -_GetBaseUefiMemory: - // Calculate the Base of the UEFI Memory - sub r7, r1, r4 - -_GetStackBase: - // r1 = The top of the Mpcore Stacks - // Stack for the primary core = PrimaryCoreStack - LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) - sub r8, r1, r2 - - // Stack for the secondary core = Number of Cores - 1 - LoadConstantToReg (FixedPcdGet32(PcdCoreCount), r0) - sub r0, r0, #1 - LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r1) - mul r1, r1, r0 - sub r8, r8, r1 - - // r8 = The base of the MpCore Stacks (primary stack & secondary stacks) - mov r0, r8 - mov r1, r6 - //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize, SecondaryStackSize) - LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) - LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r3) - bl ASM_PFX(ArmPlatformStackSet) - - // Is it the Primary Core ? - LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r4) - cmp r6, r4 - bne _PrepareArguments - -_ReserveGlobalVariable: - LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0) - // InitializePrimaryStack($GlobalVariableSize, $Tmp1) - InitializePrimaryStack(r0, r1) - -_PrepareArguments: - mov r0, r6 - mov r1, r7 - mov r2, r8 - mov r3, sp - - // Move sec startup address into a data register - // Ensure we're jumping to FV version of the code (not boot remapped alias) - ldr r4, StartupAddr - - // Jump to PrePiCore C code - // r0 = MpId - // r1 = UefiMemoryBase - // r2 = StacksBase - // r3 = GlobalVariableBase - blx r4 - -_NeverReturn: - b _NeverReturn - diff --git a/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm b/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm deleted file mode 100644 index 5efdb532af..0000000000 --- a/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm +++ /dev/null @@ -1,152 +0,0 @@ -// -// Copyright (c) 2011-2013, 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 -#include -#include -#include - -#include - - INCLUDE AsmMacroIoLib.inc - - IMPORT CEntryPoint - IMPORT ArmReadMpidr - IMPORT ArmPlatformStackSet - - EXPORT _ModuleEntryPoint - - PRESERVE8 - AREA PrePiCoreEntryPoint, CODE, READONLY - -StartupAddr DCD CEntryPoint - -_ModuleEntryPoint - // Get ID of this CPU in Multicore system - bl ArmReadMpidr - LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1) - and r6, r0, r1 - -_SetSVCMode - // Enter SVC mode, Disable FIQ and IRQ - mov r1, #(CPSR_MODE_SVC :OR: CPSR_IRQ :OR: CPSR_FIQ) - msr CPSR_c, r1 - -// Check if we can install the stack at the top of the System Memory or if we need -// to install the stacks at the bottom of the Firmware Device (case the FD is located -// at the top of the DRAM) -_SetupStackPosition - // Compute Top of System Memory - LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryBase), r1) - LoadConstantToReg (FixedPcdGet32(PcdSystemMemorySize), r2) - sub r2, r2, #1 - add r1, r1, r2 // r1 = SystemMemoryTop = PcdSystemMemoryBase + PcdSystemMemorySize - - // Calculate Top of the Firmware Device - LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), r2) - LoadConstantToReg (FixedPcdGet32(PcdFdSize), r3) - sub r3, r3, #1 - add r3, r3, r2 // r3 = FdTop = PcdFdBaseAddress + PcdFdSize - - // UEFI Memory Size (stacks are allocated in this region) - LoadConstantToReg (FixedPcdGet32(PcdSystemMemoryUefiRegionSize), r4) - - // - // Reserve the memory for the UEFI region (contain stacks on its top) - // - - // Calculate how much space there is between the top of the Firmware and the Top of the System Memory - subs r0, r1, r3 // r0 = SystemMemoryTop - FdTop - bmi _SetupStack // Jump if negative (FdTop > SystemMemoryTop). Case when the PrePi is in XIP memory outside of the DRAM - cmp r0, r4 - bge _SetupStack - - // Case the top of stacks is the FdBaseAddress - mov r1, r2 - -_SetupStack - // r1 contains the top of the stack (and the UEFI Memory) - - // Because the 'push' instruction is equivalent to 'stmdb' (decrement before), we need to increment - // one to the top of the stack. We check if incrementing one does not overflow (case of DRAM at the - // top of the memory space) - adds r7, r1, #1 - bcs _SetupOverflowStack - -_SetupAlignedStack - mov r1, r7 - b _GetBaseUefiMemory - -_SetupOverflowStack - // Case memory at the top of the address space. Ensure the top of the stack is EFI_PAGE_SIZE - // aligned (4KB) - LoadConstantToReg (EFI_PAGE_MASK, r7) - and r7, r7, r1 - sub r1, r1, r7 - -_GetBaseUefiMemory - // Calculate the Base of the UEFI Memory - sub r7, r1, r4 - -_GetStackBase - // r1 = The top of the Mpcore Stacks - // Stack for the primary core = PrimaryCoreStack - LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) - sub r8, r1, r2 - - // Stack for the secondary core = Number of Cores - 1 - LoadConstantToReg (FixedPcdGet32(PcdCoreCount), r0) - sub r0, r0, #1 - LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r1) - mul r1, r1, r0 - sub r8, r8, r1 - - // r8 = The base of the MpCore Stacks (primary stack & secondary stacks) - mov r0, r8 - mov r1, r6 - //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize, SecondaryStackSize) - LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2) - LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), r3) - bl ArmPlatformStackSet - - // Is it the Primary Core ? - LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r4) - cmp r6, r4 - bne _PrepareArguments - -_ReserveGlobalVariable - LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0) - // InitializePrimaryStack($GlobalVariableSize, $Tmp1) - InitializePrimaryStack r0, r1 - -_PrepareArguments - mov r0, r6 - mov r1, r7 - mov r2, r8 - mov r3, sp - - // Move sec startup address into a data register - // Ensure we're jumping to FV version of the code (not boot remapped alias) - ldr r4, StartupAddr - - // Jump to PrePiCore C code - // r0 = MpId - // r1 = UefiMemoryBase - // r2 = StacksBase - // r3 = GlobalVariableBase - blx r4 - -_NeverReturn - b _NeverReturn - - END diff --git a/ArmPlatformPkg/PrePi/PeiMPCore.inf b/ArmPlatformPkg/PrePi/PeiMPCore.inf index f4cec0d606..3a3614192a 100755 --- a/ArmPlatformPkg/PrePi/PeiMPCore.inf +++ b/ArmPlatformPkg/PrePi/PeiMPCore.inf @@ -19,11 +19,13 @@ MODULE_TYPE = SEC VERSION_STRING = 1.0 -[Sources.ARM] +[Sources] PrePi.c - ModuleEntryPoint.S | GCC - ModuleEntryPoint.asm | RVCT MainMPCore.c + +[Sources.ARM] + Arm/ModuleEntryPoint.S | GCC + Arm/ModuleEntryPoint.asm | RVCT [Packages] MdePkg/MdePkg.dec diff --git a/ArmPlatformPkg/PrePi/PeiUniCore.inf b/ArmPlatformPkg/PrePi/PeiUniCore.inf index 34a068632b..823a956074 100755 --- a/ArmPlatformPkg/PrePi/PeiUniCore.inf +++ b/ArmPlatformPkg/PrePi/PeiUniCore.inf @@ -19,11 +19,13 @@ MODULE_TYPE = SEC VERSION_STRING = 1.0 -[Sources.ARM] +[Sources] PrePi.c - ModuleEntryPoint.S | GCC - ModuleEntryPoint.asm | RVCT MainUniCore.c + +[Sources.ARM] + Arm/ModuleEntryPoint.S | GCC + Arm/ModuleEntryPoint.asm | RVCT [Packages] MdePkg/MdePkg.dec -- cgit v1.2.3