122 lines
2.8 KiB
C
122 lines
2.8 KiB
C
// This stuff wasn't written by me
|
|
// You know who you are
|
|
|
|
#pragma once
|
|
|
|
#ifndef _HVX_H
|
|
#define _HVX_H
|
|
|
|
typedef unsigned __int64 QWORD;
|
|
|
|
typedef enum _PEEK_POKE_TYPE {
|
|
PEEK_BYTE = 0,
|
|
PEEK_WORD = 1,
|
|
PEEK_DWORD = 2,
|
|
PEEK_QWORD = 3,
|
|
PEEK_BYTES = 4,
|
|
POKE_BYTE = 5,
|
|
POKE_WORD = 6,
|
|
POKE_DWORD = 7,
|
|
POKE_QWORD = 8,
|
|
POKE_BYTES = 9,
|
|
PEEK_SPR = 10,
|
|
POKE_SPR = 11
|
|
} PEEK_POKE_TYPE;
|
|
|
|
typedef enum _SOC_SPRS {
|
|
SPR_XER = 0x1,
|
|
SPR_LR = 0x8,
|
|
SPR_CTR = 0x9,
|
|
SPR_DSISR = 0x12,
|
|
SPR_DAR = 0x13,
|
|
SPR_DEC = 0x16,
|
|
SPR_SDR1 = 0x19,
|
|
SPR_SRR0 = 0x1A,
|
|
SPR_SRR1 = 0x1B,
|
|
SPR_ACCR = 0x1D,
|
|
SPR_CTRL_R = 0x88,
|
|
SPR_CTRL_W = 0x98,
|
|
SPR_VRSAVE = 0x100,
|
|
SPR_SPRG3_R = 0x103,
|
|
SPR_TB_R = 0x10C,
|
|
SPR_TBU_R = 0x10D,
|
|
SPR_SPRG0 = 0x110,
|
|
SPR_SPRG1 = 0x111,
|
|
SPR_SPRG2 = 0x112,
|
|
SPR_SPRG3 = 0x113,
|
|
SPR_TBL_W = 0x11C,
|
|
SPR_TBU_W = 0x11D,
|
|
SPR_PVR = 0x11F,
|
|
SPR_HSPRG0 = 0x130,
|
|
SPR_HSPRG1 = 0x131,
|
|
SPR_HDEC = 0x136,
|
|
SPR_HIOR = 0x137,
|
|
SPR_RMOR = 0x138,
|
|
SPR_HRMOR = 0x139,
|
|
SPR_HSRR0 = 0x13A,
|
|
SPR_HSRR1 = 0x13B,
|
|
SPR_LPCR = 0x13E,
|
|
SPR_LPIDR = 0x13F,
|
|
SPR_TSRL = 0x380,
|
|
SPR_TSRR = 0x381,
|
|
SPR_TSCR = 0x399,
|
|
SPR_TTR = 0x39A,
|
|
SPR_TLB_HINT = 0x3B2,
|
|
SPR_TLB_INDEX = 0x3B3,
|
|
SPR_TLB_VPN = 0x3B4,
|
|
SPR_TLB_RPN = 0x3B5,
|
|
SPR_TLB_RMT = 0x3B7,
|
|
SPR_DRSR0 = 0x3B8,
|
|
SPR_DRMR0 = 0x3B9,
|
|
SPR_DCIDR0 = 0x3BA,
|
|
SPR_DRSR1 = 0x3BB,
|
|
SPR_DRMR1 = 0x3BC,
|
|
SPR_DCIDR1 = 0x3BD,
|
|
SPR_IRSR0 = 0x3D0,
|
|
SPR_IRMR0 = 0x3D1,
|
|
SPR_ICIDR0 = 0x3D2,
|
|
SPR_IRSR1 = 0x3D3,
|
|
SPR_IRMR1 = 0x3D4,
|
|
SPR_ICIDR1 = 0x3D5,
|
|
SPR_HID0 = 0x3F0,
|
|
SPR_HID1 = 0x3F1,
|
|
SPR_IABR = 0x3F2,
|
|
SPR_HID4 = 0x3F4,
|
|
SPR_DABR = 0x3F5,
|
|
SPR_HID5 = 0x3F6,
|
|
SPR_DABRX = 0x3F7,
|
|
SPR_TDABRX = 0x3F8,
|
|
SPR_HID6 = 0x3F9,
|
|
SPR_HID7 = 0x3FA,
|
|
SPR_TIABR = 0x3FB,
|
|
SPR_BKMK = 0x3FC,
|
|
SPR_TDABR = 0x3FD,
|
|
SPR_PIR = 0x3FF
|
|
} SOC_SPRS;
|
|
|
|
#define HvPeekPokeExpID 0x48565050
|
|
|
|
HRESULT HvInitialize();
|
|
|
|
BYTE HvPeekBYTE(QWORD Address);
|
|
WORD HvPeekWORD(QWORD Address);
|
|
DWORD HvPeekDWORD(QWORD Address);
|
|
QWORD HvPeekQWORD(QWORD Address);
|
|
HRESULT HvPeekBytes(QWORD Address, PVOID Buffer, DWORD Size);
|
|
|
|
HRESULT HvPokeBYTE(QWORD Address, BYTE Value);
|
|
HRESULT HvPokeWORD(QWORD Address, WORD Value);
|
|
HRESULT HvPokeDWORD(QWORD Address, DWORD Value);
|
|
HRESULT HvPokeQWORD(QWORD Address, QWORD Value);
|
|
HRESULT HvPokeBytes(QWORD Address, const void* Buffer, DWORD Size);
|
|
|
|
QWORD HvPeekSPR(SOC_SPRS SPR);
|
|
QWORD HvPokeSPR(SOC_SPRS SPR, QWORD Value);
|
|
|
|
VOID HvGetFuses(QWORD *Out);
|
|
|
|
VOID HvDumpFromMemory(CHAR* FilePath);
|
|
VOID HvDumpFuses(CHAR* FilePath);
|
|
VOID HvDump1Bl(CHAR* FilePath);
|
|
|
|
#endif // _HVX_H
|