#!/bin/bash

if [ $# -eq 0 ]; then
	echo "Usage $0 TEST_CASE [QEMU_ARGS]"
	exit 2
fi

if [ ! -f config.mak ]; then
	echo "run './configure --enable-efi && make' first. See ./configure -h"
	exit 2
fi
source config.mak
source scripts/arch-run.bash

if [ -f RISCV_VIRT_CODE.fd ]; then
	DEFAULT_UEFI=RISCV_VIRT_CODE.fd
fi

KERNEL_NAME=$1

: "${EFI_SRC:=$TEST_DIR}"
: "${EFI_UEFI:=$DEFAULT_UEFI}"
: "${EFI_TEST:=efi-tests}"
: "${EFI_CASE:=$(basename $KERNEL_NAME .efi)}"
: "${EFI_TESTNAME:=$TESTNAME}"
: "${EFI_TESTNAME:=$EFI_CASE}"
: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_TESTNAME"}"
: "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}"

if [ ! -f "$EFI_UEFI" ]; then
	echo "UEFI firmware not found."
	echo "Please specify the path with the env variable EFI_UEFI"
	exit 2
fi

if [ "$EFI_USE_ACPI" = "y" ]; then
	echo "ACPI not available"
	exit 2
fi

# Remove the TEST_CASE from $@
shift 1

# Fish out the arguments for the test, they should be the next string
# after the "-append" option
qemu_args=()
cmd_args=()
while (( "$#" )); do
	if [ "$1" = "-append" ]; then
		cmd_args=$2
		shift 2
	else
		qemu_args+=("$1")
		shift 1
	fi
done

if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then
	EFI_CASE_DIR="$EFI_TEST/dummy"
	mkdir -p "$EFI_CASE_DIR"
	$TEST_DIR/run \
		$EFI_CASE \
		-machine pflash0=pflash0 \
		-blockdev node-name=pflash0,driver=file,read-only=on,filename="$EFI_UEFI" \
		-drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
		"${qemu_args[@]}"
	exit
fi

uefi_shell_run()
{
	mkdir -p "$EFI_CASE_DIR"
	cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_CASE_DIR/"
	echo "@echo -off" > "$EFI_CASE_DIR/startup.nsh"
	if [ "$EFI_USE_ACPI" != "y" ]; then
		qemu_args+=(-machine acpi=off)
		FDT_BASENAME="dtb"
		UEFI_SHELL_RUN=y $TEST_DIR/run \
			-machine pflash0=pflash0 \
			-blockdev node-name=pflash0,driver=file,read-only=on,filename="$EFI_UEFI" \
			-machine dumpdtb="$EFI_CASE_DIR/$FDT_BASENAME" \
			"${qemu_args[@]}"
		echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\""  >> "$EFI_CASE_DIR/startup.nsh"
	fi
	echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_CASE_DIR/startup.nsh"

	UEFI_SHELL_RUN=y $TEST_DIR/run \
		-machine pflash0=pflash0 \
		-blockdev node-name=pflash0,driver=file,read-only=on,filename="$EFI_UEFI" \
		-drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
		"${qemu_args[@]}"
}

if [ "$EFI_DIRECT" = "y" ]; then
	if [ "$EFI_USE_ACPI" != "y" ]; then
		qemu_args+=(-machine acpi=off)
	fi
	$TEST_DIR/run \
		$KERNEL_NAME \
		-append "$(basename $KERNEL_NAME) ${cmd_args[@]}" \
		-machine pflash0=pflash0 \
		-blockdev node-name=pflash0,driver=file,read-only=on,filename="$EFI_UEFI" \
		"${qemu_args[@]}"
else
	uefi_shell_run
fi
