/** @file
MultiSkuDistinctionPei.h -- Header for MultiSkuDistinctionPei
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __MULTISKUDISTINCTIONPEI_H__
#define __MULTISKUDISTINCTIONPEI_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
ReadIdtr(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
PeiServicesNotify(
VOID
);
EFI_STATUS
EFIAPI
IsGuidMatch(
VOID
);
EFI_STATUS
EFIAPI
SkuInit(
VOID
);
EFI_STATUS
EFIAPI
InstallSkuPpi(
VOID
);
EFI_STATUS
EFIAPI
EntryPointStub(
VOID
);
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
GUID definitions (defined in .data section)(
VOID
);
EFI_STATUS
EFIAPI
Descriptors (defined in .data section)(
VOID
);
/// installed when SKU sentinel is NOT present.
EFI_STATUS
EFIAPI
SKU PPI descriptor(
VOID
);
EFI_STATUS
EFIAPI
the notification GUID gSkuNotificationGuid.(
VOID
);
EFI_STATUS
EFIAPI
mDefaultSkuPpiDescriptor = {(
VOID
);
EFI_STATUS
EFIAPI
a notification/event to trigger further SKU processing.(
VOID
);
EFI_STATUS
EFIAPI
mActiveSkuPpiDescriptor = {(
VOID
);
EFI_STATUS
EFIAPI
Helper Functions(
VOID
);
EFI_STATUS
EFIAPI
Services(
VOID
);
EFI_STATUS
EFIAPI
Services Access(
VOID
);
EFI_STATUS
EFIAPI
PEI Services Table pointer is stored at (IDT_Base - 4).(
VOID
);
EFI_STATUS
EFIAPI
is a standard technique used by PeiServicesTablePointerLibIdt.(
VOID
);
EFI_STATUS
EFIAPI
= *(EFI_PEI_SERVICES ***)(Idtr.Base - 4);(
VOID
);
EFI_STATUS
EFIAPI
current CMOS index register, preserve NMI bit(
VOID
);
EFI_STATUS
EFIAPI
= IoRead8 (CMOS_INDEX_PORT);(
VOID
);
EFI_STATUS
EFIAPI
small SKU value (0, 1, 2, or 3)(
VOID
);
EFI_STATUS
EFIAPI
(SkuValue == 0) {(
VOID
);
EFI_STATUS
EFIAPI
not found(
VOID
);
EFI_STATUS
EFIAPI
SKU found(
VOID
);
EFI_STATUS
EFIAPI
> 3: check if zero(
VOID
);
EFI_STATUS
EFIAPI
RegValue;(
VOID
);
EFI_STATUS
EFIAPI
(SkuValue == 0xFF) {(
VOID
);
EFI_STATUS
EFIAPI
invalid(
VOID
);
EFI_STATUS
EFIAPI
past this HOB to continue searching(
VOID
);
EFI_STATUS
EFIAPI
= (VOID *)((UINT8 *)Hob + Hob->HobLength);(
VOID
);
EFI_STATUS
EFIAPI
SKU identifier bytes from HOB data area.(
VOID
);
EFI_STATUS
EFIAPI
CrystalRidge HOB stores 3 SKU identification bytes(
VOID
);
EFI_STATUS
EFIAPI
fixed offsets 48, 49, 50 from the HOB start.(
VOID
);
EFI_STATUS
EFIAPI
= 0x80000000 | 6(
VOID
);
EFI_STATUS
EFIAPI
SKU buffer does NOT contain the sentinel 0x55 at byte 24(
VOID
);
EFI_STATUS
EFIAPI
the "default" SKU PPI to signal downstream PEIMs.(
VOID
);
EFI_STATUS
EFIAPI
(SkuBuffer[24] != SKU_VALID_SENTINEL) {(
VOID
);
EFI_STATUS
EFIAPI
Entry Point(
VOID
);
EFI_STATUS
EFIAPI
boot services data buffer(
VOID
);
EFI_STATUS
EFIAPI
= (*PeiServices)->AllocatePages ((
VOID
);
EFI_STATUS
EFIAPI
revision/sku data into the allocated buffer(
VOID
);
EFI_STATUS
EFIAPI
// *((UINT8 *)Buffer + 17) = 0x00;(
VOID
);
EFI_STATUS
EFIAPI
SKU from HOB(
VOID
);
EFI_STATUS
EFIAPI
= SkuInit (SkuBuffer);(
VOID
);
EFI_STATUS
EFIAPI
SKU sentinel byte == 0x55, install active PPI directly(
VOID
);
EFI_STATUS
EFIAPI
(SkuBuffer[24] == SKU_VALID_SENTINEL) {(
VOID
);
EFI_STATUS
EFIAPI
InstallSkuPpi (LocalPeiServices);(
VOID
);
#endif /* __MULTISKUDISTINCTIONPEI_H__ */