1 /*++ 2 3 Copyright (c) 2004 - 2006, 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 Module Name: 13 14 PeiBind.h 15 16 Abstract: 17 18 Tiano PEI core and PEIM binding macros 19 20 --*/ 21 22 #ifndef _PEI_BIND_H_ 23 #define _PEI_BIND_H_ 24 25 #ifdef EFI_DEBUG 26 27 #ifdef EFI_NT_EMULATOR 28 29 #if (PI_SPECIFICATION_VERSION < 0x00010000) 30 31 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) \ 32 UINTN \ 33 __stdcall \ 34 _DllMainCRTStartup ( \ 35 UINTN Inst, \ 36 UINTN reason_for_call, \ 37 VOID *rserved \ 38 ) \ 39 { \ 40 return 1; \ 41 } \ 42 \ 43 EFI_STATUS \ 44 __declspec( dllexport ) \ 45 __cdecl \ 46 InitializeDriver ( \ 47 IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartup \ 48 ) \ 49 { \ 50 return InitFunction(PeiStartup); \ 51 } 52 53 #else 54 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) \ 55 UINTN \ 56 __stdcall \ 57 _DllMainCRTStartup ( \ 58 UINTN Inst, \ 59 UINTN reason_for_call, \ 60 VOID *rserved \ 61 ) \ 62 { \ 63 return 1; \ 64 } \ 65 \ 66 EFI_STATUS \ 67 __declspec( dllexport ) \ 68 __cdecl \ 69 InitializeDriver ( \ 70 IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, \ 71 IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList \ 72 ) \ 73 { \ 74 return InitFunction(SecCoreData, PpiList); \ 75 } 76 77 #endif 78 79 #define EFI_PEIM_ENTRY_POINT(InitFunction) \ 80 UINTN \ 81 __stdcall \ 82 _DllMainCRTStartup ( \ 83 UINTN Inst, \ 84 UINTN reason_for_call, \ 85 VOID *rserved \ 86 ) \ 87 { \ 88 return 1; \ 89 } \ 90 \ 91 EFI_STATUS \ 92 __declspec( dllexport ) \ 93 __cdecl \ 94 InitializeDriver ( \ 95 IN EFI_FFS_FILE_HEADER *FfsHeader, \ 96 IN EFI_PEI_SERVICES **PeiServices \ 97 ) \ 98 { \ 99 return InitFunction(FfsHeader, PeiServices); \ 100 } 101 102 #else 103 104 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) 105 #define EFI_PEIM_ENTRY_POINT(InitFunction) 106 107 #endif 108 109 #else 110 111 #ifdef EFI_NT_EMULATOR 112 113 #if (PI_SPECIFICATION_VERSION < 0x00010000) 114 115 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) \ 116 EFI_STATUS \ 117 __declspec( dllexport ) \ 118 __cdecl \ 119 InitializeDriver ( \ 120 IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartup \ 121 ) \ 122 { \ 123 return InitFunction(PeiStartup); \ 124 } 125 126 #else 127 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) \ 128 EFI_STATUS \ 129 __declspec( dllexport ) \ 130 __cdecl \ 131 InitializeDriver ( \ 132 IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, \ 133 IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList \ 134 ) \ 135 { \ 136 return InitFunction(SecCoreData, PpiList); \ 137 } 138 139 #endif 140 141 142 #define EFI_PEIM_ENTRY_POINT(InitFunction) \ 143 EFI_STATUS \ 144 __declspec( dllexport ) \ 145 __cdecl \ 146 InitializeDriver ( \ 147 IN EFI_FFS_FILE_HEADER *FfsHeader, \ 148 IN EFI_PEI_SERVICES **PeiServices \ 149 ) \ 150 { \ 151 return InitFunction(FfsHeader, PeiServices); \ 152 } 153 #else 154 155 #define EFI_PEI_CORE_ENTRY_POINT(InitFunction) 156 #define EFI_PEIM_ENTRY_POINT(InitFunction) 157 158 #endif 159 #endif 160 #endif 161