mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 16:55:08 +00:00

We move QEMU and VirtualBox shutdown sequences to a separate file, as well as moving the i8042 reboot code sequence too to another file. This allows us to abstract specific methods from the power state node code of the SysFS filesystem, to allow other architectures to put their methods there too in the future.
26 lines
564 B
C++
26 lines
564 B
C++
/*
|
|
* Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <Kernel/Arch/x86/IO.h>
|
|
#include <Kernel/Arch/x86/common/Shutdown.h>
|
|
|
|
namespace Kernel {
|
|
|
|
void qemu_shutdown()
|
|
{
|
|
// Note: This will invoke QEMU Shutdown, but for other platforms (or emulators),
|
|
// this has no effect on the system.
|
|
// We also try the Bochs/Old QEMU shutdown method, if the first didn't work.
|
|
IO::out16(0x604, 0x2000);
|
|
IO::out16(0xb004, 0x2000);
|
|
}
|
|
|
|
void virtualbox_shutdown()
|
|
{
|
|
IO::out16(0x4004, 0x3400);
|
|
}
|
|
|
|
}
|