From 12a2125f8e6130d5505c34448a4203e1fc422a4b Mon Sep 17 00:00:00 2001 From: 8infy <99danilt@gmail.com> Date: Sat, 28 Sep 2024 15:20:12 +0300 Subject: [PATCH 1/2] acpi: bump to latest uACPI master --- kernel-src/arch/x86-64/acpi.c | 7 +++++-- kernel-src/arch/x86-64/hpet.c | 1 + kernel-src/include/x86-64/arch/acpi.h | 8 -------- kernel-src/include/x86-64/arch/pci.h | 1 + kernel-src/io/acpi/acpi.c | 9 +-------- kernel-src/io/acpi/glue.c | 4 ++-- kernel-src/io/acpi/uacpi | 2 +- 7 files changed, 11 insertions(+), 21 deletions(-) delete mode 100644 kernel-src/include/x86-64/arch/acpi.h diff --git a/kernel-src/arch/x86-64/acpi.c b/kernel-src/arch/x86-64/acpi.c index 52685e0f..61212526 100644 --- a/kernel-src/arch/x86-64/acpi.c +++ b/kernel-src/arch/x86-64/acpi.c @@ -2,11 +2,14 @@ #include #include +#include + static volatile struct limine_rsdp_request rsdpreq = { .id = LIMINE_RSDP_REQUEST, .revision = 0 }; -uintptr_t arch_get_rsdp(void) { - return (uintptr_t)FROM_HHDM(rsdpreq.response->address); +uacpi_status uacpi_kernel_get_rsdp(uacpi_phys_addr *outrsdp) { + *outrsdp = (uintptr_t)FROM_HHDM(rsdpreq.response->address); + return UACPI_STATUS_OK; } diff --git a/kernel-src/arch/x86-64/hpet.c b/kernel-src/arch/x86-64/hpet.c index e175a2b5..f1831aac 100644 --- a/kernel-src/arch/x86-64/hpet.c +++ b/kernel-src/arch/x86-64/hpet.c @@ -138,5 +138,6 @@ time_t arch_hpet_init() { write64(HPET_REG_CONFIG, 1 + ((type == TYPE_LEGACY) ? 2 : 0)); + uacpi_table_unref(&tbl); return ticksperus; } diff --git a/kernel-src/include/x86-64/arch/acpi.h b/kernel-src/include/x86-64/arch/acpi.h deleted file mode 100644 index b76c362e..00000000 --- a/kernel-src/include/x86-64/arch/acpi.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _ARCH_ACPI_H -#define _ARCH_ACPI_H - -#include - -uintptr_t arch_get_rsdp(void); - -#endif diff --git a/kernel-src/include/x86-64/arch/pci.h b/kernel-src/include/x86-64/arch/pci.h index 0af39e7c..1c9a710c 100644 --- a/kernel-src/include/x86-64/arch/pci.h +++ b/kernel-src/include/x86-64/arch/pci.h @@ -102,6 +102,7 @@ static void pci_archinit() { __assert(virt); mcfgentries[i].address = (uintptr_t)virt + pageoffset; } + uacpi_table_unref(&tbl); } else { printf("pci: MCFG table not found. Falling back to legacy access mechanism\n"); pci_archread32 = legacy_read32; diff --git a/kernel-src/io/acpi/acpi.c b/kernel-src/io/acpi/acpi.c index 13ebd8a3..fde9f228 100644 --- a/kernel-src/io/acpi/acpi.c +++ b/kernel-src/io/acpi/acpi.c @@ -7,17 +7,10 @@ #include #include #include -#include #include void acpi_early_init(void) { - struct uacpi_init_params params = { - .rsdp = arch_get_rsdp(), - .log_level = UACPI_LOG_INFO, - }; - - uacpi_status ret = uacpi_initialize(¶ms); - __assert(ret == UACPI_STATUS_OK); + __assert(uacpi_initialize(0) == UACPI_STATUS_OK); } void acpi_dopoweroff(uacpi_handle ctx) { diff --git a/kernel-src/io/acpi/glue.c b/kernel-src/io/acpi/glue.c index 34ec379c..2264ecb5 100644 --- a/kernel-src/io/acpi/glue.c +++ b/kernel-src/io/acpi/glue.c @@ -518,10 +518,10 @@ void uacpi_kernel_free_spinlock(uacpi_handle lock) { uacpi_kernel_free(lock); } -uacpi_cpu_flags uacpi_kernel_spinlock_lock(uacpi_handle lock) { +uacpi_cpu_flags uacpi_kernel_lock_spinlock(uacpi_handle lock) { return spinlock_acquireirqclear(lock); } -void uacpi_kernel_spinlock_unlock(uacpi_handle lock, uacpi_cpu_flags intstate) { +void uacpi_kernel_unlock_spinlock(uacpi_handle lock, uacpi_cpu_flags intstate) { spinlock_releaseirqrestore(lock, intstate); } diff --git a/kernel-src/io/acpi/uacpi b/kernel-src/io/acpi/uacpi index c137b78d..9036f48c 160000 --- a/kernel-src/io/acpi/uacpi +++ b/kernel-src/io/acpi/uacpi @@ -1 +1 @@ -Subproject commit c137b78de82c8e71ce6bad5582362bf40b2126d5 +Subproject commit 9036f48cc29c4c4f75661f093311dcb69414d1fa From 026fb51dc8c258666c494def662fde7909d374f6 Mon Sep 17 00:00:00 2001 From: 8infy <99danilt@gmail.com> Date: Sat, 28 Sep 2024 15:20:32 +0300 Subject: [PATCH 2/2] string: make memcpy src const --- kernel-src/include/string.h | 2 +- kernel-src/lib/string.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel-src/include/string.h b/kernel-src/include/string.h index 8eea06b0..e133ef9c 100644 --- a/kernel-src/include/string.h +++ b/kernel-src/include/string.h @@ -6,7 +6,7 @@ size_t strlen(const char *str); char *strcpy(char *dest, const char *src); char *strcat(char *dest, const char *str); -void *memcpy(void *dest, void *src, size_t size); +void *memcpy(void *dest, const void *src, size_t size); void *memset(void *dest, unsigned long what, size_t size); int strcmp(const char *a, const char *b); int strncmp(const char *a, const char *b, size_t c); diff --git a/kernel-src/lib/string.c b/kernel-src/lib/string.c index d610dc16..531bd8e1 100644 --- a/kernel-src/lib/string.c +++ b/kernel-src/lib/string.c @@ -3,7 +3,7 @@ #include #include -void *memcpy(void *d, void *s, size_t c) { +void *memcpy(void *d, const void *s, size_t c) { #ifdef __x86_64__ asm volatile ("rep movsb" : : "S"(s), "D"(d), "c"(c) : "memory"); #else