• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1;; @file
2;  Provide FSP API entry points.
3;
4; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5; This program and the accompanying materials
6; are licensed and made available under the terms and conditions of the BSD License
7; which accompanies this distribution.  The full text of the license may be found at
8; http://opensource.org/licenses/bsd-license.php.
9;
10; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12;;
13
14    SECTION .text
15
16;
17; Following functions will be provided in C
18;
19extern ASM_PFX(Loader2PeiSwitchStack)
20extern ASM_PFX(FspApiCallingCheck)
21
22;
23; Following functions will be provided in ASM
24;
25extern ASM_PFX(FspApiCommonContinue)
26extern ASM_PFX(AsmGetFspInfoHeader)
27
28;----------------------------------------------------------------------------
29; FspApiCommon API
30;
31; This is the FSP API common entry point to resume the FSP execution
32;
33;----------------------------------------------------------------------------
34global ASM_PFX(FspApiCommon)
35ASM_PFX(FspApiCommon):
36  ;
37  ; EAX holds the API index
38  ;
39
40  ;
41  ; Stack must be ready
42  ;
43  push   eax
44  add    esp, 4
45  cmp    eax, dword  [esp - 4]
46  jz     FspApiCommon1
47  mov    eax, 080000003h
48  jmp    exit
49
50FspApiCommon1:
51  ;
52  ; Verify the calling condition
53  ;
54  pushad
55  push   DWORD [esp + (4 * 8 + 4)]  ; push ApiParam
56  push   eax                ; push ApiIdx
57  call   ASM_PFX(FspApiCallingCheck)
58  add    esp, 8
59  cmp    eax, 0
60  jz     FspApiCommon2
61  mov    dword  [esp + (4 * 7)], eax
62  popad
63exit:
64  ret
65
66FspApiCommon2:
67  popad
68  cmp    eax, 3   ; FspMemoryInit API
69  jz     FspApiCommon3
70
71  call   ASM_PFX(AsmGetFspInfoHeader)
72  jmp    ASM_PFX(Loader2PeiSwitchStack)
73
74FspApiCommon3:
75  jmp    ASM_PFX(FspApiCommonContinue)
76
77