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 x29, #0 44 mov x30, x0 45 mov sp, x3 46 mov x0, x1 47 mov x1, x2 48 ret 49 50 /** 51 // 52 // Requests CPU to pause for a short period of time. 53 // 54 // Requests CPU to pause for a short period of time. Typically used in MP 55 // systems to prevent memory starvation while waiting for a spin lock. 56 // 57 VOID 58 EFIAPI 59 CpuPause ( 60 VOID 61 ) 62 **/ 63 ASM_PFX(CpuPause): 64 nop 65 nop 66 nop 67 nop 68 nop 69 ret 70