mirror of https://gitlab.com/nakst/essence
Merge branch 'efi2mb' into 'master'
uefi: Increase max kernel size to 2MiB See merge request nakst/essence!9
This commit is contained in:
commit
f0c7e10fe8
|
@ -75,8 +75,10 @@ typedef struct MemoryRegion {
|
||||||
|
|
||||||
#define MAX_MEMORY_REGIONS (1024)
|
#define MAX_MEMORY_REGIONS (1024)
|
||||||
MemoryRegion memoryRegions[1024];
|
MemoryRegion memoryRegions[1024];
|
||||||
#define KERNEL_BUFFER_SIZE (1048576)
|
#define KERNEL_BUFFER_ADDRESS (0x200000)
|
||||||
#define kernelBuffer ((char *) 0x200000)
|
#define KERNEL_BUFFER_SIZE (0x200000)
|
||||||
|
#define kernelBuffer ((char *) KERNEL_BUFFER_ADDRESS)
|
||||||
|
#define KERNEL_BUFFER_END (KERNEL_BUFFER_ADDRESS + KERNEL_BUFFER_SIZE)
|
||||||
#define IID_BUFFER_SIZE (16)
|
#define IID_BUFFER_SIZE (16)
|
||||||
char iidBuffer[IID_BUFFER_SIZE];
|
char iidBuffer[IID_BUFFER_SIZE];
|
||||||
#define MEMORY_MAP_BUFFER_SIZE (16384)
|
#define MEMORY_MAP_BUFFER_SIZE (16384)
|
||||||
|
@ -118,12 +120,12 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE imageHandle, EFI_SYSTEM_TABLE *_systemTabl
|
||||||
uint32_t *framebuffer, horizontalResolution, verticalResolution, pixelsPerScanline;
|
uint32_t *framebuffer, horizontalResolution, verticalResolution, pixelsPerScanline;
|
||||||
ElfHeader *header;
|
ElfHeader *header;
|
||||||
|
|
||||||
// Make sure 0x100000 -> 0x300000 is identity mapped.
|
// Make sure 0x100000 -> 0x400000 is identity mapped.
|
||||||
{
|
{
|
||||||
EFI_PHYSICAL_ADDRESS address = 0x100000;
|
EFI_PHYSICAL_ADDRESS address = 0x100000;
|
||||||
|
|
||||||
if (EFI_SUCCESS != uefi_call_wrapper(systemTable->BootServices->AllocatePages, 4, AllocateAddress, EfiLoaderData, 0x200, &address)) {
|
if (EFI_SUCCESS != uefi_call_wrapper(systemTable->BootServices->AllocatePages, 4, AllocateAddress, EfiLoaderData, (KERNEL_BUFFER_END - address) >> 12, &address)) {
|
||||||
Error(L"Error: Could not allocate 1MB->3MB.\n");
|
Error(L"Error: Could not allocate 1MB->4MB.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +247,7 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE imageHandle, EFI_SYSTEM_TABLE *_systemTabl
|
||||||
for (uintptr_t i = 0; i < size / descriptorSize && memoryRegionCount != MAX_MEMORY_REGIONS - 1; i++) {
|
for (uintptr_t i = 0; i < size / descriptorSize && memoryRegionCount != MAX_MEMORY_REGIONS - 1; i++) {
|
||||||
EFI_MEMORY_DESCRIPTOR *descriptor = (EFI_MEMORY_DESCRIPTOR *) (memoryMapBuffer + i * descriptorSize);
|
EFI_MEMORY_DESCRIPTOR *descriptor = (EFI_MEMORY_DESCRIPTOR *) (memoryMapBuffer + i * descriptorSize);
|
||||||
|
|
||||||
if (descriptor->Type == EfiConventionalMemory && descriptor->PhysicalStart >= 0x300000) {
|
if (descriptor->Type == EfiConventionalMemory && descriptor->PhysicalStart >= KERNEL_BUFFER_END) {
|
||||||
memoryRegions[memoryRegionCount].base = descriptor->PhysicalStart;
|
memoryRegions[memoryRegionCount].base = descriptor->PhysicalStart;
|
||||||
memoryRegions[memoryRegionCount].pages = descriptor->NumberOfPages;
|
memoryRegions[memoryRegionCount].pages = descriptor->NumberOfPages;
|
||||||
memoryRegionCount++;
|
memoryRegionCount++;
|
||||||
|
|
Loading…
Reference in New Issue