exo: Add support for user access to PMU flag

This commit is contained in:
CTCaer 2019-12-08 03:02:17 +02:00
parent c12c696e53
commit 97d3b745d9
3 changed files with 17 additions and 0 deletions

View file

@ -65,6 +65,7 @@ typedef struct _launch_ctxt_t
bool stock; bool stock;
bool atmosphere; bool atmosphere;
bool exo_no_user_exceptions; bool exo_no_user_exceptions;
bool exo_user_pmu;
bool emuMMC; bool emuMMC;
ini_sec_t *cfg; ini_sec_t *cfg;

View file

@ -201,6 +201,16 @@ static int _config_dis_exo_user_exceptions(launch_ctxt_t *ctxt, const char *valu
return 1; return 1;
} }
static int _config_exo_user_pmu_access(launch_ctxt_t *ctxt, const char *value)
{
if (*value == '1')
{
DPRINTF("Enabled user access to PMU\n");
ctxt->exo_user_pmu = true;
}
return 1;
}
static int _config_fss(launch_ctxt_t *ctxt, const char *value) static int _config_fss(launch_ctxt_t *ctxt, const char *value)
{ {
return parse_fss(ctxt, value); return parse_fss(ctxt, value);
@ -223,6 +233,7 @@ static const cfg_handler_t _config_handlers[] = {
{ "stock", _config_stock }, { "stock", _config_stock },
{ "atmosphere", _config_atmosphere }, { "atmosphere", _config_atmosphere },
{ "nouserexceptions", _config_dis_exo_user_exceptions }, { "nouserexceptions", _config_dis_exo_user_exceptions },
{ "userpmu", _config_exo_user_pmu_access },
{ "fss0", _config_fss }, { "fss0", _config_fss },
{ NULL, NULL }, { NULL, NULL },
}; };

View file

@ -135,6 +135,7 @@ typedef struct _atm_fatal_error_ctx
#define EXO_FLAG_DBG_PRIV (1 << 1) #define EXO_FLAG_DBG_PRIV (1 << 1)
#define EXO_FLAG_DBG_USER (1 << 2) #define EXO_FLAG_DBG_USER (1 << 2)
#define EXO_FLAG_NO_USER_EXC (1 << 3) #define EXO_FLAG_NO_USER_EXC (1 << 3)
#define EXO_FLAG_USER_PMU (1 << 4)
void config_exosphere(launch_ctxt_t *ctxt) void config_exosphere(launch_ctxt_t *ctxt)
{ {
@ -172,6 +173,10 @@ void config_exosphere(launch_ctxt_t *ctxt)
if (ctxt->exo_no_user_exceptions) if (ctxt->exo_no_user_exceptions)
exoFlags |= EXO_FLAG_NO_USER_EXC; exoFlags |= EXO_FLAG_NO_USER_EXC;
// Enable user access to PMU.
if (ctxt->exo_user_pmu)
exoFlags |= EXO_FLAG_USER_PMU;
// Set mailbox values. // Set mailbox values.
exo_cfg->magic = EXO_MAGIC_VAL; exo_cfg->magic = EXO_MAGIC_VAL;