hos: pkg2: rename ini1 value offset
And simplify the logic a bit.
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
extern hekate_config h_cfg;
|
||||
extern const u8 package2_keyseed[];
|
||||
|
||||
u32 pkg2_newkern_ini1_val;
|
||||
u32 pkg2_newkern_ini1_info;
|
||||
u32 pkg2_newkern_ini1_start;
|
||||
u32 pkg2_newkern_ini1_end;
|
||||
|
||||
@@ -190,7 +190,7 @@ static u32 _pkg2_calc_kip1_size(pkg2_kip1_t *kip1)
|
||||
|
||||
void pkg2_get_newkern_info(u8 *kern_data)
|
||||
{
|
||||
u32 pkg2_newkern_ini1_off = 0;
|
||||
pkg2_newkern_ini1_info = 0;
|
||||
pkg2_newkern_ini1_start = 0;
|
||||
|
||||
// Find static OP offset that is close to INI1 offset.
|
||||
@@ -199,7 +199,7 @@ void pkg2_get_newkern_info(u8 *kern_data)
|
||||
{
|
||||
if (*(u32 *)(kern_data + 0x100 - counter_ops) == PKG2_NEWKERN_GET_INI1_HEURISTIC)
|
||||
{
|
||||
pkg2_newkern_ini1_off = 0x100 - counter_ops + 12; // OP found. Add 12 for the INI1 offset.
|
||||
pkg2_newkern_ini1_info = 0x100 - counter_ops + 12; // OP found. Add 12 for the INI1 offset.
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -210,11 +210,11 @@ void pkg2_get_newkern_info(u8 *kern_data)
|
||||
if (!counter_ops)
|
||||
return;
|
||||
|
||||
u32 info_op = *(u32 *)(kern_data + pkg2_newkern_ini1_off);
|
||||
pkg2_newkern_ini1_val = ((info_op & 0xFFFF) >> 3) + pkg2_newkern_ini1_off; // Parse ADR and PC.
|
||||
u32 info_op = *(u32 *)(kern_data + pkg2_newkern_ini1_info);
|
||||
pkg2_newkern_ini1_info += ((info_op & 0xFFFF) >> 3); // Parse ADR and PC.
|
||||
|
||||
pkg2_newkern_ini1_start = *(u32 *)(kern_data + pkg2_newkern_ini1_val);
|
||||
pkg2_newkern_ini1_end = *(u32 *)(kern_data + pkg2_newkern_ini1_val + 0x8);
|
||||
pkg2_newkern_ini1_start = *(u32 *)(kern_data + pkg2_newkern_ini1_info);
|
||||
pkg2_newkern_ini1_end = *(u32 *)(kern_data + pkg2_newkern_ini1_info + 0x8);
|
||||
}
|
||||
|
||||
bool pkg2_parse_kips(link_t *info, pkg2_hdr_t *pkg2, bool *new_pkg2)
|
||||
@@ -790,7 +790,7 @@ DPRINTF("%s @ %08X (%08X)\n", is_meso ? "Mesosphere": "kernel",(u32)ctxt->kernel
|
||||
else
|
||||
{
|
||||
// Set new INI1 offset to kernel.
|
||||
*(u32 *)(pdst + (is_meso ? 8 : pkg2_newkern_ini1_val)) = kernel_size;
|
||||
*(u32 *)(pdst + (is_meso ? 8 : pkg2_newkern_ini1_info)) = kernel_size;
|
||||
|
||||
// Build INI1 for new Package2.
|
||||
kernel_size += _pkg2_ini1_build(pdst + kernel_size, hdr, kips_info, ctxt->new_pkg2);
|
||||
|
||||
@@ -28,12 +28,13 @@
|
||||
#define INI1_MAGIC 0x31494E49
|
||||
|
||||
//! TODO: Update on kernel change if needed.
|
||||
#define PKG2_NEWKERN_GET_INI1_HEURISTIC 0xD2800015 // Offset of OP + 12 is the INI1 offset.
|
||||
// Offset of OP + 12 is the INI1 offset. On v2 with dynamic crt0 it's + 16.
|
||||
#define PKG2_NEWKERN_GET_INI1_HEURISTIC 0xD2800015
|
||||
#define PKG2_NEWKERN_START 0x800
|
||||
|
||||
#define ATM_MESOSPHERE 0x3053534D
|
||||
|
||||
extern u32 pkg2_newkern_ini1_val;
|
||||
extern u32 pkg2_newkern_ini1_info;
|
||||
extern u32 pkg2_newkern_ini1_start;
|
||||
extern u32 pkg2_newkern_ini1_end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user