mirror of
https://github.com/acidanthera/audk.git
synced 2025-09-25 02:37:39 +02:00
BaseTools/CommonLib: Guarantee 8-byte alignment for AllocatePool()
This commit is contained in:
parent
c382e9c571
commit
f3fedad22d
@ -557,6 +557,33 @@ Returns:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
void *
|
||||||
|
InternalAlignedAlloc (
|
||||||
|
size_t Alignment,
|
||||||
|
size_t Size
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
|
return aligned_alloc (Alignment, Size);
|
||||||
|
#else
|
||||||
|
return _aligned_malloc (Size, Alignment);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void
|
||||||
|
InternalAlignedFree (
|
||||||
|
void *Ptr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
|
free (Ptr);
|
||||||
|
#else
|
||||||
|
_aligned_free (Ptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PhaseAllocatePages (
|
PhaseAllocatePages (
|
||||||
@ -572,13 +599,7 @@ PhaseAllocatePages (
|
|||||||
ASSERT (Type == AllocateAnyPages);
|
ASSERT (Type == AllocateAnyPages);
|
||||||
|
|
||||||
BufferSize = EFI_PAGES_TO_SIZE (Pages);
|
BufferSize = EFI_PAGES_TO_SIZE (Pages);
|
||||||
|
Buffer = InternalAlignedAlloc (EFI_PAGE_SIZE, BufferSize);
|
||||||
#ifndef _WIN32
|
|
||||||
Buffer = aligned_alloc (EFI_PAGE_SIZE, BufferSize);
|
|
||||||
#else
|
|
||||||
Buffer = _aligned_malloc (BufferSize, EFI_PAGE_SIZE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Buffer == NULL) {
|
if (Buffer == NULL) {
|
||||||
return EFI_OUT_OF_RESOURCES;
|
return EFI_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
@ -598,12 +619,7 @@ PhaseFreePages (
|
|||||||
VOID *Buffer;
|
VOID *Buffer;
|
||||||
|
|
||||||
Buffer = (VOID *)(UINTN)Memory;
|
Buffer = (VOID *)(UINTN)Memory;
|
||||||
|
InternalAlignedFree (Buffer);
|
||||||
#ifndef _WIN32
|
|
||||||
free (Buffer);
|
|
||||||
#else
|
|
||||||
_aligned_free (Buffer);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -615,7 +631,7 @@ PhaseAllocatePool (
|
|||||||
IN UINTN AllocationSize
|
IN UINTN AllocationSize
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return malloc (AllocationSize);
|
return InternalAlignedAlloc (8, AllocationSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
@ -625,7 +641,7 @@ PhaseFreePool (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
ASSERT (Buffer != NULL);
|
ASSERT (Buffer != NULL);
|
||||||
free (Buffer);
|
InternalAlignedFree (Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
Loading…
x
Reference in New Issue
Block a user