/ util / riscv / make-spike-elf.sh
make-spike-elf.sh
 1  #!/usr/bin/env sh
 2  #
 3  # This script is based on:
 4  # https://docs.google.com/document/d/1Pvf9Yxorcd3sbgs8WcomcTl3J4bmX6e1UE0ROCefR88
 5  
 6  set -e
 7  
 8  usage() {
 9  	echo "This script converts a flat file into an ELF, that can be passed"
10  	echo "to SPIKE, the RISC-V reference emulator."
11  	echo ""
12  	echo "Usage: $0 coreboot.rom coreboot.elf"
13  }
14  
15  if [ $# -ne 2 ]; then
16  	usage
17  	exit 1
18  fi
19  
20  FLAT_FILE="$1"
21  OBJECT_FILE=$(mktemp /tmp/coreboot-spike.XXXXXX)
22  ELF_FILE="$2"
23  TOOL_PATH="$(dirname "$0")"
24  XGCC_BIN="$TOOL_PATH/../crossgcc/xgcc/bin"
25  
26  "$XGCC_BIN/riscv64-elf-objcopy" -I binary -O elf64-littleriscv \
27  	-B riscv "$FLAT_FILE" "$OBJECT_FILE"
28  "$XGCC_BIN/riscv64-elf-ld" "$OBJECT_FILE" -T "$TOOL_PATH/spike-elf.ld" \
29  	 -o "$ELF_FILE"
30  rm "$OBJECT_FILE"