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