65816-llvm-mos/tests/coremark/runCoreMark.sh
2026-05-25 21:00:32 -05:00

35 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
# Build + link + run CoreMark under MAME.
#
# Usage:
# bash tests/coremark/runCoreMark.sh # default: ITERATIONS=1
# ITERATIONS=5 bash tests/coremark/runCoreMark.sh
# bash tests/coremark/runCoreMark.sh --layer2
set -eu
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
CM_OBJ="$SCRIPT_DIR/build"
RT="$PROJECT_ROOT/runtime"
cd "$SCRIPT_DIR"
rm -rf "$CM_OBJ"
bash "$SCRIPT_DIR/build.sh" "$@"
# Link. CoreMark is ~50KB compiled; should fit single bank.
"$PROJECT_ROOT/tools/link816" -o coreMark.bin --text-base 0x1000 \
"$RT/crt0.o" \
"$RT/libc.o" "$RT/libgcc.o" "$RT/softFloat.o" "$RT/softDouble.o" \
"$RT/math.o" "$RT/strtol.o" "$RT/snprintf.o" \
"$RT/qsort.o" "$RT/timeExt.o" "$RT/extras.o" \
$CM_OBJ/*.o
ls -la coreMark.bin
echo ""
# 0xC0DE sentinel = success; otherwise 0xBEEF = mid-run hang.
# Elapsed ticks at 0x025002..0x025005 (low/hi).
MAME_CHECK_FRAME=900 MAME_SECS=30 MAME_TIMEOUT=300 \
bash "$PROJECT_ROOT/scripts/runInMame.sh" \
"$SCRIPT_DIR/coreMark.bin" \
--check 0x025000=c0de