From 4b4688a767f0b95db48a046314509207c4ff5232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= Date: Fri, 10 Jun 2016 19:35:15 +0200 Subject: [PATCH] UPSTREAM: arch/riscv: Compile with -mcmodel=medany In the default (medlow) code model, pointers are loaded with a lui, addi instruction sequence: lui a0, 0xNNNNN addi a0, a0, 0xNNN Since lui sign-extends bits 32-63 from bit 31 on RV64, lui/addi can't load pointers just above 0x80000000, where RISC-V's RAM now lives. The medany code model gets around this restriction by loading pointers trough auipc and addi: auipc a0, 0xNNNNN addi a0, a0, 0xNNN This way, any pointer within the current pc 2G can be loaded, which is by far sufficient for coreboot. BUG=None BRANCH=None TEST=None Change-Id: I77350d9218a687284c1337d987765553cf915a22 Original-Signed-off-by: Jonathan Neuschfer Original-Reviewed-on: https://review.coreboot.org/15148 Original-Tested-by: build bot (Jenkins) Original-Reviewed-by: Ronald G. Minnich Signed-off-by: Aaron Durbin Reviewed-on: https://chromium-review.googlesource.com/352025 Commit-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Furquan Shaikh --- src/arch/riscv/Makefile.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/arch/riscv/Makefile.inc b/src/arch/riscv/Makefile.inc index 4521dcbba6..243fa5364e 100644 --- a/src/arch/riscv/Makefile.inc +++ b/src/arch/riscv/Makefile.inc @@ -15,7 +15,7 @@ ## ################################################################################ -riscv_flags = -I$(src)/arch/riscv/ +riscv_flags = -I$(src)/arch/riscv/ -mcmodel=medany riscv_asm_flags = @@ -48,6 +48,9 @@ $(objcbfs)/bootblock.debug: $$(bootblock-objs) -T $(call src-to-obj,bootblock,src/mainboard/$(MAINBOARDDIR)/memlayout.ld) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) \ $(LIBGCC_FILE_NAME_bootblock) --end-group $(COMPILER_RT_bootblock) +bootblock-c-ccopts += $(riscv_flags) +bootblock-S-ccopts += $(riscv_asm_flags) + endif ################################################################################