1 #include "lunaix/syslog.h"
3 #include <lunaix/mm/valloc.h>
8 mcfg_parse(acpi_sdthdr_t* mcfg, acpi_context* toc)
10 size_t alloc_num = (mcfg->length - sizeof(acpi_sdthdr_t) - 8);
11 alloc_num = alloc_num / sizeof(struct acpi_mcfg_alloc);
13 struct acpi_mcfg_alloc* allocs =
14 (struct acpi_mcfg_alloc*)((ptr_t)mcfg + (sizeof(acpi_sdthdr_t) + 8));
16 toc->mcfg.alloc_num = alloc_num;
17 toc->mcfg.allocations = valloc(sizeof(struct mcfg_alloc_info) * alloc_num);
19 for (size_t i = 0; i < alloc_num; i++) {
20 toc->mcfg.allocations[i] = (struct mcfg_alloc_info){
21 .base_addr = allocs[i].base_addr_lo,
22 .pci_bus_start = allocs[i].pci_bus_start,
23 .pci_bus_end = allocs[i].pci_bus_end,
24 .pci_seg_num = allocs[i].pci_seg_num,