]>
Commit | Line | Data |
---|---|---|
bcecde14 | 1 | /** @file\r |
2 | \r | |
3 | Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r | |
4 | \r | |
5 | This program and the accompanying materials\r | |
6 | are licensed and made available under the terms and conditions\r | |
7 | of the BSD License which accompanies this distribution. The\r | |
8 | full text of the license may be found at\r | |
9 | http://opensource.org/licenses/bsd-license.php\r | |
10 | \r | |
11 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
12 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
13 | \r | |
14 | **/\r | |
15 | \r | |
16 | #ifndef _IPF_THUNK_H_\r | |
17 | #define _IPF_THUNK_H_\r | |
18 | \r | |
19 | #include "LegacyBiosInterface.h"\r | |
20 | #include <IndustryStandard/Sal.h>\r | |
21 | \r | |
22 | /**\r | |
23 | Template of real mode code.\r | |
24 | \r | |
25 | @param CodeStart Start address of code.\r | |
26 | @param CodeEnd End address of code\r | |
27 | @param ReverseThunkStart Start of reverse thunk.\r | |
28 | @param IntThunk Low memory thunk.\r | |
29 | \r | |
30 | **/\r | |
31 | VOID\r | |
32 | RealModeTemplate (\r | |
33 | OUT UINTN *CodeStart,\r | |
34 | OUT UINTN *CodeEnd,\r | |
35 | OUT UINTN *ReverseThunkStart,\r | |
36 | LOW_MEMORY_THUNK *IntThunk\r | |
37 | );\r | |
38 | \r | |
39 | /**\r | |
40 | Register physical address of Esal Data Area\r | |
41 | \r | |
42 | @param ReverseThunkCodeAddress Reverse Thunk Address\r | |
43 | @param IntThunkAddress IntThunk Address\r | |
44 | \r | |
45 | @retval EFI_SUCCESS ESAL data area set successfully.\r | |
46 | \r | |
47 | **/\r | |
48 | EFI_STATUS\r | |
49 | EsalSetSalDataArea (\r | |
50 | IN UINTN ReverseThunkCodeAddress,\r | |
51 | IN UINTN IntThunkAddress\r | |
52 | );\r | |
53 | \r | |
54 | /**\r | |
55 | Get address of reverse thunk.\r | |
56 | \r | |
57 | @retval EFI_SAL_SUCCESS Address of reverse thunk returned successfully.\r | |
58 | \r | |
59 | **/\r | |
60 | SAL_RETURN_REGS\r | |
61 | EsalGetReverseThunkAddress (\r | |
62 | VOID\r | |
63 | );\r | |
64 | \r | |
65 | typedef struct {\r | |
66 | UINT32 Eax; // 0\r | |
67 | UINT32 Ecx; // 4\r | |
68 | UINT32 Edx; // 8\r | |
69 | UINT32 Ebx; // 12\r | |
70 | UINT32 Esp; // 16\r | |
71 | UINT32 Ebp; // 20\r | |
72 | UINT32 Esi; // 24\r | |
73 | UINT32 Edi; // 28\r | |
74 | UINT32 Eflag; // 32\r | |
75 | UINT32 Eip; // 36\r | |
76 | UINT16 Cs; // 40\r | |
77 | UINT16 Ds; // 42\r | |
78 | UINT16 Es; // 44\r | |
79 | UINT16 Fs; // 46\r | |
80 | UINT16 Gs; // 48\r | |
81 | UINT16 Ss; // 50\r | |
82 | } IPF_DWORD_REGS;\r | |
83 | \r | |
84 | /**\r | |
85 | Entrypoint of IA32 code.\r | |
86 | \r | |
87 | @param CallTypeData Data of call type\r | |
88 | @param DwordRegister Register set of IA32 general registers\r | |
89 | and segment registers\r | |
90 | @param StackPointer Stack pointer.\r | |
91 | @param StackSize Size of stack.\r | |
92 | \r | |
93 | **/\r | |
94 | VOID\r | |
95 | EfiIaEntryPoint (\r | |
96 | UINT64 CallTypeData,\r | |
97 | IPF_DWORD_REGS *DwordRegister,\r | |
98 | UINT64 StackPointer,\r | |
99 | UINT64 StackSize\r | |
100 | );\r | |
101 | \r | |
102 | #endif\r |