From 946313af5905ac3679c1f496f000ba077ce038f0 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Fri, 15 Oct 2021 17:25:12 +0200 Subject: kernel: quit QEMU once there are no running processes left --- src/kernel/arch/i386/boot.s | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/kernel/arch/i386/boot.s') diff --git a/src/kernel/arch/i386/boot.s b/src/kernel/arch/i386/boot.s index 0101b40..9fd7d5d 100644 --- a/src/kernel/arch/i386/boot.s +++ b/src/kernel/arch/i386/boot.s @@ -7,6 +7,16 @@ _start: push %ebx // address of the Multiboot struct call kmain_early +.global cpu_shutdown +.type cpu_shutdown, @function +cpu_shutdown: +/* This quits QEMU. While I couldn't find this officially documented anywhere, + * it is used by QEMU in tests/tcg/i386/system/boot.S (as of commit 40d6ee), so + * I assume that this is safe-ish to use */ + mov $0x604, %edx + mov $0x2000, %eax + outw %ax, %dx + .global halt_cpu .type halt_cpu, @function halt_cpu: -- cgit v1.2.3