1 //------------------------------------------------------------------------------ 2 // 3 // Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> 4 // Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> 5 // Portions copyright (c) 2011 - 2013, ARM Limited. All rights reserved.<BR> 6 // This program and the accompanying materials 7 // are licensed and made available under the terms and conditions of the BSD License 8 // which accompanies this distribution. The full text of the license may be found at 9 // http://opensource.org/licenses/bsd-license.php. 10 // 11 // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 // 14 //------------------------------------------------------------------------------ 15 16 .text 17 .align 5 18 19 GCC_ASM_EXPORT(InternalSwitchStackAsm) 20 GCC_ASM_EXPORT(CpuPause) 21 22 /** 23 // 24 // This allows the caller to switch the stack and goes to the new entry point 25 // 26 // @param EntryPoint The pointer to the location to enter 27 // @param Context Parameter to pass in 28 // @param Context2 Parameter2 to pass in 29 // @param NewStack New Location of the stack 30 // 31 // @return Nothing. Goes to the Entry Point passing in the new parameters 32 // 33 VOID 34 EFIAPI 35 InternalSwitchStackAsm ( 36 SWITCH_STACK_ENTRY_POINT EntryPoint, 37 VOID *Context, 38 VOID *Context2, 39 VOID *NewStack 40 ); 41 **/ 42 ASM_PFX(InternalSwitchStackAsm): 43 mov x30, x0 44 mov sp, x3 45 mov x0, x1 46 mov x1, x2 47 ret 48 49 /** 50 // 51 // Requests CPU to pause for a short period of time. 52 // 53 // Requests CPU to pause for a short period of time. Typically used in MP 54 // systems to prevent memory starvation while waiting for a spin lock. 55 // 56 VOID 57 EFIAPI 58 CpuPause ( 59 VOID 60 ) 61 **/ 62 ASM_PFX(CpuPause): 63 nop 64 nop 65 nop 66 nop 67 nop 68 ret 69