summaryrefslogtreecommitdiff
path: root/ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S
diff options
context:
space:
mode:
Diffstat (limited to 'ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S')
-rw-r--r--ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S50
1 files changed, 16 insertions, 34 deletions
diff --git a/ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S b/ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S
index 0970388..27af989 100644
--- a/ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S
+++ b/ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S
@@ -1,6 +1,6 @@
#
# Copyright (c) 2011-2013, ARM Limited. All rights reserved.
-# Copyright (c) 2014, Linaro Limited. All rights reserved.
+# Copyright (c) 2014-2016, Linaro Limited. All rights reserved.
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
@@ -13,28 +13,9 @@
#
#include <AsmMacroIoLib.h>
-#include <Base.h>
#include <Library/ArmLib.h>
-#include <Library/PcdLib.h>
-#include <AutoGen.h>
-.text
-.align 2
-
-GCC_ASM_EXPORT(ArmPlatformPeiBootAction)
-GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
-GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
-GCC_ASM_EXPORT(ArmPlatformGetCorePosition)
-GCC_ASM_EXPORT(ArmGetPhysAddrTop)
-
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdCoreCount)
-
-.LArm32LinuxMagic:
- .byte 0x18, 0x28, 0x6f, 0x01
-
-ASM_PFX(ArmPlatformPeiBootAction):
+ASM_FUNC(ArmPlatformPeiBootAction)
//
// If we are booting from RAM using the Linux kernel boot protocol, r0 will
// point to the DTB image in memory. Otherwise, use the default value defined
@@ -42,7 +23,7 @@ ASM_PFX(ArmPlatformPeiBootAction):
//
teq r0, #0
bne 0f
- ldr r0, =PcdGet64 (PcdDeviceTreeInitialBaseAddress)
+ LDRL (r0, PcdGet64 (PcdDeviceTreeInitialBaseAddress))
0:mov r11, r14 // preserve LR
mov r10, r0 // preserve DTB pointer
@@ -64,8 +45,8 @@ ASM_PFX(ArmPlatformPeiBootAction):
// to the actual relocated value, and add the shift of PcdFdBaseAddress to
// PcdFvBaseAddress as well
//
- ldr r8, =PcdGet64 (PcdFdBaseAddress)
- ldr r7, =PcdGet64 (PcdFvBaseAddress)
+ ADRL (r8, PcdGet64 (PcdFdBaseAddress))
+ ADRL (r7, PcdGet64 (PcdFvBaseAddress))
ldr r6, [r8]
ldr r5, [r7]
sub r5, r5, r6
@@ -79,8 +60,8 @@ ASM_PFX(ArmPlatformPeiBootAction):
// encountered. Since we are calling a C function, use the window at the
// beginning of the FD image as a temp stack.
//
- ldr r1, =PcdGet64 (PcdSystemMemoryBase)
- ldr r2, =PcdGet64 (PcdSystemMemorySize)
+ ADRL (r1, PcdGet64 (PcdSystemMemoryBase))
+ ADRL (r2, PcdGet64 (PcdSystemMemorySize))
mov sp, r5
bl FindMemnode
teq r0, #0
@@ -91,7 +72,7 @@ ASM_PFX(ArmPlatformPeiBootAction):
// image header at the base of this image (defined in the FDF), and record the
// pointer in PcdDeviceTreeInitialBaseAddress.
//
- ldr r8, =PcdGet64 (PcdDeviceTreeInitialBaseAddress)
+ ADRL (r8, PcdGet64 (PcdDeviceTreeInitialBaseAddress))
add r9, r9, #0x40
str r9, [r8]
@@ -102,20 +83,22 @@ ASM_PFX(ArmPlatformPeiBootAction):
.Lout:
bx r11
+.LArm32LinuxMagic:
+ .byte 0x18, 0x28, 0x6f, 0x01
+
//UINTN
//ArmPlatformGetPrimaryCoreMpId (
// VOID
// );
-ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
- LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r0)
- ldr r0, [r0]
+ASM_FUNC(ArmPlatformGetPrimaryCoreMpId)
+ MOV32 (r0, FixedPcdGet32 (PcdArmPrimaryCore))
bx lr
//UINTN
//ArmPlatformIsPrimaryCore (
// IN UINTN MpId
// );
-ASM_PFX(ArmPlatformIsPrimaryCore):
+ASM_FUNC(ArmPlatformIsPrimaryCore)
mov r0, #1
bx lr
@@ -124,7 +107,7 @@ ASM_PFX(ArmPlatformIsPrimaryCore):
// IN UINTN MpId
// );
// With this function: CorePos = (ClusterId * 4) + CoreId
-ASM_PFX(ArmPlatformGetCorePosition):
+ASM_FUNC(ArmPlatformGetCorePosition)
and r1, r0, #ARM_CORE_MASK
and r0, r0, #ARM_CLUSTER_MASK
add r0, r1, r0, LSR #6
@@ -134,8 +117,7 @@ ASM_PFX(ArmPlatformGetCorePosition):
//GetPhysAddrTop (
// VOID
// );
-ASM_PFX(ArmGetPhysAddrTop):
+ASM_FUNC(ArmGetPhysAddrTop)
mov r0, #0x00000000
mov r1, #0x10000
bx lr
-