mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
exo: Support new fw versioning
This commit is contained in:
parent
0a44a31f2c
commit
4564db0b6d
3 changed files with 49 additions and 1 deletions
|
@ -148,6 +148,7 @@ int parse_fss(launch_ctxt_t *ctxt, const char *path, fss0_sept_t *sept_ctxt)
|
||||||
if (!sept_ctxt)
|
if (!sept_ctxt)
|
||||||
{
|
{
|
||||||
ctxt->atmosphere = true;
|
ctxt->atmosphere = true;
|
||||||
|
ctxt->fss0_ver = fss_meta->version;
|
||||||
ctxt->fss0_hosver = fss_meta->hos_ver;
|
ctxt->fss0_hosver = fss_meta->hos_ver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,7 @@ typedef struct _launch_ctxt_t
|
||||||
link_t kip1_list;
|
link_t kip1_list;
|
||||||
char* kip1_patches;
|
char* kip1_patches;
|
||||||
|
|
||||||
|
u32 fss0_ver;
|
||||||
u32 fss0_hosver;
|
u32 fss0_hosver;
|
||||||
bool svcperm;
|
bool svcperm;
|
||||||
bool debugmode;
|
bool debugmode;
|
||||||
|
|
|
@ -138,6 +138,8 @@ typedef struct _atm_fatal_error_ctx
|
||||||
#define EXO_FLAG_CAL0_BLANKING (1 << 5)
|
#define EXO_FLAG_CAL0_BLANKING (1 << 5)
|
||||||
#define EXO_FLAG_CAL0_WRITES_SYS (1 << 6)
|
#define EXO_FLAG_CAL0_WRITES_SYS (1 << 6)
|
||||||
|
|
||||||
|
#define EXO_FW_VER(mj, mn, rv) (((mj) << 24) | ((mn) << 16) | ((rv) << 8))
|
||||||
|
|
||||||
void config_exosphere(launch_ctxt_t *ctxt)
|
void config_exosphere(launch_ctxt_t *ctxt)
|
||||||
{
|
{
|
||||||
u32 exoFwNo = 0;
|
u32 exoFwNo = 0;
|
||||||
|
@ -151,6 +153,7 @@ void config_exosphere(launch_ctxt_t *ctxt)
|
||||||
|
|
||||||
volatile exo_cfg_t *exo_cfg = (exo_cfg_t *)EXO_CFG_ADDR;
|
volatile exo_cfg_t *exo_cfg = (exo_cfg_t *)EXO_CFG_ADDR;
|
||||||
|
|
||||||
|
// Old exosphere target versioning.
|
||||||
switch (kb)
|
switch (kb)
|
||||||
{
|
{
|
||||||
case KB_FIRMWARE_VERSION_100_200:
|
case KB_FIRMWARE_VERSION_100_200:
|
||||||
|
@ -171,9 +174,52 @@ void config_exosphere(launch_ctxt_t *ctxt)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// New exosphere target versioning.
|
||||||
|
if (!ctxt->fss0_ver || ((ctxt->fss0_ver >> 8) > 0xC00)) // 0.12.0.
|
||||||
|
{
|
||||||
|
// Feed old versioning.
|
||||||
|
switch (exoFwNo)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
case 6:
|
||||||
|
exoFwNo = EXO_FW_VER(exoFwNo, 0, 0);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (!ctxt->exo_ctx.fs_is_510)
|
||||||
|
exoFwNo = EXO_FW_VER(5, 0, 0);
|
||||||
|
else
|
||||||
|
exoFwNo = EXO_FW_VER(5, 1, 0);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
exoFwNo = EXO_FW_VER(6, 2, 0);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
exoFwNo = EXO_FW_VER(7, 0, 0);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
exoFwNo = EXO_FW_VER(8, 0, 0);
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
exoFwNo = EXO_FW_VER(8, 1, 0);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
exoFwNo = EXO_FW_VER(9, 0, 0);
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
exoFwNo = EXO_FW_VER(9, 1, 0);
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
exoFwNo = EXO_FW_VER(10, 0, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse exosphere.ini.
|
||||||
if (!ctxt->stock)
|
if (!ctxt->stock)
|
||||||
{
|
{
|
||||||
// Parse exosphere.ini.
|
|
||||||
LIST_INIT(ini_sections);
|
LIST_INIT(ini_sections);
|
||||||
if (ini_parse(&ini_sections, "exosphere.ini", false))
|
if (ini_parse(&ini_sections, "exosphere.ini", false))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue