Newer
Older
AMI-Aptio-BIOS-Reversed / UefiCpuPkg / CpuIo2Smm / CpuIo2Smm.h
@Ajax Dong Ajax Dong 2 days ago 6 KB Full restructure
/** @file
  CpuIo2Smm.h -- Header for CpuIo2Smm

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __CPUIO2SMM_H__
#define __CPUIO2SMM_H__

#include "../uefi_headers/Uefi.h"

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
SmmSetJump(
  VOID
);

EFI_STATUS
EFIAPI
SmmLongJump(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmValidateJumpBuffer(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmInitServices(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmCheckParameter(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmMemRead(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmMemWrite(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmIoRead(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmIoWrite(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmInstallProtocol(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmDebugVPrint(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmDebugAssert(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmDriverEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
per width index:  mSmmIoStride[Width] = { 1, 2, 4, 8 }(
  VOID
);

EFI_STATUS
EFIAPI
at 0xE18.(
  VOID
);

EFI_STATUS
EFIAPI
UINT8 mSmmIoStride[] = { 1, 2, 4, 8 };(
  VOID
);

EFI_STATUS
EFIAPI
initialized by CpuIo2SmmInitServices(
  VOID
);

EFI_STATUS
EFIAPI
gImageHandle      = NULL;   // 0x13E8(
  VOID
);

EFI_STATUS
EFIAPI
EFI_BOOT_SERVICES   *gBS               = NULL;   // 0x13E0(
  VOID
);

EFI_STATUS
EFIAPI
VOID                 *gSmst            = NULL;   // 0x13F8 (SMM System Table 2)(
  VOID
);

EFI_STATUS
EFIAPI
(DebugLib protocol)(
  VOID
);

EFI_STATUS
EFIAPI
buffer for SmmBase2->GetSmstLocation communication(
  VOID
);

EFI_STATUS
EFIAPI
at 0x1410.(
  VOID
);

EFI_STATUS
EFIAPI
gJumpBuffer;(
  VOID
);

EFI_STATUS
EFIAPI
function table template at 0x13B0.(
  VOID
);

EFI_STATUS
EFIAPI
bytes: 4 x 8-byte function pointers:(
  VOID
);

EFI_STATUS
EFIAPI
gCpuIoTemplate = {(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmMemRead,   // .Read(
  VOID
);

EFI_STATUS
EFIAPI
CpuIo2SmmIoRead,    // .Read(
  VOID
);

EFI_STATUS
EFIAPI
handle (initialized to NULL before installation)(
  VOID
);

EFI_STATUS
EFIAPI
at 0x13D0.(
  VOID
);

EFI_STATUS
EFIAPI
mCpuIo2Handle = NULL;(
  VOID
);

EFI_STATUS
EFIAPI
status - starts as EFI_UNSUPPORTED (0x8000000000000001)(
  VOID
);

EFI_STATUS
EFIAPI
at 0x1508. Updated with result from protocol installation.(
  VOID
);

EFI_STATUS
EFIAPI
gStatus = EFI_UNSUPPORTED;(
  VOID
);

EFI_STATUS
EFIAPI
Helpers (library bindings)(
  VOID
);

EFI_STATUS
EFIAPI
(0x2C0) - aligned copy with overlap handling(
  VOID
);

EFI_STATUS
EFIAPI
VOID *(
  VOID
);

EFI_STATUS
EFIAPI
(0x310) - save execution context(
  VOID
);

EFI_STATUS
EFIAPI
UINTN(
  VOID
);

EFI_STATUS
EFIAPI
(0x3B0) - restore execution context(
  VOID
);

EFI_STATUS
EFIAPI
VOID(
  VOID
);

EFI_STATUS
EFIAPI
(0xCE8)(
  VOID
);

EFI_STATUS
EFIAPI
alignment of JumpBuffer for SetJump.(
  VOID
);

EFI_STATUS
EFIAPI
(0x524)(
  VOID
);

EFI_STATUS
EFIAPI
function that initializes gBS, gRT, gSmst from SystemTable.(
  VOID
);

EFI_STATUS
EFIAPI
once during module entry.(
  VOID
);

EFI_STATUS
EFIAPI
locates EFI_SMM_BASE2_PROTOCOL (F4CCBFB7-F6E0-47FD-9DD4-10A8F150C191)(
  VOID
);

EFI_STATUS
EFIAPI
retrieves the SMM System Table 2 via GetSmstLocation.(
  VOID
);

EFI_STATUS
EFIAPI
EFI_SMM_BASE2_PROTOCOL(
  VOID
);

EFI_STATUS
EFIAPI
= NULL;(
  VOID
);

EFI_STATUS
EFIAPI
gSmst via SmmBase2->GetSmstLocation()(
  VOID
);

EFI_STATUS
EFIAPI
SetJump/LongJump for context switching inside SMM(
  VOID
);

EFI_STATUS
EFIAPI
(&gJumpBuffer);(
  VOID
);

EFI_STATUS
EFIAPI
(0x664)(
  VOID
);

EFI_STATUS
EFIAPI
I/O parameters for all four protocol interface functions.(
  VOID
);

EFI_STATUS
EFIAPI
- parameters are valid(
  VOID
);

EFI_STATUS
EFIAPI
- invalid width, alignment, or out of range(
  VOID
);

EFI_STATUS
EFIAPI
validation: Buffer must not be NULL, Width must be valid(
  VOID
);

EFI_STATUS
EFIAPI
QWord I/O (Width=3) is not supported for port I/O.(
  VOID
);

EFI_STATUS
EFIAPI
((Buffer == NULL) || (Width > SmmIoWidthUint64) ||(
  VOID
);

EFI_STATUS
EFIAPI
address:(
  VOID
);

EFI_STATUS
EFIAPI
(MmioOperation) {(
  VOID
);

EFI_STATUS
EFIAPI
Count > 0, ensure the access range does not exceed MaxAddress.(
  VOID
);

EFI_STATUS
EFIAPI
is mSmmIoStride[Width]: 1, 2, 4, or 8 bytes.(
  VOID
);

EFI_STATUS
EFIAPI
(Count > 0) {(
  VOID
);

EFI_STATUS
EFIAPI
start address is within bounds(
  VOID
);

EFI_STATUS
EFIAPI
(Address > MaxAddress) {(
  VOID
);

EFI_STATUS
EFIAPI
((Address & (mSmmIoStride[Width] - 1)) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
Interface Functions(
  VOID
);

EFI_STATUS
EFIAPI
(0x76C)(
  VOID
);

EFI_STATUS
EFIAPI
read via direct memory pointer dereference.(
  VOID
);

EFI_STATUS
EFIAPI
Count elements of Width from Address into Buffer.(
  VOID
);

EFI_STATUS
EFIAPI
EFIAPI(
  VOID
);

EFI_STATUS
EFIAPI
(0x850)(
  VOID
);

EFI_STATUS
EFIAPI
write via direct memory pointer dereference.(
  VOID
);

EFI_STATUS
EFIAPI
Count elements of Width from Buffer into Address.(
  VOID
);

EFI_STATUS
EFIAPI
(0x934)(
  VOID
);

EFI_STATUS
EFIAPI
Count elements of Width from I/O Port Address into Buffer.(
  VOID
);

EFI_STATUS
EFIAPI
I/O port access is not supported by x86 ISA(
  VOID
);

EFI_STATUS
EFIAPI
(0xA10)(
  VOID
);

EFI_STATUS
EFIAPI
Count elements of Width from Buffer to I/O Port Address.(
  VOID
);

EFI_STATUS
EFIAPI
(0xAF0)(
  VOID
);

EFI_STATUS
EFIAPI
EFI_SMM_CPU_IO2_PROTOCOL via gSmst->SmmInstallProtocolInterface.(
  VOID
);

EFI_STATUS
EFIAPI
copies the function table to SmmIoMemAbstraction area of Smst.(
  VOID
);

EFI_STATUS
EFIAPI
protocol function table to Smst+0x30(
  VOID
);

EFI_STATUS
EFIAPI
((
  VOID
);

EFI_STATUS
EFIAPI
protocol into SMM protocol database(
  VOID
);

EFI_STATUS
EFIAPI
= Smst->SmmInstallProtocolInterface ((
  VOID
);

EFI_STATUS
EFIAPI
Protocol Support(
  VOID
);

EFI_STATUS
EFIAPI
GUID at 0x1390 (441FFA18-8714-421E-8C95-587080796FEE) is used to(
  VOID
);

EFI_STATUS
EFIAPI
a debug print protocol via gSmst->SmmLocateProtocol.(
  VOID
);

EFI_STATUS
EFIAPI
(0xBD0)(
  VOID
);

EFI_STATUS
EFIAPI
(0xC20)(
  VOID
);

EFI_STATUS
EFIAPI
print using the located debug protocol.(
  VOID
);

EFI_STATUS
EFIAPI
debug level from CMOS register 0x4C(
  VOID
);

EFI_STATUS
EFIAPI
= IoRead8 (0x70) & 0x80 | 0x4C;(
  VOID
);

EFI_STATUS
EFIAPI
debug print level from CMOS byte(
  VOID
);

EFI_STATUS
EFIAPI
= 0;(
  VOID
);

EFI_STATUS
EFIAPI
(0xCA8)(
  VOID
);

EFI_STATUS
EFIAPI
assert call. Invokes the debug protocol's assert handler.(
  VOID
);

EFI_STATUS
EFIAPI
(0x484)(
  VOID
);

EFI_STATUS
EFIAPI
1: Initialize global service table pointers(
  VOID
);

EFI_STATUS
EFIAPI
= CpuIo2SmmInitServices (ImageHandle, SystemTable);(
  VOID
);

EFI_STATUS
EFIAPI
2: Install EFI_SMM_CPU_IO2_PROTOCOL(
  VOID
);

EFI_STATUS
EFIAPI
(!EFI_ERROR (Status)) {(
  VOID
);

EFI_STATUS
EFIAPI
jump buffer at gJumpBuffer (0x1410) is used by AutoGen.(
  VOID
);

EFI_STATUS
EFIAPI
install error if init was OK but install failed(
  VOID
);

EFI_STATUS
EFIAPI
= Status;(
  VOID
);

#endif /* __CPUIO2SMM_H__ */