]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/BaseLibInternals.h
0c32e1bd2c46b74cbf2620bf298f4c30e7a8ab26
[mirror_edk2.git] / MdePkg / Library / BaseLib / BaseLibInternals.h
1 /** @file
2 Declaration of internal functions in BaseLib.
3
4 Copyright (c) 2006, Intel Corporation<BR>
5 All rights reserved. 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 Module Name: BaseLibInternals.h
14
15 **/
16
17 #ifndef __BASE_LIB_INTERNALS__
18 #define __BASE_LIB_INTERNALS__
19
20 //
21 // Math functions
22 //
23
24 UINT64
25 EFIAPI
26 InternalMathLShiftU64 (
27 IN UINT64 Operand,
28 IN UINTN Count
29 );
30
31 UINT64
32 EFIAPI
33 InternalMathRShiftU64 (
34 IN UINT64 Operand,
35 IN UINTN Count
36 );
37
38 UINT64
39 EFIAPI
40 InternalMathARShiftU64 (
41 IN UINT64 Operand,
42 IN UINTN Count
43 );
44
45 UINT64
46 EFIAPI
47 InternalMathLRotU64 (
48 IN UINT64 Operand,
49 IN UINTN Count
50 );
51
52 UINT64
53 EFIAPI
54 InternalMathRRotU64 (
55 IN UINT64 Operand,
56 IN UINTN Count
57 );
58
59 UINT64
60 EFIAPI
61 InternalMathSwapBytes64 (
62 IN UINT64 Operand
63 );
64
65 UINT64
66 EFIAPI
67 InternalMathMultU64x32 (
68 IN UINT64 Multiplicand,
69 IN UINT32 Multiplier
70 );
71
72 UINT64
73 EFIAPI
74 InternalMathMultU64x64 (
75 IN UINT64 Multiplicand,
76 IN UINT64 Multiplier
77 );
78
79 UINT64
80 EFIAPI
81 InternalMathDivU64x32 (
82 IN UINT64 Dividend,
83 IN UINT32 Divisor
84 );
85
86 UINT32
87 EFIAPI
88 InternalMathModU64x32 (
89 IN UINT64 Dividend,
90 IN UINT32 Divisor
91 );
92
93 UINT64
94 EFIAPI
95 InternalMathDivRemU64x32 (
96 IN UINT64 Dividend,
97 IN UINT32 Divisor,
98 OUT UINT32 *Remainder
99 );
100
101 UINT64
102 EFIAPI
103 InternalMathDivRemU64x64 (
104 IN UINT64 Dividend,
105 IN UINT64 Divisor,
106 OUT UINT64 *Remainder
107 );
108
109 INT64
110 EFIAPI
111 InternalMathDivRemS64x64 (
112 IN INT64 Dividend,
113 IN INT64 Divisor,
114 OUT INT64 *Remainder
115 );
116
117 VOID
118 EFIAPI
119 InternalSwitchStack (
120 IN SWITCH_STACK_ENTRY_POINT EntryPoint,
121 IN VOID *Context1,
122 IN VOID *Context2,
123 IN VOID *NewStack
124 );
125
126 //
127 // Ia32 and x64 specific functions
128 //
129
130 VOID
131 EFIAPI
132 InternalX86ReadGdtr (
133 OUT IA32_DESCRIPTOR *Gdtr
134 );
135
136 VOID
137 EFIAPI
138 InternalX86WriteGdtr (
139 IN CONST IA32_DESCRIPTOR *Gdtr
140 );
141
142 VOID
143 EFIAPI
144 InternalX86ReadIdtr (
145 OUT IA32_DESCRIPTOR *Idtr
146 );
147
148 VOID
149 EFIAPI
150 InternalX86WriteIdtr (
151 IN CONST IA32_DESCRIPTOR *Idtr
152 );
153
154 VOID
155 EFIAPI
156 InternalX86FxSave (
157 OUT IA32_FX_BUFFER *Buffer
158 );
159
160 VOID
161 EFIAPI
162 InternalX86FxRestore (
163 IN CONST IA32_FX_BUFFER *Buffer
164 );
165
166 VOID
167 EFIAPI
168 InternalX86EnablePaging32 (
169 IN SWITCH_STACK_ENTRY_POINT EntryPoint,
170 IN VOID *Context1, OPTIONAL
171 IN VOID *Context2, OPTIONAL
172 IN VOID *NewStack
173 );
174
175 VOID
176 EFIAPI
177 InternalX86DisablePaging32 (
178 IN SWITCH_STACK_ENTRY_POINT EntryPoint,
179 IN VOID *Context1, OPTIONAL
180 IN VOID *Context2, OPTIONAL
181 IN VOID *NewStack
182 );
183
184 VOID
185 EFIAPI
186 InternalX86EnablePaging64 (
187 IN UINT16 Cs,
188 IN UINT64 EntryPoint,
189 IN UINT64 Context1, OPTIONAL
190 IN UINT64 Context2, OPTIONAL
191 IN UINT64 NewStack
192 );
193
194 VOID
195 EFIAPI
196 InternalX86DisablePaging64 (
197 IN UINT16 Cs,
198 IN UINT32 EntryPoint,
199 IN UINT32 Context1, OPTIONAL
200 IN UINT32 Context2, OPTIONAL
201 IN UINT32 NewStack
202 );
203
204 #endif