From a717dbdd0087f9ce45f0a474211e760d1467013f Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 3 Feb 2024 22:06:39 -0500 Subject: [PATCH] fix acpi on uefi, kprint fixes --- src/arch/amd64/acpi.c | 12 +++++------- src/arch/amd64/cpu/backtrace.c | 4 ++-- src/arch/amd64/mboot.c | 2 +- src/kmain.c | 2 +- src/print.c | 5 +++++ 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/arch/amd64/acpi.c b/src/arch/amd64/acpi.c index 887bfef..a7f38b6 100644 --- a/src/arch/amd64/acpi.c +++ b/src/arch/amd64/acpi.c @@ -38,12 +38,10 @@ struct xsdp { char oemid[6]; uint8_t revision; uint32_t rsdt_addr; - struct { - uint32_t length; - uint64_t xsdt_addr; - uint8_t extendeid_checksum; - uint8_t reserved[3]; - } ext; + uint32_t length; + uint64_t xsdt_addr; + uint8_t extendeid_checksum; + uint8_t reserved[3]; } __attribute__((packed)); // root system descriptor table @@ -321,7 +319,7 @@ int acpi_init(void *rootsdp) { state.version = 2; struct xsdp *xsdp = (struct xsdp *) rsdp; kprintf("ACPI 2.0\n"); - acpi_load_table(xsdp->ext.xsdt_addr); + acpi_load_table(xsdp->xsdt_addr); } else { panic("invalid acpi rev: %d\n", rsdp->revision); } diff --git a/src/arch/amd64/cpu/backtrace.c b/src/arch/amd64/cpu/backtrace.c index 181df27..357e424 100644 --- a/src/arch/amd64/cpu/backtrace.c +++ b/src/arch/amd64/cpu/backtrace.c @@ -36,9 +36,9 @@ void log_backtrace(void) { void log_backtrace_ex(void *ip, void *bp) { struct stackframe *frame = bp; kputs("Stack trace:\n"); - kprintf(" 0x%p\n", ip); + kprintf(" %p\n", ip); while (frame) { - kprintf(" 0x%p\n", frame->rip); + kprintf(" %p\n", frame->rip); frame = frame->rbp; } diff --git a/src/arch/amd64/mboot.c b/src/arch/amd64/mboot.c index 606c888..9fd7fc2 100644 --- a/src/arch/amd64/mboot.c +++ b/src/arch/amd64/mboot.c @@ -184,7 +184,7 @@ static void read_memory_map( type = segment_type[6]; else type = segment_type[seg->type]; - kprintf("ADDR: 0x%16p LEN: %4s TYPE: %s (%d)\n", + kprintf("ADDR: %16p LEN: %4s TYPE: %s (%d)\n", (void *)seg->addr, btoa(seg->len, buf), type, diff --git a/src/kmain.c b/src/kmain.c index 07165bc..b04de49 100644 --- a/src/kmain.c +++ b/src/kmain.c @@ -13,7 +13,7 @@ void kmain(struct boot_info *info) { screen_init(); acpi_init(info->acpi_table); - kprintf("enterd kmain\n"); + kprintf("entered kmain\n"); //acpi_shutdown(); diff --git a/src/print.c b/src/print.c index a7ce5f6..a95e9bf 100644 --- a/src/print.c +++ b/src/print.c @@ -709,6 +709,11 @@ void kvprintf(const char *format, va_list args) { goto error; } + if (conversion == FMT_PTR) { + flags |= FLG_ALTERNATE; + flags |= FLG_ZERO; + } + print_unsigned_number(num, flags, width, precision, type, cc); } else if (conversion == FMT_STR) { char *str = va_arg(args, char *);