mirror of
https://github.com/CTCaer/hekate.git
synced 2025-04-20 11:35:56 +00:00
Port the patch to all versions
This commit is contained in:
parent
b80dfc682f
commit
f295f1f921
1 changed files with 66 additions and 0 deletions
|
@ -62,8 +62,20 @@ extern gfx_con_t gfx_con;
|
|||
#define ID_RCV_OFF_600 0x29B6C
|
||||
|
||||
#define OUTPUT_DEBUG_OFF_100 0x2AD64
|
||||
#define OUTPUT_DEBUG_OFF_200 0x02FB8
|
||||
#define OUTPUT_DEBUG_OFF_300 0x03840
|
||||
#define OUTPUT_DEBUG_OFF_302 0x03840
|
||||
#define OUTPUT_DEBUG_OFF_400 0x0381C
|
||||
#define OUTPUT_DEBUG_OFF_500 0x00DE0
|
||||
#define OUTPUT_DEBUG_OFF_600 0x00DE0
|
||||
|
||||
#define PRINTK_OFF_100 0x3BB4
|
||||
#define PRINTK_OFF_200 0x4178
|
||||
#define PRINTK_OFF_300 0x4A00
|
||||
#define PRINTK_OFF_302 0x4A00
|
||||
#define PRINTK_OFF_400 0x474C
|
||||
#define PRINTK_OFF_500 0x1DD4
|
||||
#define PRINTK_OFF_600 0x1F44
|
||||
|
||||
static u32 PRC_ID_SND_100[] =
|
||||
{
|
||||
|
@ -95,6 +107,13 @@ static u32 PRC_ID_RCV_200[] =
|
|||
0xA9BF2FEA, 0x2A0F03EA, 0xD37EF54A, 0xF9405FEB, 0xF86A696A, 0xF9407BEB, 0x92FFFFE9, 0x8A090148,
|
||||
0xD2FFFFE9, 0x8A09014A, 0xD2FFFFC9, 0xEB09015F, 0x54000040, 0xF9413168, 0xA8C12FEA
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_200 (FREE_CODE_OFF_2ND_200 + sizeof(PRC_ID_RCV_200) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_200[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_200 + 5 * 4, PRINTK_OFF_200), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
static u32 PRC_ID_SND_300[] =
|
||||
{
|
||||
|
@ -107,6 +126,13 @@ static u32 PRC_ID_RCV_300[] =
|
|||
0xA9BF2FEA, 0x2A0F03EA, 0xD37EF54A, 0xF9405FEB, 0xF86A696A, 0xF9407BEB, 0x92FFFFE9, 0x8A090148,
|
||||
0xD2FFFFE9, 0x8A09014A, 0xD2FFFFC9, 0xEB09015F, 0x54000040, 0xF9415568, 0xA8C12FEA
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_300 (FREE_CODE_OFF_2ND_300 + sizeof(PRC_ID_RCV_300) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_300[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_300 + 5 * 4, PRINTK_OFF_300), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
static u32 PRC_ID_SND_302[] =
|
||||
{
|
||||
|
@ -119,6 +145,13 @@ static u32 PRC_ID_RCV_302[] =
|
|||
0xA9BF2FEA, 0x2A0F03EA, 0xD37EF54A, 0xF9405FEB, 0xF86A696A, 0xF9407BEB, 0x92FFFFE9, 0x8A090148,
|
||||
0xD2FFFFE9, 0x8A09014A, 0xD2FFFFC9, 0xEB09015F, 0x54000040, 0xF9415568, 0xA8C12FEA
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_302 (FREE_CODE_OFF_2ND_302 + sizeof(PRC_ID_RCV_302) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_302[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_302 + 5 * 4, PRINTK_OFF_302), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
static u32 PRC_ID_SND_400[] =
|
||||
{
|
||||
|
@ -131,6 +164,13 @@ static u32 PRC_ID_RCV_400[] =
|
|||
0xF9403BED, 0x2A0E03EA, 0xD37EF54A, 0xF86A69AA, 0x92FFFFE9, 0x8A090148, 0xD2FFFFE9, 0x8A09014A,
|
||||
0xD2FFFFC9, 0xEB09015F, 0x54000040, 0xF9415B28, 0xD503201F
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_400 (FREE_CODE_OFF_2ND_400 + sizeof(PRC_ID_RCV_400) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_400[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_400 + 5 * 4, PRINTK_OFF_400), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
static u32 PRC_ID_SND_500[] =
|
||||
{
|
||||
|
@ -143,6 +183,13 @@ static u32 PRC_ID_RCV_500[] =
|
|||
0xF9403BED, 0x2A1503EA, 0xD37EF54A, 0xF86A69AA, 0x92FFFFE9, 0x8A090148, 0xD2FFFFE9, 0x8A09014A,
|
||||
0xD2FFFFC9, 0xEB09015F, 0x54000040, 0xF9415B08, 0xF9406FEA
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_500 (FREE_CODE_OFF_2ND_500 + sizeof(PRC_ID_RCV_500) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_500[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_500 + 5 * 4, PRINTK_OFF_500), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
static u32 PRC_ID_SND_600[] =
|
||||
{
|
||||
|
@ -157,6 +204,13 @@ static u32 PRC_ID_RCV_600[] =
|
|||
0x8A09014A, 0xD2FFFFC9, 0xEB09015F, 0x54000100, 0xA9BF27E8, 0xF9400308, 0xF9401D08, 0xAA1803E0,
|
||||
0xD63F0100, 0xA8C127E8, 0xAA0003E8, 0xA8C12FEA, 0xAA0803E0
|
||||
};
|
||||
#define FREE_CODE_OFF_3RD_600 (FREE_CODE_OFF_2ND_600 + sizeof(PRC_ID_RCV_600) + 4)
|
||||
static u32 DEBUG_OUTPUT_TRAMPOLINE_600[] =
|
||||
{
|
||||
0x252E2A73, 0x00000000, // "%.*s"
|
||||
0xE20300AA, 0xA0FFFF58, 0xFD7BBFA9, _BL(FREE_CODE_OFF_3RD_600 + 5 * 4, PRINTK_OFF_600), 0x000080D2,
|
||||
0xFD7BC1A8, 0xC0035FD6
|
||||
};
|
||||
|
||||
// Include kernel patches here, so we can utilize pkg1 id
|
||||
KERNEL_PATCHSET_DEF(_kernel_1_patchset,
|
||||
|
@ -178,6 +232,8 @@ KERNEL_PATCHSET_DEF(_kernel_1_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_2_patchset,
|
||||
{ SVC_VERIFY_DS, 0x54834, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x6086C, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_200, _B(OUTPUT_DEBUG_OFF_200, FREE_CODE_OFF_3RD_200), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_200, sizeof(DEBUG_OUTPUT_TRAMPOLINE_200) >> 2, DEBUG_OUTPUT_TRAMPOLINE_200 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_200, _B(ID_SND_OFF_200, FREE_CODE_OFF_1ST_200), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_200, sizeof(PRC_ID_SND_200) >> 2, PRC_ID_SND_200}, // Send process id code.
|
||||
|
@ -192,6 +248,8 @@ KERNEL_PATCHSET_DEF(_kernel_2_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_3_patchset,
|
||||
{ SVC_VERIFY_DS, 0x3BD24, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x483FC, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_300, _B(OUTPUT_DEBUG_OFF_300, FREE_CODE_OFF_3RD_300), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_300, sizeof(DEBUG_OUTPUT_TRAMPOLINE_300) >> 2, DEBUG_OUTPUT_TRAMPOLINE_300 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_300, _B(ID_SND_OFF_300, FREE_CODE_OFF_1ST_300), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_300, sizeof(PRC_ID_SND_300) >> 2, PRC_ID_SND_300}, // Send process id code.
|
||||
|
@ -206,6 +264,8 @@ KERNEL_PATCHSET_DEF(_kernel_3_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_302_patchset,
|
||||
{ SVC_VERIFY_DS, 0x3BD24, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x48414, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_302, _B(OUTPUT_DEBUG_OFF_302, FREE_CODE_OFF_3RD_302), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_302, sizeof(DEBUG_OUTPUT_TRAMPOLINE_302) >> 2, DEBUG_OUTPUT_TRAMPOLINE_302 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_302, _B(ID_SND_OFF_302, FREE_CODE_OFF_1ST_302), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_302, sizeof(PRC_ID_SND_302) >> 2, PRC_ID_SND_302}, // Send process id code.
|
||||
|
@ -220,6 +280,8 @@ KERNEL_PATCHSET_DEF(_kernel_302_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_4_patchset,
|
||||
{ SVC_VERIFY_DS, 0x41EB4, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x4EBFC, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_400, _B(OUTPUT_DEBUG_OFF_400, FREE_CODE_OFF_3RD_400), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_400, sizeof(DEBUG_OUTPUT_TRAMPOLINE_400) >> 2, DEBUG_OUTPUT_TRAMPOLINE_400 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_400, _B(ID_SND_OFF_400, FREE_CODE_OFF_1ST_400), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_400, sizeof(PRC_ID_SND_400) >> 2, PRC_ID_SND_400}, // Send process id code.
|
||||
|
@ -234,6 +296,8 @@ KERNEL_PATCHSET_DEF(_kernel_4_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_5_patchset,
|
||||
{ SVC_VERIFY_DS, 0x45E6C, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x5513C, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_500, _B(OUTPUT_DEBUG_OFF_500, FREE_CODE_OFF_3RD_500), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_500, sizeof(DEBUG_OUTPUT_TRAMPOLINE_500) >> 2, DEBUG_OUTPUT_TRAMPOLINE_500 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_500, _B(ID_SND_OFF_500, FREE_CODE_OFF_1ST_500), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_500, sizeof(PRC_ID_SND_500) >> 2, PRC_ID_SND_500}, // Send process id code.
|
||||
|
@ -248,6 +312,8 @@ KERNEL_PATCHSET_DEF(_kernel_5_patchset,
|
|||
KERNEL_PATCHSET_DEF(_kernel_6_patchset,
|
||||
{ SVC_VERIFY_DS, 0x47EA0, _NOP(), NULL }, // Disable SVC verifications
|
||||
{ DEBUG_MODE_EN, 0x57548, _MOVZX(8, 1, 0), NULL }, // Enable Debug Patch
|
||||
{ DEBUG_OUTPUT_GEN, OUTPUT_DEBUG_OFF_600, _B(OUTPUT_DEBUG_OFF_600, FREE_CODE_OFF_3RD_600), NULL }, // Branch to the printk trampoline
|
||||
{ DEBUG_OUTPUT_ARR, FREE_CODE_OFF_3RD_600, sizeof(DEBUG_OUTPUT_TRAMPOLINE_600) >> 2, DEBUG_OUTPUT_TRAMPOLINE_600 }, // Call printk with the right arguments.
|
||||
// Atmosphère kernel patches.
|
||||
{ ATM_GEN_PATCH, ID_SND_OFF_600, _B(ID_SND_OFF_600, FREE_CODE_OFF_1ST_600), NULL}, // Send process id branch.
|
||||
{ ATM_ARR_PATCH, FREE_CODE_OFF_1ST_600, sizeof(PRC_ID_SND_600) >> 2, PRC_ID_SND_600}, // Send process id code.
|
||||
|
|
Loading…
Add table
Reference in a new issue