]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/BaseLibInternals.h
1. Add Assert in SetJump.S
[mirror_edk2.git] / MdePkg / Library / BaseLib / BaseLibInternals.h
CommitLineData
878ddf1f 1/** @file\r
2 Declaration of internal functions in BaseLib.\r
3\r
4 Copyright (c) 2006, Intel Corporation<BR>\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13 Module Name: BaseLibInternals.h\r
14\r
15**/\r
16\r
17#ifndef __BASE_LIB_INTERNALS__\r
18#define __BASE_LIB_INTERNALS__\r
19\r
20//\r
21// Math functions\r
22//\r
23\r
24UINT64\r
25EFIAPI\r
26InternalMathLShiftU64 (\r
27 IN UINT64 Operand,\r
28 IN UINTN Count\r
29 );\r
30\r
31UINT64\r
32EFIAPI\r
33InternalMathRShiftU64 (\r
34 IN UINT64 Operand,\r
35 IN UINTN Count\r
36 );\r
37\r
38UINT64\r
39EFIAPI\r
40InternalMathARShiftU64 (\r
41 IN UINT64 Operand,\r
42 IN UINTN Count\r
43 );\r
44\r
45UINT64\r
46EFIAPI\r
47InternalMathLRotU64 (\r
48 IN UINT64 Operand,\r
49 IN UINTN Count\r
50 );\r
51\r
52UINT64\r
53EFIAPI\r
54InternalMathRRotU64 (\r
55 IN UINT64 Operand,\r
56 IN UINTN Count\r
57 );\r
58\r
59UINT64\r
60EFIAPI\r
61InternalMathSwapBytes64 (\r
62 IN UINT64 Operand\r
63 );\r
64\r
65UINT64\r
66EFIAPI\r
67InternalMathMultU64x32 (\r
68 IN UINT64 Multiplicand,\r
69 IN UINT32 Multiplier\r
70 );\r
71\r
72UINT64\r
73EFIAPI\r
74InternalMathMultU64x64 (\r
75 IN UINT64 Multiplicand,\r
76 IN UINT64 Multiplier\r
77 );\r
78\r
79UINT64\r
80EFIAPI\r
81InternalMathDivU64x32 (\r
82 IN UINT64 Dividend,\r
83 IN UINT32 Divisor\r
84 );\r
85\r
86UINT32\r
87EFIAPI\r
88InternalMathModU64x32 (\r
89 IN UINT64 Dividend,\r
90 IN UINT32 Divisor\r
91 );\r
92\r
93UINT64\r
94EFIAPI\r
95InternalMathDivRemU64x32 (\r
96 IN UINT64 Dividend,\r
97 IN UINT32 Divisor,\r
98 OUT UINT32 *Remainder\r
99 );\r
100\r
101UINT64\r
102EFIAPI\r
103InternalMathDivRemU64x64 (\r
104 IN UINT64 Dividend,\r
105 IN UINT64 Divisor,\r
106 OUT UINT64 *Remainder\r
107 );\r
108\r
109INT64\r
110EFIAPI\r
111InternalMathDivRemS64x64 (\r
112 IN INT64 Dividend,\r
113 IN INT64 Divisor,\r
114 OUT INT64 *Remainder\r
115 );\r
116\r
7d7c2b46 117VOID\r
118EFIAPI\r
119InternalSwitchStack (\r
120 IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
121 IN VOID *Context1,\r
122 IN VOID *Context2,\r
123 IN VOID *NewStack\r
124 );\r
125\r
878ddf1f 126//\r
127// Ia32 and x64 specific functions\r
128//\r
129\r
130VOID\r
131EFIAPI\r
132InternalX86ReadGdtr (\r
133 OUT IA32_DESCRIPTOR *Gdtr\r
134 );\r
135\r
136VOID\r
137EFIAPI\r
138InternalX86WriteGdtr (\r
139 IN CONST IA32_DESCRIPTOR *Gdtr\r
140 );\r
141\r
142VOID\r
143EFIAPI\r
144InternalX86ReadIdtr (\r
145 OUT IA32_DESCRIPTOR *Idtr\r
146 );\r
147\r
148VOID\r
149EFIAPI\r
150InternalX86WriteIdtr (\r
151 IN CONST IA32_DESCRIPTOR *Idtr\r
152 );\r
153\r
154VOID\r
155EFIAPI\r
156InternalX86FxSave (\r
157 OUT IA32_FX_BUFFER *Buffer\r
158 );\r
159\r
160VOID\r
161EFIAPI\r
162InternalX86FxRestore (\r
163 IN CONST IA32_FX_BUFFER *Buffer\r
164 );\r
165\r
166VOID\r
167EFIAPI\r
168InternalX86EnablePaging32 (\r
169 IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
170 IN VOID *Context1, OPTIONAL\r
171 IN VOID *Context2, OPTIONAL\r
172 IN VOID *NewStack\r
173 );\r
174\r
175VOID\r
176EFIAPI\r
177InternalX86DisablePaging32 (\r
178 IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
179 IN VOID *Context1, OPTIONAL\r
180 IN VOID *Context2, OPTIONAL\r
181 IN VOID *NewStack\r
182 );\r
183\r
184VOID\r
185EFIAPI\r
186InternalX86EnablePaging64 (\r
187 IN UINT16 Cs,\r
188 IN UINT64 EntryPoint,\r
189 IN UINT64 Context1, OPTIONAL\r
190 IN UINT64 Context2, OPTIONAL\r
191 IN UINT64 NewStack\r
192 );\r
193\r
194VOID\r
195EFIAPI\r
196InternalX86DisablePaging64 (\r
197 IN UINT16 Cs,\r
198 IN UINT32 EntryPoint,\r
199 IN UINT32 Context1, OPTIONAL\r
200 IN UINT32 Context2, OPTIONAL\r
201 IN UINT32 NewStack\r
202 );\r
203\r
204#endif\r