1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 00:48:11 +00:00

Kernel: Add RPi Watchdog and use it for system shutdown

The Raspberry Pi hardware doesn't support a proper software-initiated
shutdown, so this instead uses the watchdog to reboot to a special
partition which the firmware interprets as an immediate halt on
shutdown. When running under Qemu, this causes the emulator to exit.
This commit is contained in:
Daniel Bertalan 2023-05-15 07:34:19 +02:00 committed by Andrew Kaster
parent 555d301e3b
commit d9c557d0b4
5 changed files with 80 additions and 0 deletions

View file

@ -8,6 +8,8 @@
#include <Kernel/Arch/Processor.h>
#if ARCH(X86_64)
# include <Kernel/Arch/x86_64/Shutdown.h>
#elif ARCH(AARCH64)
# include <Kernel/Arch/aarch64/RPi/Watchdog.h>
#endif
#include <Kernel/CommandLine.h>
#include <Kernel/KSyms.h>
@ -21,6 +23,8 @@ namespace Kernel {
#if ARCH(X86_64)
qemu_shutdown();
virtualbox_shutdown();
#elif ARCH(AARCH64)
RPi::Watchdog::the().system_shutdown();
#endif
// Note: If we failed to invoke platform shutdown, we need to halt afterwards
// to ensure no further execution on any CPU still happens.