riscv: fix compatibility with Linux toolchain

Previously, RISC-V in gem5 only supported RISC-V's Newlib toolchain
(riscv64-unknown-elf-*) due to incorrect assumptions made in the initial
setup of the user stack in SE mode.  This patch fixes that by referring
to the RISC-V proxy kernel code (https://github.com/riscv/riscv-pk) and
setting up the stack according to how it does it.  Now binaries compiled
using the Linux toolchain (riscv64-unknown-linux-gnu-*) will run as
well.

[Update for recent changes to MemState to add accessors and mutators to
get its members.]

Change-Id: I6d2c486df7688efe3df54273e9aa0fd686851285
Reviewed-on: https://gem5-review.googlesource.com/2305
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
Alec Roelke
2017-03-21 12:56:32 -04:00
parent 616d48a570
commit 6b7d30688d
2 changed files with 115 additions and 140 deletions

View File

@@ -26,7 +26,7 @@
#
# Authors: Alec Roelke
CXX=riscv64-unknown-elf-g++
CXX=riscv64-unknown-linux-gnu-g++
CFLAGS=--std=c++11 -O3 -static
TARGETS=rv64i rv64m rv64a rv64f rv64d