#!/bin/sh
# Execute the production trap boundary with a deterministic nested timer.
set -eu
emulator=${RAD_EMULATOR:-emulator}
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT HUP INT TERM
for fixture in machine reservations; do
    cat "test/trap/$fixture.ras" kernel/kernel/trap.ras > "$work/trap.ras"
    "$emulator" -run bin/sync.build.rv64 -- "$work/trap.ras" "$work/trap.rv64"
    "$emulator" -machine -max-steps=1000000 -run "$work/trap.rv64"
done
printf 'trap contexts: machine/user registers, nested timer, illegal instruction, and stacks passed\n'
printf 'trap reservations: entry, resume, and user context isolation passed\n'
