static struct file __initdata dtbfile;
static void __initdata *fdt;
static void __initdata *memmap;
+#if defined (CONFIG_ACPI) && defined (CONFIG_ARM)
+static struct meminfo __initdata acpi_mem;
+#endif
static int __init setup_chosen_node(void *fdt, int *addr_cells, int *size_cells)
{
{
int Index;
int i = 0;
+#ifdef CONFIG_ACPI
+ int j = 0;
+#endif
EFI_MEMORY_DESCRIPTOR *desc_ptr = map;
for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
bootinfo.mem.bank[i].size = desc_ptr->NumberOfPages * EFI_PAGE_SIZE;
++i;
}
+#if defined (CONFIG_ACPI) && defined (CONFIG_ARM)
+ else if ( desc_ptr->Type == EfiACPIReclaimMemory )
+ {
+ if ( j >= NR_MEM_BANKS )
+ {
+ PrintStr(L"Error: All " __stringify(NR_MEM_BANKS)
+ " acpi meminfo mem banks exhausted.\r\n");
+ return EFI_LOAD_ERROR;
+ }
+ acpi_mem.bank[j].start = desc_ptr->PhysicalStart;
+ acpi_mem.bank[j].size = desc_ptr->NumberOfPages * EFI_PAGE_SIZE;
+ ++j;
+ }
+#endif
desc_ptr = NextMemoryDescriptor(desc_ptr, desc_size);
}
bootinfo.mem.nr_banks = i;
+#if defined (CONFIG_ACPI) && defined (CONFIG_ARM)
+ acpi_mem.nr_banks = j;
+#endif
return EFI_SUCCESS;
}