]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Include/Library/UncachedMemoryAllocationLib.h
Working on having a single stack for all modes. This code currently has an issue...
[mirror_edk2.git] / ArmPkg / Include / Library / UncachedMemoryAllocationLib.h
1 /** @file
2
3 Copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>
4
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 **/
14
15 #ifndef __UNCACHED_MEMORY_ALLOCATION_LIB_H__
16 #define __UNCACHED_MEMORY_ALLOCATION_LIB_H__
17
18 /**
19 Converts a cached or uncached address to a physical address suitable for use in SoC registers.
20
21 @param VirtualAddress The pointer to convert.
22
23 @return The physical address of the supplied virtual pointer.
24
25 **/
26 EFI_PHYSICAL_ADDRESS
27 ConvertToPhysicalAddress (
28 IN VOID *VirtualAddress
29 );
30
31 /**
32 Converts a cached or uncached address to a cached address.
33
34 @param Address The pointer to convert.
35
36 @return The address of the cached memory location corresponding to the input address.
37
38 **/
39 VOID *
40 ConvertToCachedAddress (
41 IN VOID *Address
42 );
43
44 /**
45 Converts a cached or uncached address to an uncached address.
46
47 @param Address The pointer to convert.
48
49 @return The address of the uncached memory location corresponding to the input address.
50
51 **/
52 VOID *
53 ConvertToUncachedAddress (
54 IN VOID *Address
55 );
56
57 /**
58 Allocates one or more 4KB pages of type EfiBootServicesData.
59
60 Allocates the number of 4KB pages of type EfiBootServicesData and returns a pointer to the
61 allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
62 is returned. If there is not enough memory remaining to satisfy the request, then NULL is
63 returned.
64
65 @param Pages The number of 4 KB pages to allocate.
66
67 @return A pointer to the allocated buffer or NULL if allocation fails.
68
69 **/
70 VOID *
71 EFIAPI
72 UncachedAllocatePages (
73 IN UINTN Pages
74 );
75
76 /**
77 Allocates one or more 4KB pages of type EfiRuntimeServicesData.
78
79 Allocates the number of 4KB pages of type EfiRuntimeServicesData and returns a pointer to the
80 allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
81 is returned. If there is not enough memory remaining to satisfy the request, then NULL is
82 returned.
83
84 @param Pages The number of 4 KB pages to allocate.
85
86 @return A pointer to the allocated buffer or NULL if allocation fails.
87
88 **/
89 VOID *
90 EFIAPI
91 UncachedAllocateRuntimePages (
92 IN UINTN Pages
93 );
94
95 /**
96 Allocates one or more 4KB pages of type EfiReservedMemoryType.
97
98 Allocates the number of 4KB pages of type EfiReservedMemoryType and returns a pointer to the
99 allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
100 is returned. If there is not enough memory remaining to satisfy the request, then NULL is
101 returned.
102
103 @param Pages The number of 4 KB pages to allocate.
104
105 @return A pointer to the allocated buffer or NULL if allocation fails.
106
107 **/
108 VOID *
109 EFIAPI
110 UncachedAllocateReservedPages (
111 IN UINTN Pages
112 );
113
114 /**
115 Frees one or more 4KB pages that were previously allocated with one of the page allocation
116 functions in the Memory Allocation Library.
117
118 Frees the number of 4KB pages specified by Pages from the buffer specified by Buffer. Buffer
119 must have been allocated on a previous call to the page allocation services of the Memory
120 Allocation Library.
121 If Buffer was not allocated with a page allocation function in the Memory Allocation Library,
122 then ASSERT().
123 If Pages is zero, then ASSERT().
124
125 @param Buffer Pointer to the buffer of pages to free.
126 @param Pages The number of 4 KB pages to free.
127
128 **/
129 VOID
130 EFIAPI
131 UncachedFreePages (
132 IN VOID *Buffer,
133 IN UINTN Pages
134 );
135
136 /**
137 Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.
138
139 Allocates the number of 4KB pages specified by Pages of type EfiBootServicesData with an
140 alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
141 returned. If there is not enough memory at the specified alignment remaining to satisfy the
142 request, then NULL is returned.
143 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
144
145 @param Pages The number of 4 KB pages to allocate.
146 @param Alignment The requested alignment of the allocation. Must be a power of two.
147 If Alignment is zero, then byte alignment is used.
148
149 @return A pointer to the allocated buffer or NULL if allocation fails.
150
151 **/
152 VOID *
153 EFIAPI
154 UncachedAllocateAlignedPages (
155 IN UINTN Pages,
156 IN UINTN Alignment
157 );
158
159 /**
160 Allocates one or more 4KB pages of type EfiRuntimeServicesData at a specified alignment.
161
162 Allocates the number of 4KB pages specified by Pages of type EfiRuntimeServicesData with an
163 alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
164 returned. If there is not enough memory at the specified alignment remaining to satisfy the
165 request, then NULL is returned.
166 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
167
168 @param Pages The number of 4 KB pages to allocate.
169 @param Alignment The requested alignment of the allocation. Must be a power of two.
170 If Alignment is zero, then byte alignment is used.
171
172 @return A pointer to the allocated buffer or NULL if allocation fails.
173
174 **/
175 VOID *
176 EFIAPI
177 UncachedAllocateAlignedRuntimePages (
178 IN UINTN Pages,
179 IN UINTN Alignment
180 );
181
182 /**
183 Allocates one or more 4KB pages of type EfiReservedMemoryType at a specified alignment.
184
185 Allocates the number of 4KB pages specified by Pages of type EfiReservedMemoryType with an
186 alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
187 returned. If there is not enough memory at the specified alignment remaining to satisfy the
188 request, then NULL is returned.
189 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
190
191 @param Pages The number of 4 KB pages to allocate.
192 @param Alignment The requested alignment of the allocation. Must be a power of two.
193 If Alignment is zero, then byte alignment is used.
194
195 @return A pointer to the allocated buffer or NULL if allocation fails.
196
197 **/
198 VOID *
199 EFIAPI
200 UncachedAllocateAlignedReservedPages (
201 IN UINTN Pages,
202 IN UINTN Alignment
203 );
204
205 /**
206 Frees one or more 4KB pages that were previously allocated with one of the aligned page
207 allocation functions in the Memory Allocation Library.
208
209 Frees the number of 4KB pages specified by Pages from the buffer specified by Buffer. Buffer
210 must have been allocated on a previous call to the aligned page allocation services of the Memory
211 Allocation Library.
212 If Buffer was not allocated with an aligned page allocation function in the Memory Allocation
213 Library, then ASSERT().
214 If Pages is zero, then ASSERT().
215
216 @param Buffer Pointer to the buffer of pages to free.
217 @param Pages The number of 4 KB pages to free.
218
219 **/
220 VOID
221 EFIAPI
222 UncachedFreeAlignedPages (
223 IN VOID *Buffer,
224 IN UINTN Pages
225 );
226
227 /**
228 Allocates a buffer of type EfiBootServicesData.
229
230 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData and returns a
231 pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
232 returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
233
234 @param AllocationSize The number of bytes to allocate.
235
236 @return A pointer to the allocated buffer or NULL if allocation fails.
237
238 **/
239 VOID *
240 EFIAPI
241 UncachedAllocatePool (
242 IN UINTN AllocationSize
243 );
244
245 /**
246 Allocates a buffer of type EfiRuntimeServicesData.
247
248 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData and returns
249 a pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
250 returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
251
252 @param AllocationSize The number of bytes to allocate.
253
254 @return A pointer to the allocated buffer or NULL if allocation fails.
255
256 **/
257 VOID *
258 EFIAPI
259 UncachedAllocateRuntimePool (
260 IN UINTN AllocationSize
261 );
262
263 /**
264 Allocates a buffer of type EfieservedMemoryType.
265
266 Allocates the number bytes specified by AllocationSize of type EfieservedMemoryType and returns
267 a pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
268 returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
269
270 @param AllocationSize The number of bytes to allocate.
271
272 @return A pointer to the allocated buffer or NULL if allocation fails.
273
274 **/
275 VOID *
276 EFIAPI
277 UncachedAllocateReservedPool (
278 IN UINTN AllocationSize
279 );
280
281 /**
282 Allocates and zeros a buffer of type EfiBootServicesData.
283
284 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData, clears the
285 buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
286 valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
287 request, then NULL is returned.
288
289 @param AllocationSize The number of bytes to allocate and zero.
290
291 @return A pointer to the allocated buffer or NULL if allocation fails.
292
293 **/
294 VOID *
295 EFIAPI
296 UncachedAllocateZeroPool (
297 IN UINTN AllocationSize
298 );
299
300 /**
301 Allocates and zeros a buffer of type EfiRuntimeServicesData.
302
303 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData, clears the
304 buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
305 valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
306 request, then NULL is returned.
307
308 @param AllocationSize The number of bytes to allocate and zero.
309
310 @return A pointer to the allocated buffer or NULL if allocation fails.
311
312 **/
313 VOID *
314 EFIAPI
315 UncachedAllocateRuntimeZeroPool (
316 IN UINTN AllocationSize
317 );
318
319 /**
320 Allocates and zeros a buffer of type EfiReservedMemoryType.
321
322 Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType, clears the
323 buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
324 valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
325 request, then NULL is returned.
326
327 @param AllocationSize The number of bytes to allocate and zero.
328
329 @return A pointer to the allocated buffer or NULL if allocation fails.
330
331 **/
332 VOID *
333 EFIAPI
334 UncachedAllocateReservedZeroPool (
335 IN UINTN AllocationSize
336 );
337
338 /**
339 Copies a buffer to an allocated buffer of type EfiBootServicesData.
340
341 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData, copies
342 AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
343 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
344 is not enough memory remaining to satisfy the request, then NULL is returned.
345 If Buffer is NULL, then ASSERT().
346 If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
347
348 @param AllocationSize The number of bytes to allocate and zero.
349 @param Buffer The buffer to copy to the allocated buffer.
350
351 @return A pointer to the allocated buffer or NULL if allocation fails.
352
353 **/
354 VOID *
355 EFIAPI
356 UncachedAllocateCopyPool (
357 IN UINTN AllocationSize,
358 IN CONST VOID *Buffer
359 );
360
361 /**
362 Copies a buffer to an allocated buffer of type EfiRuntimeServicesData.
363
364 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData, copies
365 AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
366 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
367 is not enough memory remaining to satisfy the request, then NULL is returned.
368 If Buffer is NULL, then ASSERT().
369 If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
370
371 @param AllocationSize The number of bytes to allocate and zero.
372 @param Buffer The buffer to copy to the allocated buffer.
373
374 @return A pointer to the allocated buffer or NULL if allocation fails.
375
376 **/
377 VOID *
378 EFIAPI
379 UncachedAllocateRuntimeCopyPool (
380 IN UINTN AllocationSize,
381 IN CONST VOID *Buffer
382 );
383
384 /**
385 Copies a buffer to an allocated buffer of type EfiReservedMemoryType.
386
387 Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType, copies
388 AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
389 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
390 is not enough memory remaining to satisfy the request, then NULL is returned.
391 If Buffer is NULL, then ASSERT().
392 If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
393
394 @param AllocationSize The number of bytes to allocate and zero.
395 @param Buffer The buffer to copy to the allocated buffer.
396
397 @return A pointer to the allocated buffer or NULL if allocation fails.
398
399 **/
400 VOID *
401 EFIAPI
402 UncachedAllocateReservedCopyPool (
403 IN UINTN AllocationSize,
404 IN CONST VOID *Buffer
405 );
406
407 /**
408 Frees a buffer that was previously allocated with one of the pool allocation functions in the
409 Memory Allocation Library.
410
411 Frees the buffer specified by Buffer. Buffer must have been allocated on a previous call to the
412 pool allocation services of the Memory Allocation Library.
413 If Buffer was not allocated with a pool allocation function in the Memory Allocation Library,
414 then ASSERT().
415
416 @param Buffer Pointer to the buffer to free.
417
418 **/
419 VOID
420 EFIAPI
421 UncachedFreePool (
422 IN VOID *Buffer
423 );
424
425 /**
426 Allocates a buffer of type EfiBootServicesData at a specified alignment.
427
428 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData with an
429 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
430 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
431 alignment remaining to satisfy the request, then NULL is returned.
432 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
433
434 @param AllocationSize The number of bytes to allocate.
435 @param Alignment The requested alignment of the allocation. Must be a power of two.
436 If Alignment is zero, then byte alignment is used.
437
438 @return A pointer to the allocated buffer or NULL if allocation fails.
439
440 **/
441 VOID *
442 EFIAPI
443 UncachedAllocateAlignedPool (
444 IN UINTN AllocationSize,
445 IN UINTN Alignment
446 );
447
448 /**
449 Allocates a buffer of type EfiRuntimeServicesData at a specified alignment.
450
451 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData with an
452 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
453 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
454 alignment remaining to satisfy the request, then NULL is returned.
455 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
456
457 @param AllocationSize The number of bytes to allocate.
458 @param Alignment The requested alignment of the allocation. Must be a power of two.
459 If Alignment is zero, then byte alignment is used.
460
461 @return A pointer to the allocated buffer or NULL if allocation fails.
462
463 **/
464 VOID *
465 EFIAPI
466 UncachedAllocateAlignedRuntimePool (
467 IN UINTN AllocationSize,
468 IN UINTN Alignment
469 );
470
471 /**
472 Allocates a buffer of type EfieservedMemoryType at a specified alignment.
473
474 Allocates the number bytes specified by AllocationSize of type EfieservedMemoryType with an
475 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
476 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
477 alignment remaining to satisfy the request, then NULL is returned.
478 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
479
480 @param AllocationSize The number of bytes to allocate.
481 @param Alignment The requested alignment of the allocation. Must be a power of two.
482 If Alignment is zero, then byte alignment is used.
483
484 @return A pointer to the allocated buffer or NULL if allocation fails.
485
486 **/
487 VOID *
488 EFIAPI
489 UncachedAllocateAlignedReservedPool (
490 IN UINTN AllocationSize,
491 IN UINTN Alignment
492 );
493
494 /**
495 Allocates and zeros a buffer of type EfiBootServicesData at a specified alignment.
496
497 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData with an
498 alignment specified by Alignment, clears the buffer with zeros, and returns a pointer to the
499 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
500 is not enough memory at the specified alignment remaining to satisfy the request, then NULL is
501 returned.
502 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
503
504 @param AllocationSize The number of bytes to allocate.
505 @param Alignment The requested alignment of the allocation. Must be a power of two.
506 If Alignment is zero, then byte alignment is used.
507
508 @return A pointer to the allocated buffer or NULL if allocation fails.
509
510 **/
511 VOID *
512 EFIAPI
513 UncachedAllocateAlignedZeroPool (
514 IN UINTN AllocationSize,
515 IN UINTN Alignment
516 );
517
518 /**
519 Allocates and zeros a buffer of type EfiRuntimeServicesData at a specified alignment.
520
521 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData with an
522 alignment specified by Alignment, clears the buffer with zeros, and returns a pointer to the
523 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
524 is not enough memory at the specified alignment remaining to satisfy the request, then NULL is
525 returned.
526 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
527
528 @param AllocationSize The number of bytes to allocate.
529 @param Alignment The requested alignment of the allocation. Must be a power of two.
530 If Alignment is zero, then byte alignment is used.
531
532 @return A pointer to the allocated buffer or NULL if allocation fails.
533
534 **/
535 VOID *
536 EFIAPI
537 UncachedAllocateAlignedRuntimeZeroPool (
538 IN UINTN AllocationSize,
539 IN UINTN Alignment
540 );
541
542 /**
543 Allocates and zeros a buffer of type EfieservedMemoryType at a specified alignment.
544
545 Allocates the number bytes specified by AllocationSize of type EfieservedMemoryType with an
546 alignment specified by Alignment, clears the buffer with zeros, and returns a pointer to the
547 allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
548 is not enough memory at the specified alignment remaining to satisfy the request, then NULL is
549 returned.
550 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
551
552 @param AllocationSize The number of bytes to allocate.
553 @param Alignment The requested alignment of the allocation. Must be a power of two.
554 If Alignment is zero, then byte alignment is used.
555
556 @return A pointer to the allocated buffer or NULL if allocation fails.
557
558 **/
559 VOID *
560 EFIAPI
561 UncachedAllocateAlignedReservedZeroPool (
562 IN UINTN AllocationSize,
563 IN UINTN Alignment
564 );
565
566 /**
567 Copies a buffer to an allocated buffer of type EfiBootServicesData at a specified alignment.
568
569 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData type with an
570 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
571 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
572 alignment remaining to satisfy the request, then NULL is returned.
573 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
574
575 @param AllocationSize The number of bytes to allocate.
576 @param Buffer The buffer to copy to the allocated buffer.
577 @param Alignment The requested alignment of the allocation. Must be a power of two.
578 If Alignment is zero, then byte alignment is used.
579
580 @return A pointer to the allocated buffer or NULL if allocation fails.
581
582 **/
583 VOID *
584 EFIAPI
585 UncachedAllocateAlignedCopyPool (
586 IN UINTN AllocationSize,
587 IN CONST VOID *Buffer,
588 IN UINTN Alignment
589 );
590
591 /**
592 Copies a buffer to an allocated buffer of type EfiRuntimeServicesData at a specified alignment.
593
594 Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData type with an
595 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
596 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
597 alignment remaining to satisfy the request, then NULL is returned.
598 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
599
600 @param AllocationSize The number of bytes to allocate.
601 @param Buffer The buffer to copy to the allocated buffer.
602 @param Alignment The requested alignment of the allocation. Must be a power of two.
603 If Alignment is zero, then byte alignment is used.
604
605 @return A pointer to the allocated buffer or NULL if allocation fails.
606
607 **/
608 VOID *
609 EFIAPI
610 UncachedAllocateAlignedRuntimeCopyPool (
611 IN UINTN AllocationSize,
612 IN CONST VOID *Buffer,
613 IN UINTN Alignment
614 );
615
616 /**
617 Copies a buffer to an allocated buffer of type EfiReservedMemoryType at a specified alignment.
618
619 Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType type with an
620 alignment specified by Alignment. The allocated buffer is returned. If AllocationSize is 0,
621 then a valid buffer of 0 size is returned. If there is not enough memory at the specified
622 alignment remaining to satisfy the request, then NULL is returned.
623 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
624
625 @param AllocationSize The number of bytes to allocate.
626 @param Buffer The buffer to copy to the allocated buffer.
627 @param Alignment The requested alignment of the allocation. Must be a power of two.
628 If Alignment is zero, then byte alignment is used.
629
630 @return A pointer to the allocated buffer or NULL if allocation fails.
631
632 **/
633 VOID *
634 EFIAPI
635 UncachedAllocateAlignedReservedCopyPool (
636 IN UINTN AllocationSize,
637 IN CONST VOID *Buffer,
638 IN UINTN Alignment
639 );
640
641 /**
642 Frees a buffer that was previously allocated with one of the aligned pool allocation functions
643 in the Memory Allocation Library.
644
645 Frees the buffer specified by Buffer. Buffer must have been allocated on a previous call to the
646 aligned pool allocation services of the Memory Allocation Library.
647 If Buffer was not allocated with an aligned pool allocation function in the Memory Allocation
648 Library, then ASSERT().
649
650 @param Buffer Pointer to the buffer to free.
651
652 **/
653 VOID
654 EFIAPI
655 UncachedFreeAlignedPool (
656 IN VOID *Buffer
657 );
658
659 VOID
660 EFIAPI
661 UncachedSafeFreePool (
662 IN VOID *Buffer
663 );
664
665 #endif // __UNCACHED_MEMORY_ALLOCATION_LIB_H__