mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-29 12:35:53 +01:00
69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
|
/** @file
|
||
|
Simple wrapper functions and utility functions that access QEMU's modern CPU
|
||
|
hotplug register block.
|
||
|
|
||
|
These functions manipulate some of the registers described in
|
||
|
"docs/specs/acpi_cpu_hotplug.txt" in the QEMU source. IO Ports are accessed
|
||
|
via EFI_MM_CPU_IO_PROTOCOL. If a protocol call fails, these functions don't
|
||
|
return.
|
||
|
|
||
|
Copyright (c) 2020, Red Hat, Inc.
|
||
|
|
||
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||
|
**/
|
||
|
|
||
|
#ifndef QEMU_CPUHP_H_
|
||
|
#define QEMU_CPUHP_H_
|
||
|
|
||
|
#include <Protocol/MmCpuIo.h> // EFI_MM_CPU_IO_PROTOCOL
|
||
|
#include <Uefi/UefiBaseType.h> // EFI_STATUS
|
||
|
|
||
|
#include "ApicId.h" // APIC_ID
|
||
|
|
||
|
UINT32
|
||
|
QemuCpuhpReadCommandData2 (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo
|
||
|
);
|
||
|
|
||
|
UINT8
|
||
|
QemuCpuhpReadCpuStatus (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo
|
||
|
);
|
||
|
|
||
|
UINT32
|
||
|
QemuCpuhpReadCommandData (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
QemuCpuhpWriteCpuSelector (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,
|
||
|
IN UINT32 Selector
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
QemuCpuhpWriteCpuStatus (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,
|
||
|
IN UINT8 CpuStatus
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
QemuCpuhpWriteCommand (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,
|
||
|
IN UINT8 Command
|
||
|
);
|
||
|
|
||
|
EFI_STATUS
|
||
|
QemuCpuhpCollectApicIds (
|
||
|
IN CONST EFI_MM_CPU_IO_PROTOCOL *MmCpuIo,
|
||
|
IN UINT32 PossibleCpuCount,
|
||
|
IN UINT32 ApicIdCount,
|
||
|
OUT APIC_ID *PluggedApicIds,
|
||
|
OUT UINT32 *PluggedCount,
|
||
|
OUT APIC_ID *ToUnplugApicIds,
|
||
|
OUT UINT32 *ToUnplugSelectors,
|
||
|
OUT UINT32 *ToUnplugCount
|
||
|
);
|
||
|
|
||
|
#endif // QEMU_CPUHP_H_
|