summaryrefslogtreecommitdiff
path: root/src/arch/riscv
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/riscv')
-rw-r--r--src/arch/riscv/Kconfig5
-rw-r--r--src/arch/riscv/Makefile.inc9
-rw-r--r--src/arch/riscv/boot.c7
3 files changed, 16 insertions, 5 deletions
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig
index a30cb7091b..f05a98b106 100644
--- a/src/arch/riscv/Kconfig
+++ b/src/arch/riscv/Kconfig
@@ -19,3 +19,8 @@ config ARCH_ROMSTAGE_RISCV
config ARCH_RAMSTAGE_RISCV
bool
default n
+
+config RISCV_CONFIGSTRING
+ hex "Location of pointer to RISCV config string"
+ default 0x100c
+ depends on ARCH_RISCV
diff --git a/src/arch/riscv/Makefile.inc b/src/arch/riscv/Makefile.inc
index 1fe8f7c268..c68fd1e066 100644
--- a/src/arch/riscv/Makefile.inc
+++ b/src/arch/riscv/Makefile.inc
@@ -43,7 +43,8 @@ bootblock-y += \
$(top)/src/lib/memcmp.c \
$(top)/src/lib/memcpy.c \
$(top)/src/lib/memmove.c \
- $(top)/src/lib/memset.c
+ $(top)/src/lib/memset.c \
+ $(top)/src/commonlib/configstring.c
$(objcbfs)/bootblock.debug: $$(bootblock-objs)
@printf " LINK $(subst $(obj)/,,$(@))\n"
@@ -69,7 +70,8 @@ romstage-y += \
$(top)/src/lib/memcmp.c \
$(top)/src/lib/memcpy.c \
$(top)/src/lib/memmove.c \
- $(top)/src/lib/memset.c
+ $(top)/src/lib/memset.c \
+ $(top)/src/commonlib/configstring.c
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
@@ -102,7 +104,8 @@ ramstage-y += \
$(top)/src/lib/memcmp.c \
$(top)/src/lib/memcpy.c \
$(top)/src/lib/memmove.c \
- $(top)/src/lib/memset.c
+ $(top)/src/lib/memset.c \
+ $(top)/src/commonlib/configstring.c
$(eval $(call create_class_compiler,rmodules,riscv))
diff --git a/src/arch/riscv/boot.c b/src/arch/riscv/boot.c
index ff1844eb0a..9483c48177 100644
--- a/src/arch/riscv/boot.c
+++ b/src/arch/riscv/boot.c
@@ -18,16 +18,19 @@
#include <arch/encoding.h>
#include <rules.h>
#include <console/console.h>
+#include <commonlib/configstring.h>
void arch_prog_run(struct prog *prog)
{
void (*doit)(void *) = prog_entry(prog);
- void riscvpayload(void *);
+ void riscvpayload(const char *configstring, void *payload);
+ const char *config = configstring();
if (ENV_RAMSTAGE && prog_type(prog) == PROG_PAYLOAD) {
+ printk(BIOS_SPEW, "Config string: '%s'\n", config);
initVirtualMemory();
printk(BIOS_SPEW, "OK, let's go\n");
- riscvpayload(doit);
+ riscvpayload(config, doit);
}
doit(prog_entry_arg(prog));