• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
14extern ASM_PFX(mTopOfApCommonStack)
15extern ASM_PFX(ApEntryPointInC)
16
17SECTION .data
18
19;
20; This lock only allows one AP to use the mTopOfApCommonStack stack at a time
21;
22ApStackLock:
23    dd      0
24
25SECTION .text
26
27;------------------------------------------------------------------------------
28; VOID
29; EFIAPI
30; AsmApEntryPoint (
31;   VOID
32;   );
33;------------------------------------------------------------------------------
34global ASM_PFX(AsmApEntryPoint)
35ASM_PFX(AsmApEntryPoint):
36    cli
37AsmApEntryPointAcquireLock:
38lock bts    dword [ApStackLock], 0
39    pause
40    jc      AsmApEntryPointAcquireLock
41
42    mov     esp, [ASM_PFX(mTopOfApCommonStack)]
43    call    ASM_PFX(ApEntryPointInC)
44
45    cli
46
47lock btc    dword [ApStackLock], 0
48
49    mov     eax, 0x100
50AsmApEntryPointShareLock:
51    pause
52    dec     eax
53    jnz     AsmApEntryPointShareLock
54
55    jmp     ASM_PFX(AsmApEntryPoint)
56
57;------------------------------------------------------------------------------
58; VOID
59; EFIAPI
60; AsmApDoneWithCommonStack (
61;   VOID
62;   );
63;------------------------------------------------------------------------------
64global ASM_PFX(AsmApDoneWithCommonStack)
65ASM_PFX(AsmApDoneWithCommonStack):
66lock btc    dword [ApStackLock], 0
67    ret
68
69