Newer
Older
AMI-Aptio-BIOS-Reversed / PcatSingleSegmentPciCfg2Pei / PcatSingleSegmentPciCfg2Pei.h
@Ajax Dong Ajax Dong 2 days ago 9 KB Init
/** @file
  PcatSingleSegmentPciCfg2Pei.h -- Header for PcatSingleSegmentPciCfg2Pei

Copyright (c) HR650X BIOS Decompilation Project
**/

#ifndef __PCATSINGLESEGMENTPCICFG2PEI_H__
#define __PCATSINGLESEGMENTPCICFG2PEI_H__

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

//
// Function Prototypes
//

EFI_STATUS
EFIAPI
PciCfg2Read(
  VOID
);

EFI_STATUS
EFIAPI
PciCfg2Write(
  VOID
);

EFI_STATUS
EFIAPI
PciCfg2Modify(
  VOID
);

EFI_STATUS
EFIAPI
ModuleEntryPoint(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressAddressToOffset(
  VOID
);

EFI_STATUS
EFIAPI
ReadIdtr(
  VOID
);

EFI_STATUS
EFIAPI
GetPciExpressBaseAddr(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressRead8(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressWrite8(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressRead16(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressWrite16(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressRead32(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressWrite32(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressOr8(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressOr16(
  VOID
);

EFI_STATUS
EFIAPI
PciExpressOr32(
  VOID
);

EFI_STATUS
EFIAPI
UnalignedRead16(
  VOID
);

EFI_STATUS
EFIAPI
UnalignedWrite16(
  VOID
);

EFI_STATUS
EFIAPI
UnalignedRead32(
  VOID
);

EFI_STATUS
EFIAPI
UnalignedWrite32(
  VOID
);

EFI_STATUS
EFIAPI
AlignedRead16(
  VOID
);

EFI_STATUS
EFIAPI
AlignedWrite16(
  VOID
);

EFI_STATUS
EFIAPI
GetPlatformErrorStatus(
  VOID
);

EFI_STATUS
EFIAPI
ReportAssert(
  VOID
);

EFI_STATUS
EFIAPI
ReportDebugMsg(
  VOID
);

EFI_STATUS
EFIAPI
for PCD database PPI lookup(
  VOID
);

EFI_STATUS
EFIAPI
GUID: {057A449A-1FDC-4C06-BFC9-F53F6A99BB92}(
  VOID
);

EFI_STATUS
EFIAPI
- EFI_PEI_PCI_CFG2_PPI instance(
  VOID
);

EFI_STATUS
EFIAPI
EFI_PEI_PCI_CFG2_PPI mPrivateData;(
  VOID
);

EFI_STATUS
EFIAPI
Descriptor(
  VOID
);

EFI_STATUS
EFIAPI
EFI_PEI_PPI_DESCRIPTOR mPpiDescriptor = {(
  VOID
);

EFI_STATUS
EFIAPI
declarations(
  VOID
);

EFI_STATUS
EFIAPI
entry point(
  VOID
);

EFI_STATUS
EFIAPI
PRIVATE_DATA address in SystemTable reserved slot.(
  VOID
);

EFI_STATUS
EFIAPI
effectively associates the private data with ImageHandle.(
  VOID
);

EFI_STATUS
EFIAPI
to: ImageHandle->SystemTable->Something = &mPrivateData(
  VOID
);

EFI_STATUS
EFIAPI
PEI Services Table pointer(
  VOID
);

EFI_STATUS
EFIAPI
= GetPeiServicesTablePtr();(
  VOID
);

EFI_STATUS
EFIAPI
EFI_PEI_PCI_CFG2_PPI(
  VOID
);

EFI_STATUS
EFIAPI
= (*PeiServices)->InstallPpi (PeiServices, &mPpiDescriptor);(
  VOID
);

EFI_STATUS
EFIAPI
on failure(
  VOID
);

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

EFI_STATUS
EFIAPI
Express address to MMIO offset conversion(
  VOID
);

EFI_STATUS
EFIAPI
EFI_PEI_PCI_CFG2_PPI Address format packs:(
  VOID
);

EFI_STATUS
EFIAPI
0: Register (bits 7:0) - config register offset(
  VOID
);

EFI_STATUS
EFIAPI
1: Function (bits 2:0)(
  VOID
);

EFI_STATUS
EFIAPI
2: Device (bits 4:0)(
  VOID
);

EFI_STATUS
EFIAPI
3: Bus (bits 7:0)(
  VOID
);

EFI_STATUS
EFIAPI
4-7: ExtendedRegister (32-bit, if non-zero overrides Register)(
  VOID
);

EFI_STATUS
EFIAPI
MMIO offset = (Bus * 32 + Device) * 8 + Function) * 4096 + Register(
  VOID
);

EFI_STATUS
EFIAPI
<< 20 | Device << 15 | Function << 12 | Register(
  VOID
);

EFI_STATUS
EFIAPI
EFIAPI(
  VOID
);

EFI_STATUS
EFIAPI
config space access (>= 256 bytes offset, for ECAM)(
  VOID
);

EFI_STATUS
EFIAPI
(ExtendedRegister & 0xFFF)(
  VOID
);

EFI_STATUS
EFIAPI
config space access (< 256 bytes offset)(
  VOID
);

EFI_STATUS
EFIAPI
= PciAddress[1] & 7;(
  VOID
);

EFI_STATUS
EFIAPI
CFG2 Read(
  VOID
);

EFI_STATUS
EFIAPI
from PCI configuration space at the given Address.(
  VOID
);

EFI_STATUS
EFIAPI
UINT8 (0), UINT16 (1), UINT32 (2), and UINT64 (3) widths.(
  VOID
);

EFI_STATUS
EFIAPI
misaligned accesses by breaking into byte/word reads as needed.(
  VOID
);

EFI_STATUS
EFIAPI
(Buffer, PciExpressRead16 (Offset));(
  VOID
);

EFI_STATUS
EFIAPI
(Buffer, PciExpressRead32 (Offset));(
  VOID
);

EFI_STATUS
EFIAPI
CFG2 Write(
  VOID
);

EFI_STATUS
EFIAPI
to PCI configuration space at the given Address.(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, ((UINT8 *)Buffer)[0]);(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, UnalignedRead16 (Buffer));(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, UnalignedRead32 (Buffer));(
  VOID
);

EFI_STATUS
EFIAPI
CFG2 Modify (Read-Modify-Write)(
  VOID
);

EFI_STATUS
EFIAPI
a read-modify-write on PCI configuration space.(
  VOID
);

EFI_STATUS
EFIAPI
= (old_value & ~ClearBits) | SetBits(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, ~((UINT8 *)ClearBits)[0], ((UINT8 *)SetBits)[0]);(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, ~UnalignedRead16 (ClearBits), UnalignedRead16 (SetBits));(
  VOID
);

EFI_STATUS
EFIAPI
(Offset, ~UnalignedRead32 (ClearBits), UnalignedRead32 (SetBits));(
  VOID
);

EFI_STATUS
EFIAPI
utility functions (library wrappers)(
  VOID
);

EFI_STATUS
EFIAPI
source < destination and ranges overlap (backward copy case):(
  VOID
);

EFI_STATUS
EFIAPI
copy from end(
  VOID
);

EFI_STATUS
EFIAPI
((UINTN)Source < (UINTN)Destination &&(
  VOID
);

EFI_STATUS
EFIAPI
backwards from the end, one byte at a time(
  VOID
);

EFI_STATUS
EFIAPI
memmove (Destination, Source, Size);(
  VOID
);

EFI_STATUS
EFIAPI
copy: start with aligned 32-bit chunks, then byte remainder(
  VOID
);

EFI_STATUS
EFIAPI
= (Size & 3);  // remainder after 32-bit copies(
  VOID
);

EFI_STATUS
EFIAPI
the actual binary, the remainder copy uses qmemcpy for remainder of size % 4.(
  VOID
);

EFI_STATUS
EFIAPI
Services Table pointer retrieval (via IDTR)(
  VOID
);

EFI_STATUS
EFIAPI
IDTR to find the base of the IDT(
  VOID
);

EFI_STATUS
EFIAPI
(&Idtr);(
  VOID
);

EFI_STATUS
EFIAPI
PEI Services Table pointer is stored at offset -4 from the IDT base.(
  VOID
);

EFI_STATUS
EFIAPI
is a standard PEI Services Table Pointer Library mechanism for IA32.(
  VOID
);

EFI_STATUS
EFIAPI
= *(EFI_PEI_SERVICES ***)(Idtr.Base - 4);(
  VOID
);

EFI_STATUS
EFIAPI
IDTR register (SIDT instruction wrapper)(
  VOID
);

EFI_STATUS
EFIAPI
Database access(
  VOID
);

EFI_STATUS
EFIAPI
the PCD database pointer by locating the PCD PPI via(
  VOID
);

EFI_STATUS
EFIAPI
Services' LocatePpi.(
  VOID
);

EFI_STATUS
EFIAPI
*(
  VOID
);

EFI_STATUS
EFIAPI
PCD database pointer via PEI PCD PPI Locate(
  VOID
);

EFI_STATUS
EFIAPI
function locates the PCD PPI (not PCD database directly) and(
  VOID
);

EFI_STATUS
EFIAPI
the PPI interface. It is used to get PcdPpi, which is then(
  VOID
);

EFI_STATUS
EFIAPI
to call PcdGetX functions.(
  VOID
);

EFI_STATUS
EFIAPI
to get the PCD PPI interface(
  VOID
);

EFI_STATUS
EFIAPI
= (*PeiServices)->LocatePpi ((
  VOID
);

EFI_STATUS
EFIAPI
uses gPeiPcdPpiGuid(
  VOID
);

EFI_STATUS
EFIAPI
Express base address retrieval (from PCD)(
  VOID
);

EFI_STATUS
EFIAPI
the PciExpressBaseAddress from PCD. Uses the PCD PPI to call(
  VOID
);

EFI_STATUS
EFIAPI
PCI Express configuration space (ECAM).(
  VOID
);

EFI_STATUS
EFIAPI
PcdGetPtr(token_value=5) to retrieve PcdPciExpressBaseAddress.(
  VOID
);

EFI_STATUS
EFIAPI
token value 5 corresponds to fixed-at-build PCD(
  VOID
);

EFI_STATUS
EFIAPI
in typical EDK2 builds.(
  VOID
);

EFI_STATUS
EFIAPI
PcdGetPtr[4] (5);(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Read8(
  VOID
);

EFI_STATUS
EFIAPI
address: must have bits [31:28] clear ( < 256MB offset )(
  VOID
);

EFI_STATUS
EFIAPI
((Address & 0xF0000000) != 0) {(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Write8(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Read16(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Write16(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Read32(
  VOID
);

EFI_STATUS
EFIAPI
Express MMIO config space access - Write32(
  VOID
);

EFI_STATUS
EFIAPI
Express Atomic OR - 8-bit(
  VOID
);

EFI_STATUS
EFIAPI
Express Atomic OR - 16-bit(
  VOID
);

EFI_STATUS
EFIAPI
Express Atomic OR - 32-bit(
  VOID
);

EFI_STATUS
EFIAPI
memory access helpers(
  VOID
);

EFI_STATUS
EFIAPI
error status (CMOS-based)(
  VOID
);

EFI_STATUS
EFIAPI
the platform error status from CMOS register 0x4A.(
  VOID
);

EFI_STATUS
EFIAPI
is used by the ASSERT infrastructure to decide whether to(
  VOID
);

EFI_STATUS
EFIAPI
or halt on assertion failure.(
  VOID
);

EFI_STATUS
EFIAPI
- No error(
  VOID
);

EFI_STATUS
EFIAPI
- Error status cleared(
  VOID
);

EFI_STATUS
EFIAPI
current CMOS index register (0x70), preserving bit 7 (NMI disable)(
  VOID
);

EFI_STATUS
EFIAPI
= IoRead8 (0x70);(
  VOID
);

EFI_STATUS
EFIAPI
a hardware register (at fixed address 0xFDAF0490) for(
  VOID
);

EFI_STATUS
EFIAPI
error info(
  VOID
);

EFI_STATUS
EFIAPI
= (*(volatile UINT8 *)0xFDAF0490 & 2) | 1;(
  VOID
);

EFI_STATUS
EFIAPI
Status values 1 and 2 are used:(
  VOID
);

EFI_STATUS
EFIAPI
-> EFI_DEVICE_ERROR (recoverable)(
  VOID
);

EFI_STATUS
EFIAPI
-> more severe error(
  VOID
);

EFI_STATUS
EFIAPI
(Status) {(
  VOID
);

EFI_STATUS
EFIAPI
was 0xFF (cleared)(
  VOID
);

EFI_STATUS
EFIAPI
functions use the PCD database to call into the DebugLib(
  VOID
);

EFI_STATUS
EFIAPI
installed as a PPI. The PCD database pointer at(
  VOID
);

EFI_STATUS
EFIAPI
+4 contains the assertion/debug message handler function.(
  VOID
);

EFI_STATUS
EFIAPI
the standardized DebugLib was widely used.(
  VOID
);

EFI_STATUS
EFIAPI
the ASSERT handler from PCD database (at offset +4)(
  VOID
);

EFI_STATUS
EFIAPI
the DEBUG handler from PCD database (at offset +4)(
  VOID
);

#endif /* __PCATSINGLESEGMENTPCICFG2PEI_H__ */