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