EFI_STATUS Status;\r
EFI_PXE_BASE_CODE_PROTOCOL *Pxe;\r
UINT64 TftpBufferSize;\r
- VOID* TftpBuffer;\r
EFI_IP_ADDRESS ServerIp;\r
IPv4_DEVICE_PATH* IPv4DevicePathNode;\r
FILEPATH_DEVICE_PATH* FilePathDevicePath;\r
}\r
\r
// Allocate a buffer to hold the whole file.\r
- TftpBuffer = AllocatePool (TftpBufferSize);\r
- if (TftpBuffer == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ Status = gBS->AllocatePages (\r
+ Type,\r
+ EfiBootServicesCode,\r
+ EFI_SIZE_TO_PAGES (TftpBufferSize),\r
+ Image\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "Failed to allocate space for kernel image: %r\n", Status));\r
goto EXIT;\r
}\r
\r
Status = Pxe->Mtftp (\r
Pxe,\r
EFI_PXE_BASE_CODE_TFTP_READ_FILE,\r
- TftpBuffer,\r
+ (VOID *)(UINTN)*Image,\r
FALSE,\r
&TftpBufferSize,\r
NULL,\r
FALSE\r
);\r
if (EFI_ERROR (Status)) {\r
- FreePool (TftpBuffer);\r
- } else if (ImageSize != NULL) {\r
- *Image = (UINTN)TftpBuffer;\r
+ gBS->FreePages (*Image, EFI_SIZE_TO_PAGES (TftpBufferSize));\r
+ } else {\r
*ImageSize = (UINTN)TftpBufferSize;\r
}\r
\r