summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S')
-rw-r--r--ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S58
1 files changed, 0 insertions, 58 deletions
diff --git a/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S b/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S
deleted file mode 100644
index 525c1287ef..0000000000
--- a/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarterHelper.S
+++ /dev/null
@@ -1,58 +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.
-//
-//
-
-
-/* Secondary core pens for AArch64 Linux booting.
-
- This code it placed in Linux kernel memory and marked reserved. UEFI ensures
- that the secondary cores get to this pen and the kernel can then start the
- cores from here.
- NOTE: This code must be self-contained.
-*/
-
-#include <Library/ArmLib.h>
-
-.text
-.align 3
-
-GCC_ASM_EXPORT(SecondariesPenStart)
-ASM_GLOBAL SecondariesPenEnd
-
-ASM_PFX(SecondariesPenStart):
- // Registers x0-x3 are reserved for future use and should be set to zero.
- mov x0, xzr
- mov x1, xzr
- mov x2, xzr
- mov x3, xzr
-
- // Get core position. Taken from ArmPlatformGetCorePosition().
- // Assumes max 4 cores per cluster.
- mrs x4, mpidr_el1 // Get MPCore register.
- and x5, x4, #ARM_CORE_MASK // Get core number.
- and x4, x4, #ARM_CLUSTER_MASK // Get cluster number.
- add x4, x5, x4, LSR #6 // Add scaled cluster number to core number.
- lsl x4, x4, 3 // Get mailbox offset for this core.
- ldr x5, AsmMailboxbase // Get mailbox addr relative to pc (36 bytes ahead).
- add x4, x4, x5 // Add core mailbox offset to base of mailbox.
-1: ldr x5, [x4] // Load value from mailbox.
- cmp xzr, x5 // Has the mailbox been set?
- b.ne 2f // If so break out of loop.
- wfe // If not, wait a bit.
- b 1b // Wait over, check if mailbox set again.
-2: br x5 // Jump to mailbox value.
-
-.align 3 // Make sure the variable below is 8 byte aligned.
- .global AsmMailboxbase
-AsmMailboxbase: .xword 0xdeaddeadbeefbeef
-
-SecondariesPenEnd: