From 8e365396d4274b8656fd5c3bd47e9e8953db7e59 Mon Sep 17 00:00:00 2001 From: Philipp Hug Date: Fri, 1 Mar 2024 10:59:56 +0000 Subject: riscv/mb/qemu: fix DRAM probing Current version of qemu raise an exception when accessing invalid memory. Modify the probing code to temporary redirect the exception handler like on ARM platform. Also move saving of the stack frame out to trap_util.S to have all at the same place for a future rewrite. TEST=boots to ramstage Change-Id: I25860f688c7546714f6fdbce8c8f96da6400813c Signed-off-by: Philipp Hug Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/c/coreboot/+/36486 Reviewed-by: ron minnich Tested-by: build bot (Jenkins) --- src/lib/ramdetect.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/lib/ramdetect.c') diff --git a/src/lib/ramdetect.c b/src/lib/ramdetect.c index 9a29d0fe94..cef3d57234 100644 --- a/src/lib/ramdetect.c +++ b/src/lib/ramdetect.c @@ -11,15 +11,12 @@ int __weak probe_mb(const uintptr_t dram_start, const uintptr_t size) { uintptr_t addr = dram_start + (size * MiB) - sizeof(uint32_t); - static const uint32_t patterns[] = { - 0x55aa55aa, - 0x12345678 - }; - void *ptr = (void *) addr; + static const uint32_t patterns[] = {0x55aa55aa, 0x12345678}; + void *ptr = (void *)addr; size_t i; /* Don't accidentally clobber oneself. */ - if (OVERLAP(addr, addr + sizeof(uint32_t), (uintptr_t)_program, (uintptr_t) _eprogram)) + if (OVERLAP(addr, addr + sizeof(uint32_t), (uintptr_t)_program, (uintptr_t)_eprogram)) return 1; uint32_t old = read32(ptr); -- cgit v1.2.3