/** @file BootScriptExecutorDxe.h -- Header for BootScriptExecutorDxe Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __BOOTSCRIPTEXECUTORDXE_H__ #define __BOOTSCRIPTEXECUTORDXE_H__ #include "../uefi_headers/Uefi.h" // // Function Prototypes // EFI_STATUS EFIAPI ModuleEntryPoint( VOID ); EFI_STATUS EFIAPI DriverInit( VOID ); EFI_STATUS EFIAPI BootScriptDriverInit( VOID ); EFI_STATUS EFIAPI BootScriptExecuteTable( VOID ); EFI_STATUS EFIAPI UefiBootServicesTableLibConstructor( VOID ); EFI_STATUS EFIAPI SmmLockBoxSaveLockBox( VOID ); EFI_STATUS EFIAPI SmmLockBoxRestoreLockBox( VOID ); EFI_STATUS EFIAPI SmmLockBoxSetAttributes( VOID ); EFI_STATUS EFIAPI X64ExceptionDumpCpuContext( VOID ); EFI_STATUS EFIAPI BaseLibGetPerformanceCounter( VOID ); EFI_STATUS EFIAPI variables( VOID ); EFI_STATUS EFIAPI section variables( VOID ); EFI_STATUS EFIAPI gUnknownData_0xC850; /* 0xC850 */( VOID ); EFI_STATUS EFIAPI *gEfiBootScriptNotifyProtocol; /* 0xC710 */( VOID ); EFI_STATUS EFIAPI Entry Point( VOID ); EFI_STATUS EFIAPI Init - Serial port init and boot script setup( VOID ); EFI_STATUS EFIAPI global pointers( VOID ); EFI_STATUS EFIAPI CMOS/RTC to detect serial baud rate( VOID ); EFI_STATUS EFIAPI index 0x5C stores the UART baud rate index:( VOID ); EFI_STATUS EFIAPI -> 115200, 0xA6 -> 57600, 0xA5 -> 38400( VOID ); EFI_STATUS EFIAPI -> 19200, 0xA3 -> 9600( VOID ); EFI_STATUS EFIAPI (RTC_ADDR_PORT, 0x5C);( VOID ); EFI_STATUS EFIAPI 16550 UART at detected base address( VOID ); EFI_STATUS EFIAPI base is determined from CMOS (typically 0x3F8 for COM1)( VOID ); EFI_STATUS EFIAPI UartBase = 1016; /* 0x3F8 */( VOID ); EFI_STATUS EFIAPI current UART configuration( VOID ); EFI_STATUS EFIAPI DLAB bit to access divisor latches( VOID ); EFI_STATUS EFIAPI reconfigure if baud rate doesn't match( VOID ); EFI_STATUS EFIAPI for UART idle (TSR empty)( VOID ); EFI_STATUS EFIAPI DLAB, write divisor, clear DLAB, set 8N1( VOID ); EFI_STATUS EFIAPI boot script table( VOID ); EFI_STATUS EFIAPI check: enable watchdog if appropriate( VOID ); EFI_STATUS EFIAPI CR0 (cache settings)( VOID ); EFI_STATUS EFIAPI counter delay loop( VOID ); EFI_STATUS EFIAPI cache state( VOID ); EFI_STATUS EFIAPI main boot script driver init( VOID ); EFI_STATUS EFIAPI Script Driver Init (from PiDxeS3BootScriptLib/BootScriptSave.c)( VOID ); EFI_STATUS EFIAPI boot script notification protocols.( VOID ); EFI_STATUS EFIAPI S3 boot script context( VOID ); EFI_STATUS EFIAPI S3 boot script table via boot services( VOID ); EFI_STATUS EFIAPI with BS function table( VOID ); EFI_STATUS EFIAPI DxeSmmReadyToLock event( VOID ); EFI_STATUS EFIAPI if BootScript Notify protocol is available( VOID ); EFI_STATUS EFIAPI so, register S3 ready event and close done callbacks( VOID ); EFI_STATUS EFIAPI second context( VOID ); EFI_STATUS EFIAPI from S3 boot script protocol( VOID ); EFI_STATUS EFIAPI boot script close callbacks( VOID ); EFI_STATUS EFIAPI S3 ready callback( VOID ); EFI_STATUS EFIAPI Script Table Entry Execution( VOID ); EFI_STATUS EFIAPI - Main entry for executing the boot script table( VOID ); EFI_STATUS EFIAPI each entry by opcode and dispatches to the appropriate handler.( VOID ); EFI_STATUS EFIAPI during S3 resume.( VOID ); EFI_STATUS EFIAPI BootScriptExecuteTable (( VOID ); EFI_STATUS EFIAPI is the core function at 0x4C94( VOID ); EFI_STATUS EFIAPI iterates through the boot script table entries, parsing the( VOID ); EFI_STATUS EFIAPI header (opcode, width, size) and dispatching to:( VOID ); EFI_STATUS EFIAPI the full decompiled pseudocode, see the IDB at:( VOID ); EFI_STATUS EFIAPI @ 0x4C94( VOID ); EFI_STATUS EFIAPI @ 0x1B9C( VOID ); EFI_STATUS EFIAPI for the UEFI Boot Services Table Library.( VOID ); EFI_STATUS EFIAPI pointer to function table.( VOID ); EFI_STATUS EFIAPI UefiBootServicesTableLibConstructor (( VOID ); EFI_STATUS EFIAPI the gBS function table pointer( VOID ); EFI_STATUS EFIAPI @ 0x21A4( VOID ); EFI_STATUS EFIAPI a buffer to a LockBox identified by GUID.( VOID ); EFI_STATUS EFIAPI SMM communication buffer protocol.( VOID ); EFI_STATUS EFIAPI SmmLockBoxSaveLockBox (( VOID ); EFI_STATUS EFIAPI SMM communication buffer( VOID ); EFI_STATUS EFIAPI SMM LockBox save request( VOID ); EFI_STATUS EFIAPI to SMM via communication buffer( VOID ); EFI_STATUS EFIAPI status( VOID ); EFI_STATUS EFIAPI @ 0x2414( VOID ); EFI_STATUS EFIAPI a buffer from a LockBox identified by GUID.( VOID ); EFI_STATUS EFIAPI boot services buffer for the restored data.( VOID ); EFI_STATUS EFIAPI SmmLockBoxRestoreLockBox (( VOID ); EFI_STATUS EFIAPI LockBox restore request with SMM comm buffer( VOID ); EFI_STATUS EFIAPI layout:( VOID ); EFI_STATUS EFIAPI SMM communication protocol( VOID ); EFI_STATUS EFIAPI restored data status( VOID ); EFI_STATUS EFIAPI @ 0x22E8( VOID ); EFI_STATUS EFIAPI attributes on an existing LockBox.( VOID ); EFI_STATUS EFIAPI only supports EFI_LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE (bit 0).( VOID ); EFI_STATUS EFIAPI SmmLockBoxSetAttributes (( VOID ); EFI_STATUS EFIAPI SMM request with Attributes=4 (SetAttributes)( VOID ); EFI_STATUS EFIAPI is embedded in the request buffer( VOID ); EFI_STATUS EFIAPI @ 0x6D30( VOID ); EFI_STATUS EFIAPI full CPU context for an X64 exception.( VOID ); EFI_STATUS EFIAPI by the exception handler to print register state.( VOID ); EFI_STATUS EFIAPI X64ExceptionDumpCpuContext (( VOID ); EFI_STATUS EFIAPI has data (page fault, etc.)( VOID ); EFI_STATUS EFIAPI fault( VOID ); EFI_STATUS EFIAPI all general purpose and system registers( VOID ); EFI_STATUS EFIAPI @ 0x19F4( VOID ); EFI_STATUS EFIAPI the current performance counter value.( VOID ); EFI_STATUS EFIAPI the TSC (Time Stamp Counter).( VOID ); EFI_STATUS EFIAPI BaseLibGetPerformanceCounter (( VOID ); EFI_STATUS EFIAPI @ 0x72EC( VOID ); EFI_STATUS EFIAPI memory from source to destination.( VOID ); EFI_STATUS EFIAPI *( VOID ); EFI_STATUS EFIAPI to CopyMemInternal at 0x9C0( VOID ); EFI_STATUS EFIAPI @ 0x7388( VOID ); EFI_STATUS EFIAPI memory with a byte value.( VOID ); EFI_STATUS EFIAPI to SetMemInternal at 0xA10( VOID ); #endif /* __BOOTSCRIPTEXECUTORDXE_H__ */