39 MCFG_t* mcfg = (MCFG_t*)
addr;
40 struct SDT* sdt = (
struct SDT*) &mcfg->sdt;
45 size_t header_size =
sizeof(
struct SDT) + sizeof(
uint64_t);
46 size_t device_count = (sdt->
Length - header_size)
48 LOG_INFO(
"PCIE",
"device count : %d", device_count);
52 for (
size_t i = 0; i < device_count; i++) {
57 LOG_INFO(
"PCIE CONF",
"start : %d end : %d", start, end);
59 size_t mapping_size = (
size_t) (end - start + 1) * 1024 * 1024;
60 size_t mapping_pages =
68 LOG_INFO(
"PCIE CONF",
"found vaddr : 0x%lx (%d KB)", vaddr,
75 LOG_INFO(
"PCIE CONF",
"base addr : 0x%lx -> 0x%lx",
elf_section_map uintptr_t base
void paging_reload(page_t p)
page_t paging_get_highest_page_map(void)
void vxMultipleMmap(page_t page_dir, uint64_t virt, uint64_t phys, uint64_t size, uint64_t flags)
struct pci_access_ops pci_access_ops_t
void mcfg_parse(uintptr_t addr)
static pci_access_ops_t ecam_ops
static uint32_t ecam_read32(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset)
static void ecam_write32(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset, uint32_t val)
void register_segment(uint16_t seg_id, uint8_t start, uint8_t end, uintptr_t vbase, pci_access_ops_t *ops, PCI_SEGMENT_TYPE type)
#define LOG_INFO(mod, fmt,...)
#define LOG2_INFO(mod, fmt,...)
uint16_t pci_segment_group
uintptr_t vma_lookup_free_vaddr(struct virtual_memory_page *page, mem_vma_region region, size_t size)
struct virtual_memory_page * get_kernel_vmm_page()