]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Sec/Helper.S
ArmPlatformPkg: Moved ARMv7 specific files to a 'Arm' subdirectory
[mirror_edk2.git] / ArmPlatformPkg / Sec / Helper.S
diff --git a/ArmPlatformPkg/Sec/Helper.S b/ArmPlatformPkg/Sec/Helper.S
deleted file mode 100644 (file)
index 4eede5f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#========================================================================================\r
-#  Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
-#  \r
-#  This program and the accompanying materials                          \r
-#  are licensed and made available under the terms and conditions of the BSD License         \r
-#  which accompanies this distribution.  The full text of the license may be found at        \r
-#  http:#opensource.org/licenses/bsd-license.php                                            \r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-#\r
-#=======================================================================================\r
-\r
-#start of the code section\r
-.text \r
-.align 3\r
-\r
-GCC_ASM_EXPORT(return_from_exception)\r
-GCC_ASM_EXPORT(enter_monitor_mode)\r
-GCC_ASM_EXPORT(copy_cpsr_into_spsr)\r
-GCC_ASM_EXPORT(set_non_secure_mode)\r
-\r
-# r0: Monitor World EntryPoint\r
-# r1: MpId\r
-# r2: SecBootMode\r
-# r3: Secure Monitor mode stack\r
-ASM_PFX(enter_monitor_mode):\r
-    cmp     r3, #0                      @ If a Secure Monitor stack base has not been defined then use the Secure stack\r
-    moveq   r3, sp\r
-\r
-    mrs     r4, cpsr                    @ Save current mode (SVC) in r4\r
-    bic     r5, r4, #0x1f               @ Clear all mode bits\r
-    orr     r5, r5, #0x16               @ Set bits for Monitor mode\r
-    msr     cpsr_cxsf, r5               @ We are now in Monitor Mode\r
-\r
-    mov     sp, r3                      @ Set the stack of the Monitor Mode\r
-\r
-    mov     lr, r0                      @ Use the pass entrypoint as lr\r
-    \r
-    msr     spsr_cxsf, r4               @ Use saved mode for the MOVS jump to the kernel\r
-\r
-    mov     r4, r0                      @ Swap EntryPoint and MpId registers\r
-    mov     r0, r1\r
-    mov     r1, r2\r
-    mov     r2, r3\r
-\r
-    bx      r4\r
-\r
-# We cannot use the instruction 'movs pc, lr' because the caller can be written either in ARM or Thumb2 assembler.\r
-# When we will jump into this function, we will set the CPSR flag to ARM assembler. By copying directly 'lr' into\r
-# 'pc'; we will not change the CPSR flag and it will crash.\r
-# The way to fix this limitation is to do the movs into the ARM assmbler code and then do a 'bx'.\r
-ASM_PFX(return_from_exception):\r
-    ldr     lr, returned_exception\r
-\r
-    #The following instruction breaks the code.\r
-    #movs    pc, lr\r
-    mrs     r2, cpsr\r
-    bic     r2, r2, #0x1f\r
-    orr     r2, r2, #0x13\r
-    msr     cpsr_c, r2\r
-\r
-returned_exception:                           @ We are now in non-secure state\r
-    bx      r0\r
-\r
-# Save the current Program Status Register (PSR) into the Saved PSR\r
-ASM_PFX(copy_cpsr_into_spsr):\r
-    mrs     r0, cpsr\r
-    msr     spsr_cxsf, r0\r
-    bx      lr\r
-\r
-# Set the Non Secure Mode\r
-ASM_PFX(set_non_secure_mode):\r
-    push    { r1 }\r
-    and            r0, r0, #0x1f     @ Keep only the mode bits\r
-    mrs     r1, spsr          @ Read the spsr\r
-    bic     r1, r1, #0x1f     @ Clear all mode bits\r
-    orr            r1, r1, r0\r
-    msr     spsr_cxsf, r1     @ write back spsr (may have caused a mode switch)\r
-    isb\r
-    pop     { r1 }\r
-    bx      lr                @ return (hopefully thumb-safe!)\r
-\r
-dead:\r
-    b       dead\r
-    \r
-ASM_FUNCTION_REMOVE_IF_UNREFERENCED\r