From a6fa01f6ababcac573460df2aa4c97d5f17daf55 Mon Sep 17 00:00:00 2001 From: David Connelly <47538830+dconn-sifive@users.noreply.github.com> Date: Tue, 28 Jul 2020 14:50:13 -0400 Subject: [PATCH] clint and clic base address relocation support --- src/scrub.S | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/scrub.S b/src/scrub.S index cb856910..7342bb62 100644 --- a/src/scrub.S +++ b/src/scrub.S @@ -5,6 +5,14 @@ * Scrub memory with zero */ +#include "metal/machine/platform.h" + +#ifdef METAL_RISCV_CLINT0 +.equ MSIP_CTRL_ADDR, METAL_RISCV_CLINT0_0_BASE_ADDRESS +#else /* METAL_SIFIVE_CLIC0 */ +.equ MSIP_CTRL_ADDR, METAL_SIFIVE_CLIC0_0_BASE_ADDRESS +#endif + /* Keep it in metal.init section with _enter */ .section .text.metal.init.scrub /* Disable linker relaxation */ @@ -107,14 +115,14 @@ memory_scrub: jal _metal_memory_scrub done_scrub: - lui a4, 0x2000 + li a4, MSIP_CTRL_ADDR li a5,1 sw a5,0(a4) fence w,rw j skip_scrub wait_scrub: - lui a4, 0x2000 + li a4, MSIP_CTRL_ADDR lw a5, 0(a4) beqz a5, wait_scrub