1 #include "lunaix/syslog.h"
3 #include <lunaix/mm/kalloc.h>
8 mcfg_parse(acpi_sdthdr_t* mcfg, acpi_context* toc)
10 size_t alloc_num = (mcfg->length - sizeof(acpi_sdthdr_t) - 8) /
11 sizeof(struct acpi_mcfg_alloc);
12 struct acpi_mcfg_alloc* allocs =
13 (struct acpi_mcfg_alloc*)((uintptr_t)mcfg + (sizeof(acpi_sdthdr_t) + 8));
15 toc->mcfg.alloc_num = alloc_num;
16 toc->mcfg.allocations =
17 lxmalloc(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,