diff --git a/common/cmdline.c b/common/cmdline.c index 385b9332..da116918 100644 --- a/common/cmdline.c +++ b/common/cmdline.c @@ -49,6 +49,9 @@ bool_cmd("fpu", opt_fpu); bool opt_qemu_console = false; bool_cmd("qemu_console", opt_qemu_console); +bool opt_poweroff = true; +bool_cmd("poweroff", opt_poweroff); + const char *kernel_cmdline; void __text_init cmdline_parse(const char *cmdline) { diff --git a/common/kernel.c b/common/kernel.c index b47d42cd..4f4b0459 100644 --- a/common/kernel.c +++ b/common/kernel.c @@ -69,7 +69,8 @@ void kernel_main(void) { #endif #ifdef KTF_ACPICA - acpi_power_off(); + if (opt_poweroff) + acpi_power_off(); #endif echo_loop(); } diff --git a/grub/boot/grub/grub.cfg b/grub/boot/grub/grub.cfg index 8c8f0676..b3438746 100644 --- a/grub/boot/grub/grub.cfg +++ b/grub/boot/grub/grub.cfg @@ -5,6 +5,6 @@ terminal_input --append serial terminal_output --append serial menuentry "kernel64" { - multiboot /boot/kernel64.bin param1 param2 param3 + multiboot /boot/kernel64.bin poweroff=1 boot } diff --git a/include/cmdline.h b/include/cmdline.h index 523dcaa3..85e6a354 100644 --- a/include/cmdline.h +++ b/include/cmdline.h @@ -64,6 +64,7 @@ extern bool opt_apic_timer; extern bool opt_hpet; extern bool opt_fpu; extern bool opt_qemu_console; +extern bool opt_poweroff; extern const char *kernel_cmdline; extern void cmdline_parse(const char *cmdline);