MpAsm.asm revision fab82c1873b792bce33fb22c32db71324fc0ac3b
1;------------------------------------------------------------------------------ 2; 3; Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> 4; This program and the accompanying materials 5; are licensed and made available under the terms and conditions of the BSD License 6; which accompanies this distribution. The full text of the license may be found at 7; http://opensource.org/licenses/bsd-license.php. 8; 9; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11; 12;------------------------------------------------------------------------------ 13 14.586p 15.model flat, C 16 17extern mTopOfApCommonStack:DWORD 18extern ApEntryPointInC:PROC 19 20.code 21 22; 23; This lock only allows one AP to use the mTopOfApCommonStack stack at a time 24; 25ApStackLock dd 0 26 27;.code 28 29;------------------------------------------------------------------------------ 30; VOID 31; EFIAPI 32; AsmApEntryPoint ( 33; VOID 34; ); 35;------------------------------------------------------------------------------ 36AsmApEntryPoint PROC 37 38 cli 39AsmApEntryPointAcquireLock: 40lock bts dword ptr [ApStackLock], 0 41 pause 42 jc AsmApEntryPointAcquireLock 43 44 mov esp, [mTopOfApCommonStack] 45 call ApEntryPointInC 46 47 cli 48 49lock btc dword ptr [ApStackLock], 0 50 51 mov eax, 100h 52AsmApEntryPointShareLock: 53 pause 54 dec eax 55 jnz AsmApEntryPointShareLock 56 57 jmp AsmApEntryPoint 58 59AsmApEntryPoint ENDP 60 61;------------------------------------------------------------------------------ 62; VOID 63; EFIAPI 64; AsmApDoneWithCommonStack ( 65; VOID 66; ); 67;------------------------------------------------------------------------------ 68AsmApDoneWithCommonStack PROC PUBLIC 69 70lock btc dword ptr [ApStackLock], 0 71 ret 72 73AsmApDoneWithCommonStack ENDP 74 75END 76