diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c index 9dfd4d68..ab40b939 100644 --- a/platform/qemu/virt/platform.c +++ b/platform/qemu/virt/platform.c @@ -5,9 +5,11 @@ * * Authors: * Anup Patel + * Nick Kossifidis */ #include +#include #include #include #include @@ -19,6 +21,8 @@ #define VIRT_HART_STACK_SIZE 8192 #define VIRT_TEST_ADDR 0x100000 +#define VIRT_TEST_FINISHER_FAIL 0x3333 +#define VIRT_TEST_FINISHER_PASS 0x5555 #define VIRT_CLINT_ADDR 0x2000000 @@ -122,7 +126,11 @@ static int virt_timer_init(bool cold_boot) static int virt_system_down(u32 type) { - /* For now nothing to do. */ + /* Tell the "finisher" that the simulation + * was successful so that QEMU exits + */ + writew(VIRT_TEST_FINISHER_PASS, (void *)VIRT_TEST_ADDR); + return 0; }