Compare commits
41 Commits
1.3.0
...
1400_suppo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
003f369238 | ||
|
|
56050a2195 | ||
|
|
e15bcc10a8 | ||
|
|
caf0be85fa | ||
|
|
8c955587f4 | ||
|
|
253ce776cb | ||
|
|
bec0c7ec2f | ||
|
|
ae09c45f6b | ||
|
|
059a005647 | ||
|
|
b7091df796 | ||
|
|
bb0be4de8e | ||
|
|
7454507467 | ||
|
|
79dbc22cb2 | ||
|
|
0896d47a92 | ||
|
|
4288b12f37 | ||
|
|
599c4ebf42 | ||
|
|
abede65264 | ||
|
|
fee7a4b774 | ||
|
|
a39448905a | ||
|
|
29a53bc572 | ||
|
|
262a066c8c | ||
|
|
de6d8d4ab4 | ||
|
|
dc7184c01f | ||
|
|
b428e77c16 | ||
|
|
30ff0254a4 | ||
|
|
c04ebf10a0 | ||
|
|
f466f9e825 | ||
|
|
7498958a06 | ||
|
|
f804793fdf | ||
|
|
0a81889967 | ||
|
|
cd83a3bd08 | ||
|
|
11e3d4a620 | ||
|
|
c593b1be89 | ||
|
|
36ab24f93a | ||
|
|
41e2c24101 | ||
|
|
b06ada6ac8 | ||
|
|
b2413b7464 | ||
|
|
fa330deeba | ||
|
|
df1b133bc7 | ||
|
|
40601cc74c | ||
|
|
9acf48ba5f |
@@ -15,10 +15,9 @@
|
||||
+ If you are a developer interested in adding support for another target, please reach out to `SciresM#0524` on discord.
|
||||
+ This is intended to finally allow sanely testing Atmosphère's code, by allowing most of it to run on a PC (with access to a debugger) instead of on game console hardware.
|
||||
+ In addition, this will allow making PC tools which reuse code written for Atmosphère directly..
|
||||
+ **Please Note**: This has no relation to interacting with official software on PC whatsoever. This really allows for making tests and self-contained atmosphère-based command-line tools; the Atmosphère project continues to have zero interest in attempting to run official software of any kind.
|
||||
+ In the course of adding this support (and working on tooling using it), a number of fairly major revisions were made to stratosphere (particularly surrounding filesystem code).
|
||||
+ **Please Note**: A number of changes made for this (and ones necessary in the process of adding support for 14.0.0) are api-breaking.
|
||||
+ If you're a developer and any of this caused your code to break, please feel free to contact `SciresM#0524` for help updating your program.
|
||||
+ **Please Note**: This has no relation to interacting with official software on PC whatsoever. This does not and is not intended to enable anything with official software, it only really allows for making tests and self-contained atmosphère-based tools.
|
||||
+ In the course of adding this support (and working on tooling using it), a number of major revisions were added to stratosphere:
|
||||
+
|
||||
+ General system stability improvements to enhance the user's experience.
|
||||
## 1.2.6
|
||||
+ Support was added for 13.2.1.
|
||||
|
||||
6
emummc/.gitrepo
vendored
6
emummc/.gitrepo
vendored
@@ -4,9 +4,9 @@
|
||||
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
|
||||
;
|
||||
[subrepo]
|
||||
remote = https://github.com/m4xw/emummc
|
||||
remote = https://github.com/m4xw/emuMMC
|
||||
branch = develop
|
||||
commit = 56a2e8a2078944d9bf8daead237036254bb6e36d
|
||||
parent = 4f763b2aa401ac3e3d699ec8c866ae9b3c8fb28d
|
||||
commit = a9d56959460fc794ce2cb6405402c25a3e89c47f
|
||||
parent = ff719641396c635b735873fb2b020c910f768a04
|
||||
method = merge
|
||||
cmdver = 0.4.1
|
||||
|
||||
28
emummc/source/nx/cache.s
vendored
28
emummc/source/nx/cache.s
vendored
@@ -27,10 +27,6 @@ CODE_BEGIN armDCacheFlush
|
||||
bic x8, x0, x10
|
||||
mov x10, x1
|
||||
|
||||
mov w1, #1
|
||||
mrs x0, tpidrro_el0
|
||||
strb w1, [x0, #0x104]
|
||||
|
||||
armDCacheFlush_L0:
|
||||
dc civac, x8
|
||||
add x8, x8, x9
|
||||
@@ -38,9 +34,6 @@ armDCacheFlush_L0:
|
||||
bcc armDCacheFlush_L0
|
||||
|
||||
dsb sy
|
||||
|
||||
strb wzr, [x0, #0x104]
|
||||
|
||||
ret
|
||||
CODE_END
|
||||
|
||||
@@ -55,10 +48,6 @@ CODE_BEGIN armDCacheClean
|
||||
bic x8, x0, x10
|
||||
mov x10, x1
|
||||
|
||||
mov w1, #1
|
||||
mrs x0, tpidrro_el0
|
||||
strb w1, [x0, #0x104]
|
||||
|
||||
armDCacheClean_L0:
|
||||
dc cvac, x8
|
||||
add x8, x8, x9
|
||||
@@ -66,9 +55,6 @@ armDCacheClean_L0:
|
||||
bcc armDCacheClean_L0
|
||||
|
||||
dsb sy
|
||||
|
||||
strb wzr, [x0, #0x104]
|
||||
|
||||
ret
|
||||
CODE_END
|
||||
|
||||
@@ -82,10 +68,6 @@ CODE_BEGIN armICacheInvalidate
|
||||
bic x8, x0, x10
|
||||
mov x10, x1
|
||||
|
||||
mov w1, #1
|
||||
mrs x0, tpidrro_el0
|
||||
strb w1, [x0, #0x104]
|
||||
|
||||
armICacheInvalidate_L0:
|
||||
ic ivau, x8
|
||||
add x8, x8, x9
|
||||
@@ -93,9 +75,6 @@ armICacheInvalidate_L0:
|
||||
bcc armICacheInvalidate_L0
|
||||
|
||||
dsb sy
|
||||
|
||||
strb wzr, [x0, #0x104]
|
||||
|
||||
ret
|
||||
CODE_END
|
||||
|
||||
@@ -110,10 +89,6 @@ CODE_BEGIN armDCacheZero
|
||||
bic x8, x0, x10
|
||||
mov x10, x1
|
||||
|
||||
mov w1, #1
|
||||
mrs x0, tpidrro_el0
|
||||
strb w1, [x0, #0x104]
|
||||
|
||||
armDCacheZero_L0:
|
||||
dc zva, x8
|
||||
add x8, x8, x9
|
||||
@@ -121,8 +96,5 @@ armDCacheZero_L0:
|
||||
bcc armDCacheZero_L0
|
||||
|
||||
dsb sy
|
||||
|
||||
strb wzr, [x0, #0x104]
|
||||
|
||||
ret
|
||||
CODE_END
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
[subrepo]
|
||||
remote = https://github.com/Atmosphere-NX/Atmosphere-libs
|
||||
branch = master
|
||||
commit = 726a7efddf8d2950e1b12848cecb66f17fbdde37
|
||||
parent = 44d553d12ebac4051f2a1adbc12aeff5b3d905d9
|
||||
commit = 0d161b8588aa6482b84f3c44dd001055b01a047f
|
||||
parent = 4efa5d7dd0bfbdf89a6261af0aef3878ca784b05
|
||||
method = merge
|
||||
cmdver = 0.4.1
|
||||
|
||||
@@ -67,8 +67,6 @@ endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
export LDFLAGS = -specs=$(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere/stratosphere.specs -specs=$(DEVKITPRO)/libnx/switch.specs $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-Map,$(notdir $*.map)
|
||||
else ifeq ($(ATMOSPHERE_COMPILER_NAME),clang)
|
||||
export LDFLAGS = $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-map,$(notdir $@.map)
|
||||
else
|
||||
export LDFLAGS = $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-Map,$(notdir $@.map)
|
||||
endif
|
||||
|
||||
@@ -101,9 +101,10 @@ namespace ams::fs {
|
||||
s32 i;
|
||||
for (i = m_position; m_buffer[i] != StringTraits::DirectorySeparator; ++i) {
|
||||
if (m_buffer[i] == StringTraits::NullTerminator) {
|
||||
char * const ret = (i != m_position) ? m_buffer + m_position : nullptr;
|
||||
m_position = -1;
|
||||
return ret;
|
||||
if (i == m_position) {
|
||||
m_position = -1;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace ams::fssystem {
|
||||
private:
|
||||
Result ResolveFullPath(fs::Path *out, const fs::Path &path) {
|
||||
if (path.IsMatchHead(m_before_dir.GetString(), m_before_dir.GetLength())) {
|
||||
R_TRY(out->Initialize(m_after_dir));
|
||||
R_TRY(out->AppendChild(path));
|
||||
R_TRY(out->InitializeWithFormat("%s%s", m_after_dir.GetString(), path.GetString() + m_before_dir.GetLength()));
|
||||
R_TRY(out->Normalize(fs::PathFlags{}));
|
||||
} else {
|
||||
R_TRY(out->Initialize(path));
|
||||
}
|
||||
|
||||
@@ -69,7 +69,6 @@ namespace ams::ncm {
|
||||
/* Set as dirty/not mapped. */
|
||||
m_is_dirty = false;
|
||||
m_is_mapped = false;
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result GetMappedMemoryImpl(MappedMemory *out, size_t offset, size_t size) {
|
||||
|
||||
@@ -53,10 +53,10 @@ namespace ams::pm::shell {
|
||||
Result BoostApplicationThreadResourceLimit() {
|
||||
return ::pmshellBoostApplicationThreadResourceLimit();
|
||||
}
|
||||
#endif
|
||||
|
||||
Result BoostSystemThreadResourceLimit() {
|
||||
return ::pmshellBoostSystemThreadResourceLimit();
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ namespace ams::crypto::impl {
|
||||
AMS_UNUSED(src_size, dst_size);
|
||||
|
||||
/* Get the key. */
|
||||
const u8 *key8 = reinterpret_cast<const u8 *>(m_round_keys) + (RoundCount * BlockSize);
|
||||
const u8 *key8 = reinterpret_cast<const u8 *>(m_round_keys) + (RoundCount + BlockSize);
|
||||
|
||||
/* Read the block. */
|
||||
uint8x16_t block = vld1q_u8(static_cast<const u8 *>(src));
|
||||
@@ -232,7 +232,7 @@ namespace ams::crypto::impl {
|
||||
}
|
||||
|
||||
/* Specializations when building specifically for cortex-a57 (or for apple M* processors). */
|
||||
#if defined(ATMOSPHERE_CPU_ARM_CORTEX_A57) || defined(ATMOSPHERE_OS_MACOS)
|
||||
#if defined(ATMOSPHERE_CPU_CORTEX_A57) || defined(ATMOSPHERE_OS_MACOS)
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
@@ -30,12 +30,11 @@ namespace ams::mitm::bpc {
|
||||
public:
|
||||
static bool ShouldMitm(const sm::MitmProcessInfo &client_info) {
|
||||
/* We will mitm:
|
||||
* - am (omm on 14.0.0+), to intercept the Reboot/Power buttons in the overlay menu.
|
||||
* - am, to intercept the Reboot/Power buttons in the overlay menu.
|
||||
* - fatal, to simplify payload reboot logic significantly
|
||||
* - hbl, to allow homebrew to take advantage of the feature.
|
||||
*/
|
||||
return client_info.program_id == ncm::SystemProgramId::Am ||
|
||||
client_info.program_id == ncm::SystemProgramId::Omm ||
|
||||
client_info.program_id == ncm::SystemProgramId::Fatal ||
|
||||
client_info.override_status.IsHbl();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace ams::mitm::sysupdater {
|
||||
namespace {
|
||||
|
||||
constexpr inline int AsyncThreadCount = 1;
|
||||
constexpr inline size_t AsyncThreadStackSize = 32_KB;
|
||||
constexpr inline size_t AsyncThreadStackSize = 16_KB;
|
||||
|
||||
os::ThreadType g_async_threads[AsyncThreadCount];
|
||||
alignas(os::ThreadStackAlignment) u8 g_async_thread_stack_heap[AsyncThreadCount * AsyncThreadStackSize];
|
||||
|
||||
@@ -39,11 +39,6 @@ constexpr inline const EmbeddedPatchEntry Usb30ForceEnablePatches_13_0_0[] = {
|
||||
{ 0x84B4, "\x20\x00\x80\x52\xC0\x03\x5F\xD6", 8 },
|
||||
};
|
||||
|
||||
constexpr inline const EmbeddedPatchEntry Usb30ForceEnablePatches_14_0_0[] = {
|
||||
{ 0x7414, "\x20\x00\x80\x52\xC0\x03\x5F\xD6", 8 },
|
||||
{ 0x74A4, "\x20\x00\x80\x52\xC0\x03\x5F\xD6", 8 },
|
||||
};
|
||||
|
||||
constexpr inline const EmbeddedPatch Usb30ForceEnablePatches[] = {
|
||||
{ ParseModuleId("C0D3F4E87E8B0FE9BBE9F1968A20767F3DC08E03"), util::size(Usb30ForceEnablePatches_9_0_0), Usb30ForceEnablePatches_9_0_0 },
|
||||
{ ParseModuleId("B9C700CA8335F8BAA0D2041D8D09F772890BA988"), util::size(Usb30ForceEnablePatches_10_0_0), Usb30ForceEnablePatches_10_0_0 },
|
||||
@@ -51,5 +46,4 @@ constexpr inline const EmbeddedPatch Usb30ForceEnablePatches[] = {
|
||||
{ ParseModuleId("F3F88D90EF6B3B6358EDEBAF87D56FA88D3A081C"), util::size(Usb30ForceEnablePatches_12_0_0), Usb30ForceEnablePatches_12_0_0 }, /* 12.0.0 - 12.0.3 */
|
||||
{ ParseModuleId("A109046278AA99353C20EC38B57C495B74A06D91"), util::size(Usb30ForceEnablePatches_12_0_0), Usb30ForceEnablePatches_12_0_0 }, /* 12.1.0 */
|
||||
{ ParseModuleId("69384BF4A543C62C4342C94E5E2CED3C5A675251"), util::size(Usb30ForceEnablePatches_13_0_0), Usb30ForceEnablePatches_13_0_0 }, /* 13.0.0 - 13.1.0 */
|
||||
{ ParseModuleId("1C97AFF30D48AFFEB74B28A530D30ABA0ABB9FFF"), util::size(Usb30ForceEnablePatches_14_0_0), Usb30ForceEnablePatches_14_0_0 }, /* 14.0.0 */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user