summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2022-02-13 08:25:54 +1100
committerDamien Zammit <damien@zamaudio.com>2022-02-13 08:25:54 +1100
commit7d89c6af5062ec609e2b2f081639a27c34467754 (patch)
treed022f82c8e0d95c60486ff952ac6d3203b8adad9
parent64c73eea8732cc890fce2281a234ddc0fd55750a (diff)
fix up offsetsacpica-nothread-fixup
-rw-r--r--libacpica/acpi_init.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/libacpica/acpi_init.c b/libacpica/acpi_init.c
index 0214498c..6daf194d 100644
--- a/libacpica/acpi_init.c
+++ b/libacpica/acpi_init.c
@@ -163,11 +163,13 @@ acpi_physical_address
acpi_os_get_root_pointer(void)
{
int err;
- uintptr_t pa_root = (uintptr_t)0;
+ //uintptr_t pa_root = (uintptr_t)0;
uintptr_t pa_sdt = (uintptr_t)0;
bool is_64bit = false;
- err = acpi_get_root_table_pointer(&pa_root, &pa_sdt, &is_64bit);
+ acpi_physical_address pa_root;
+ //err = acpi_get_root_table_pointer(&pa_root, &pa_sdt, &is_64bit);
+ err = acpi_find_root_pointer(&pa_root);
if (err)
acpi_os_printf("Can't find root table ptr\n");
return (acpi_physical_address)pa_root;
@@ -192,9 +194,11 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
mach_port_t device_master;
device_t mem_device;
mach_port_t memobj;
- void *virt_addr;
- uintptr_t pa_offset = phys & ~(sysconf(_SC_PAGE_SIZE) - 1);
- uintptr_t pa_start = phys - pa_offset;
+ vm_address_t vaddr = 0;
+ uint32_t pa_offset = phys % sysconf(_SC_PAGE_SIZE);
+ uint32_t pa_start = phys - pa_offset;
+
+ size = round_page(size + pa_offset);
err = get_privileged_ports (0, &device_master);
if (err) {
@@ -210,17 +214,16 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
}
err =
- device_map (mem_device, VM_PROT_READ | VM_PROT_WRITE, pa_offset, size + pa_start, &memobj, 0);
+ device_map (mem_device, VM_PROT_READ | VM_PROT_WRITE, pa_start, size, &memobj, 0);
mach_port_deallocate (mach_task_self (), mem_device);
if (! err) {
- virt_addr = 0;
err =
- vm_map (mach_task_self (), (vm_address_t *)&virt_addr, size + pa_start, 0, 1,
+ vm_map (mach_task_self (), &vaddr, size, 0, 1,
memobj, 0, 0,
VM_PROT_READ | VM_PROT_WRITE,
VM_PROT_READ | VM_PROT_WRITE,
- VM_INHERIT_NONE);
+ VM_INHERIT_SHARE);
mach_port_deallocate (mach_task_self (), memobj);
}
@@ -229,7 +232,7 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
return (void *)-1;
}
- return virt_addr + pa_start;
+ return (void *)(vaddr + pa_offset);
}
acpi_status