summaryrefslogtreecommitdiff
path: root/util/riscvtools
diff options
context:
space:
mode:
authorJonathan Neuschäfer <j.neuschaefer@gmx.net>2016-06-10 19:35:14 +0200
committerMartin Roth <martinroth@google.com>2016-06-21 00:10:14 +0200
commit2459f677310efdde229bab3406b2fb5d91f5ec20 (patch)
tree4e5beea313d16348671afff8214a806f66917885 /util/riscvtools
parent057ac4da0ed8dfdc3a6481fe6c490ab9e34476b9 (diff)
util/riscvtools: Add script that turns coreboot.rom into an ELF
This is required because SPIKE doesn't support loading flat files yet. Change-Id: If745d78712ca8108b5dcc21591201bc2d3f70b86 Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-on: https://review.coreboot.org/14964 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'util/riscvtools')
-rwxr-xr-xutil/riscvtools/make-spike-elf.sh27
-rw-r--r--util/riscvtools/spike-elf.ld11
2 files changed, 38 insertions, 0 deletions
diff --git a/util/riscvtools/make-spike-elf.sh b/util/riscvtools/make-spike-elf.sh
new file mode 100755
index 0000000000..4241c5418a
--- /dev/null
+++ b/util/riscvtools/make-spike-elf.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# This script is based on:
+# https://docs.google.com/document/d/1Pvf9Yxorcd3sbgs8WcomcTl3J4bmX6e1UE0ROCefR88
+
+set -e
+
+usage() {
+ echo "This script converts a flat file into an ELF, that can be passed"
+ echo "to SPIKE, the RISC-V reference emulator."
+ echo ""
+ echo "Usage: $0 coreboot.rom coreboot.elf"
+}
+
+if [ $# -ne 2 ]; then
+ usage
+ exit 1
+fi
+
+FLAT_FILE="$1"
+OBJECT_FILE=$(mktemp /tmp/coreboot-spike.XXXXXX.o)
+ELF_FILE="$2"
+TOOL_PATH="$(dirname "$0")"
+
+objcopy -I binary -O elf32-i386 --binary-architecture i386 "$FLAT_FILE" "$OBJECT_FILE"
+ld -m elf_i386 "$OBJECT_FILE" -T "$TOOL_PATH/spike-elf.ld" -o "$ELF_FILE"
+rm "$OBJECT_FILE"
diff --git a/util/riscvtools/spike-elf.ld b/util/riscvtools/spike-elf.ld
new file mode 100644
index 0000000000..341a16ffc2
--- /dev/null
+++ b/util/riscvtools/spike-elf.ld
@@ -0,0 +1,11 @@
+/* See make-spike-elf.sh */
+
+ENTRY(_start);
+SECTIONS
+{
+ . = 0x80000000;
+ _start = .;
+ .data : {
+ *(.data)
+ }
+}