exo/spl: new ConfigItem in 23.0.0 is wild

This commit is contained in:
hexkyz
2026-09-14 23:04:57 +01:00
parent 819da013ed
commit e6a3d71692
4 changed files with 14 additions and 5 deletions

View File

@@ -271,6 +271,9 @@ namespace ams::secmon::smc {
std::memcpy(std::addressof(args.r[1]), std::addressof(tmp_hash), sizeof(tmp_hash)); std::memcpy(std::addressof(args.r[1]), std::addressof(tmp_hash), sizeof(tmp_hash));
} }
break; break;
case ConfigItem::Unknown18:
args.r[1] = GetBootConfig().data.GetUnknown70();
break;
case ConfigItem::ExosphereApiVersion: case ConfigItem::ExosphereApiVersion:
/* Get information about the current exosphere version. */ /* Get information about the current exosphere version. */
if (kern || g_set_true_target_firmware) { if (kern || g_set_true_target_firmware) {

View File

@@ -38,6 +38,7 @@ namespace ams::secmon::smc {
RegulatorType = 15, RegulatorType = 15,
DeviceUniqueKeyGeneration = 16, DeviceUniqueKeyGeneration = 16,
Package2Hash = 17, Package2Hash = 17,
Unknown18 = 18,
/* Extension config items for exosphere. */ /* Extension config items for exosphere. */
ExosphereApiVersion = 65000, ExosphereApiVersion = 65000,

View File

@@ -61,14 +61,15 @@ namespace ams::pkg1 {
} }
struct BootConfigData { struct BootConfigData {
u32 version; u64 version;
u32 reserved_04;
u32 reserved_08; u32 reserved_08;
u32 reserved_0C; u32 reserved_0C;
u8 flags1[0x10]; u8 flags1[0x10];
u8 flags0[0x10]; u8 flags0[0x10];
u64 initial_tsc_value; u64 initial_tsc_value;
u8 padding_38[0x200 - 0x38]; u8 padding_38[0x38];
u64 unknown_70;
u8 padding_78[0x200 - 0x78];
constexpr bool IsDevelopmentFunctionEnabled() const { constexpr bool IsDevelopmentFunctionEnabled() const {
return (this->flags1[0] & (1 << 1)) != 0; return (this->flags1[0] & (1 << 1)) != 0;
@@ -97,13 +98,16 @@ namespace ams::pkg1 {
constexpr u64 GetInitialTscValue() const { constexpr u64 GetInitialTscValue() const {
return this->IsInitialTscValueValid() ? this->initial_tsc_value : 0; return this->IsInitialTscValueValid() ? this->initial_tsc_value : 0;
} }
constexpr u64 GetUnknown70() const {
return this->unknown_70;
}
}; };
static_assert(util::is_pod<BootConfigData>::value); static_assert(util::is_pod<BootConfigData>::value);
static_assert(sizeof(BootConfigData) == 0x200); static_assert(sizeof(BootConfigData) == 0x200);
struct BootConfigSignedData { struct BootConfigSignedData {
u32 version; u64 version;
u32 reserved_04;
u8 flags; u8 flags;
u8 reserved_09[0x10 - 9]; u8 reserved_09[0x10 - 9];
u8 ecid[0x10]; u8 ecid[0x10];

View File

@@ -230,6 +230,7 @@ namespace ams::spl {
RegulatorType = 15, RegulatorType = 15,
DeviceUniqueKeyGeneration = 16, DeviceUniqueKeyGeneration = 16,
Package2Hash = 17, Package2Hash = 17,
Unknown18 = 18,
/* Extension config items for exosphere. */ /* Extension config items for exosphere. */
ExosphereApiVersion = 65000, ExosphereApiVersion = 65000,