50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
/*
|
|
* firm.h
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "types.h"
|
|
|
|
#define PDN_MPCORE_CFG (*(vu32 *)0x10140FFC)
|
|
#define PDN_SPI_CNT (*(vu32 *)0x101401C0)
|
|
#define CFG_BOOTENV (*(vu32 *)0x10010000)
|
|
|
|
//FIRM Header layout
|
|
typedef struct firmSectionHeader {
|
|
u32 offset;
|
|
u8 *address;
|
|
u32 size;
|
|
u32 procType;
|
|
u8 hash[0x20];
|
|
} firmSectionHeader;
|
|
|
|
typedef struct firmHeader {
|
|
u32 magic;
|
|
u32 reserved1;
|
|
u8 *arm11Entry;
|
|
u8 *arm9Entry;
|
|
u8 reserved2[0x30];
|
|
firmSectionHeader section[4];
|
|
} firmHeader;
|
|
|
|
typedef enum ConfigurationStatus
|
|
{
|
|
DONT_CONFIGURE = 0,
|
|
MODIFY_CONFIGURATION = 1,
|
|
CREATE_CONFIGURATION = 2
|
|
} ConfigurationStatus;
|
|
|
|
typedef enum A9LHMode
|
|
{
|
|
NO_A9LH = 0,
|
|
A9LH_WITH_NFIRM_FIRMPROT = 1,
|
|
A9LH_WITH_SFIRM_FIRMPROT = 2
|
|
} A9LHMode;
|
|
|
|
static inline void loadFirm(FirmwareType firmType, u32 externalFirm);
|
|
static inline void patchNativeFirm(FirmwareSource nandType, u32 emuHeader, A9LHMode a9lhMode);
|
|
static inline void patchLegacyFirm(FirmwareType firmType);
|
|
static inline void patchSafeFirm(void);
|
|
static inline void copySection0AndInjectLoader(void);
|
|
static inline void launchFirm(FirmwareType firmType, u32 isFirmlaunch); |