mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 12:21:18 +00:00
ams-1.0.0: meso no longer optional, remove conditional logic
This commit is contained in:
parent
320f0bbcfd
commit
da208f8001
10 changed files with 19 additions and 53 deletions
|
@ -74,9 +74,6 @@ namespace ams {
|
||||||
ams_ctx.pc = ctx->pc.x;
|
ams_ctx.pc = ctx->pc.x;
|
||||||
ams_ctx.pstate = ctx->pstate;
|
ams_ctx.pstate = ctx->pstate;
|
||||||
ams_ctx.afsr0 = static_cast<u32>(::ams::exosphere::GetVersion(ATMOSPHERE_RELEASE_VERSION));
|
ams_ctx.afsr0 = static_cast<u32>(::ams::exosphere::GetVersion(ATMOSPHERE_RELEASE_VERSION));
|
||||||
if (svc::IsKernelMesosphere()) {
|
|
||||||
ams_ctx.afsr0 |= (static_cast<u32>('M') << (BITSIZEOF(u32) - BITSIZEOF(u8)));
|
|
||||||
}
|
|
||||||
ams_ctx.afsr1 = static_cast<u32>(hos::GetVersion());
|
ams_ctx.afsr1 = static_cast<u32>(hos::GetVersion());
|
||||||
ams_ctx.far = ctx->far.x;
|
ams_ctx.far = ctx->far.x;
|
||||||
ams_ctx.report_identifier = armGetSystemTick();
|
ams_ctx.report_identifier = armGetSystemTick();
|
||||||
|
|
|
@ -462,7 +462,7 @@ namespace ams::boot2 {
|
||||||
DetectAndDeclareFutureMitms();
|
DetectAndDeclareFutureMitms();
|
||||||
|
|
||||||
/* Device whether to launch tma or htc. */
|
/* Device whether to launch tma or htc. */
|
||||||
if (svc::IsKernelMesosphere() && IsHtcEnabled()) {
|
if (IsHtcEnabled()) {
|
||||||
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Htc, ncm::StorageId::None), 0);
|
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Htc, ncm::StorageId::None), 0);
|
||||||
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Cs, ncm::StorageId::None), 0);
|
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Cs, ncm::StorageId::None), 0);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -219,10 +219,8 @@ namespace ams::erpt::srv {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SubmitResourceLimitContexts() {
|
void SubmitResourceLimitContexts() {
|
||||||
if (hos::GetVersion() >= hos::Version_11_0_0 || svc::IsKernelMesosphere()) {
|
SubmitResourceLimitLimitContext();
|
||||||
SubmitResourceLimitLimitContext();
|
SubmitResourceLimitPeakContext();
|
||||||
SubmitResourceLimitPeakContext();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result ValidateCreateReportContext(const ContextEntry *ctx) {
|
Result ValidateCreateReportContext(const ContextEntry *ctx) {
|
||||||
|
|
|
@ -40,6 +40,9 @@ namespace ams::hos {
|
||||||
|
|
||||||
/* Initialize hos::Version API. */
|
/* Initialize hos::Version API. */
|
||||||
hos::SetVersionForLibnxInternal();
|
hos::SetVersionForLibnxInternal();
|
||||||
|
|
||||||
|
/* Check that we're running under mesosphere. */
|
||||||
|
AMS_ABORT_UNLESS(svc::IsKernelMesosphere());
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitializeForStratosphereDebug(hos::Version debug_version) {
|
void InitializeForStratosphereDebug(hos::Version debug_version) {
|
||||||
|
@ -48,6 +51,9 @@ namespace ams::hos {
|
||||||
|
|
||||||
/* Initialize hos::Version API. */
|
/* Initialize hos::Version API. */
|
||||||
hos::SetVersionForLibnxInternalDebug(debug_version);
|
hos::SetVersionForLibnxInternalDebug(debug_version);
|
||||||
|
|
||||||
|
/* Check that we're running under mesosphere. */
|
||||||
|
AMS_ABORT_UNLESS(svc::IsKernelMesosphere());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,27 +56,11 @@ namespace ams::os::impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 GetAslrSpaceBeginAddress() {
|
static u64 GetAslrSpaceBeginAddress() {
|
||||||
if (hos::GetVersion() >= hos::Version_2_0_0 || svc::IsKernelMesosphere()) {
|
return GetAslrInfo(svc::InfoType_AslrRegionAddress);
|
||||||
return GetAslrInfo(svc::InfoType_AslrRegionAddress);
|
|
||||||
} else {
|
|
||||||
if (GetHeapSpaceBeginAddress() < AslrBase64BitDeprecated || GetAliasSpaceBeginAddress() < AslrBase64BitDeprecated) {
|
|
||||||
return AslrBase32Bit;
|
|
||||||
} else {
|
|
||||||
return AslrBase64BitDeprecated;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 GetAslrSpaceEndAddress() {
|
static u64 GetAslrSpaceEndAddress() {
|
||||||
if (hos::GetVersion() >= hos::Version_2_0_0 || svc::IsKernelMesosphere()) {
|
return GetAslrInfo(svc::InfoType_AslrRegionAddress) + GetAslrInfo(svc::InfoType_AslrRegionSize);
|
||||||
return GetAslrInfo(svc::InfoType_AslrRegionAddress) + GetAslrInfo(svc::InfoType_AslrRegionSize);
|
|
||||||
} else {
|
|
||||||
if (GetHeapSpaceBeginAddress() < AslrBase64BitDeprecated || GetAliasSpaceBeginAddress() < AslrBase64BitDeprecated) {
|
|
||||||
return AslrBase32Bit + AslrSize32Bit;
|
|
||||||
} else {
|
|
||||||
return AslrBase64BitDeprecated + AslrSize64BitDeprecated;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -56,17 +56,11 @@ namespace ams::mitm::settings {
|
||||||
const auto api_info = exosphere::GetApiInfo();
|
const auto api_info = exosphere::GetApiInfo();
|
||||||
const char emummc_char = emummc::IsActive() ? 'E' : 'S';
|
const char emummc_char = emummc::IsActive() ? 'E' : 'S';
|
||||||
|
|
||||||
/* NOTE: While Mesosphere is in experimental/opt-in, we will display it as part of the firmware. */
|
|
||||||
const char mesosphere_char = svc::IsKernelMesosphere() ? 'M' : '0';
|
|
||||||
|
|
||||||
/* TODO: Remove separate display for mesosphere vs not mesosphere in Atmosphere 1.0.0. */
|
|
||||||
AMS_ABORT_UNLESS(api_info.GetMajorVersion() == 0);
|
|
||||||
|
|
||||||
/* NOTE: We have carefully accounted for the size of the string we print. */
|
/* NOTE: We have carefully accounted for the size of the string we print. */
|
||||||
/* No truncation occurs assuming two-digits for all version number components. */
|
/* No truncation occurs assuming two-digits for all version number components. */
|
||||||
char display_version[sizeof(g_ams_firmware_version.display_version)];
|
char display_version[sizeof(g_ams_firmware_version.display_version)];
|
||||||
|
|
||||||
util::SNPrintf(display_version, sizeof(display_version), "%s|AMS %c.%u.%u|%c", g_ams_firmware_version.display_version, mesosphere_char, api_info.GetMinorVersion(), api_info.GetMicroVersion(), emummc_char);
|
util::SNPrintf(display_version, sizeof(display_version), "%s|AMS %u.%u.%u|%c", g_ams_firmware_version.display_version, api_info.GetMajorVersion(), api_info.GetMinorVersion(), api_info.GetMicroVersion(), emummc_char);
|
||||||
|
|
||||||
std::memcpy(g_ams_firmware_version.display_version, display_version, sizeof(display_version));
|
std::memcpy(g_ams_firmware_version.display_version, display_version, sizeof(display_version));
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,10 +358,7 @@ namespace ams::creport {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrashReport::SaveToFile(ScopedFile &file) {
|
void CrashReport::SaveToFile(ScopedFile &file) {
|
||||||
file.WriteFormat("Atmosphère Crash Report (v1.5):\n");
|
file.WriteFormat("Atmosphère Crash Report (v1.6):\n");
|
||||||
|
|
||||||
/* TODO: Remove in Atmosphere 1.0.0. */
|
|
||||||
file.WriteFormat("Mesosphere: %s\n", svc::IsKernelMesosphere() ? "Enabled" : "Disabled");
|
|
||||||
|
|
||||||
file.WriteFormat("Result: 0x%X (2%03d-%04d)\n\n", this->result.GetValue(), this->result.GetModule(), this->result.GetDescription());
|
file.WriteFormat("Result: 0x%X (2%03d-%04d)\n\n", this->result.GetValue(), this->result.GetModule(), this->result.GetDescription());
|
||||||
|
|
||||||
|
|
|
@ -235,7 +235,7 @@ namespace ams::fatal::srv {
|
||||||
font::AddSpacingLines(0.5f);
|
font::AddSpacingLines(0.5f);
|
||||||
|
|
||||||
/* TODO: Remove Mesosphere identifier in 1.0.0. */
|
/* TODO: Remove Mesosphere identifier in 1.0.0. */
|
||||||
font::PrintFormatLine("Firmware: %s (Atmosphère%s %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, svc::IsKernelMesosphere() ? " M" : "", ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision());
|
font::PrintFormatLine("Firmware: %s (Atmosphère %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision());
|
||||||
font::AddSpacingLines(1.5f);
|
font::AddSpacingLines(1.5f);
|
||||||
if (!exosphere::ResultVersionMismatch::Includes(this->context->result)) {
|
if (!exosphere::ResultVersionMismatch::Includes(this->context->result)) {
|
||||||
font::Print(config.GetErrorDescription());
|
font::Print(config.GetErrorDescription());
|
||||||
|
|
|
@ -265,11 +265,7 @@ namespace ams::ldr {
|
||||||
flags |= svc::CreateProcessFlag_AddressSpace32BitWithoutAlias;
|
flags |= svc::CreateProcessFlag_AddressSpace32BitWithoutAlias;
|
||||||
break;
|
break;
|
||||||
case Npdm::AddressSpaceType_64Bit:
|
case Npdm::AddressSpaceType_64Bit:
|
||||||
if (hos::GetVersion() >= hos::Version_2_0_0 || svc::IsKernelMesosphere()) {
|
flags |= svc::CreateProcessFlag_AddressSpace64Bit;
|
||||||
flags |= svc::CreateProcessFlag_AddressSpace64Bit;
|
|
||||||
} else {
|
|
||||||
flags |= svc::CreateProcessFlag_AddressSpace64BitDeprecated;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return ResultInvalidMeta();
|
return ResultInvalidMeta();
|
||||||
|
@ -326,11 +322,9 @@ namespace ams::ldr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 11.0.0+ Set Disable DAS merge. */
|
/* 11.0.0+/meso Set Disable DAS merge. */
|
||||||
if (hos::GetVersion() >= hos::Version_11_0_0 || svc::IsKernelMesosphere()) {
|
if (meta_flags & Npdm::MetaFlag_DisableDeviceAddressSpaceMerge) {
|
||||||
if (meta_flags & Npdm::MetaFlag_DisableDeviceAddressSpaceMerge) {
|
flags |= svc::CreateProcessFlag_DisableDeviceAddressSpaceMerge;
|
||||||
flags |= svc::CreateProcessFlag_DisableDeviceAddressSpaceMerge;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*out = flags;
|
*out = flags;
|
||||||
|
|
|
@ -171,10 +171,6 @@ namespace ams::pm::resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsKTraceEnabled() {
|
bool IsKTraceEnabled() {
|
||||||
if (!svc::IsKernelMesosphere()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 value = 0;
|
u64 value = 0;
|
||||||
R_ABORT_UNLESS(svc::GetInfo(std::addressof(value), svc::InfoType_MesosphereMeta, INVALID_HANDLE, svc::MesosphereMetaInfo_IsKTraceEnabled));
|
R_ABORT_UNLESS(svc::GetInfo(std::addressof(value), svc::InfoType_MesosphereMeta, INVALID_HANDLE, svc::MesosphereMetaInfo_IsKTraceEnabled));
|
||||||
|
|
||||||
|
@ -248,7 +244,7 @@ namespace ams::pm::resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Choose and initialize memory arrangement. */
|
/* Choose and initialize memory arrangement. */
|
||||||
const bool use_dynamic_memory_arrangement = (hos_version >= hos::Version_6_0_0) || (svc::IsKernelMesosphere() && hos_version >= hos::Version_5_0_0);
|
const bool use_dynamic_memory_arrangement = (hos_version >= hos::Version_5_0_0);
|
||||||
if (use_dynamic_memory_arrangement) {
|
if (use_dynamic_memory_arrangement) {
|
||||||
/* 6.0.0 retrieves memory limit information from the kernel, rather than using a hardcoded profile. */
|
/* 6.0.0 retrieves memory limit information from the kernel, rather than using a hardcoded profile. */
|
||||||
g_memory_arrangement = spl::MemoryArrangement_Dynamic;
|
g_memory_arrangement = spl::MemoryArrangement_Dynamic;
|
||||||
|
|
Loading…
Reference in a new issue