From 068e903e73c13540e9bf30e312c4c00cf651cfc3 Mon Sep 17 00:00:00 2001 From: lizzie Date: Sat, 6 Dec 2025 23:02:09 +0000 Subject: [PATCH] fixes 4 stuff --- src/common/virtual_buffer.cpp | 10 +++++----- .../hle/kernel/board/nintendo/nx/k_system_control.cpp | 4 ---- .../src/dynarmic/backend/exception_handler_posix.cpp | 2 +- src/yuzu_cmd/CMakeLists.txt | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/common/virtual_buffer.cpp b/src/common/virtual_buffer.cpp index 34f9c57463..3e5f327245 100644 --- a/src/common/virtual_buffer.cpp +++ b/src/common/virtual_buffer.cpp @@ -37,7 +37,7 @@ void* AllocateMemoryPages(std::size_t size) noexcept { void* addr = VirtualAlloc(nullptr, size, MEM_COMMIT, PAGE_READWRITE); ASSERT(addr != nullptr); #elif defined(__OPENORBIS__) - void* addr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_VOID | MAP_PRIVATE, -1, 0); + void* addr = mmap(nullptr, size, PROT_NONE, MAP_VOID | MAP_PRIVATE, -1, 0); ASSERT(addr != MAP_FAILED); #else void* addr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); @@ -60,15 +60,15 @@ void FreeMemoryPages(void* addr, [[maybe_unused]] std::size_t size) noexcept { #ifdef __OPENORBIS__ static struct sigaction old_sa_segv; static void SwapHandler(int sig, siginfo_t* si, void* raw_context) { - void* a_addr = reinterpret_cast(uintptr_t(si->si_addr) & ~0xfff); - mmap(a_addr, 4096, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); - //mprotect(a_addr, 4096, PROT_READ | PROT_WRITE); + void* aligned_addr = reinterpret_cast(uintptr_t(si->si_addr) & ~0xfff); + void* res = mmap(aligned_addr, 4096, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_ANON | MAP_PRIVATE, -1, 0); + ASSERT(res != MAP_FAILED); } bool InitSwap() noexcept { struct sigaction sa; sa.sa_handler = NULL; - sa.sa_sigaction = &SwapHandler; + sa.__sa_handler.__sa_sigaction = &SwapHandler; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_SIGINFO | SA_RESTART; return sigaction(SIGSEGV, &sa, &old_sa_segv) == 0; diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp index 2e6a6aa364..1446653916 100644 --- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp +++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp @@ -85,11 +85,7 @@ size_t KSystemControl::Init::GetIntendedMemorySize() { switch (GetMemorySizeForInit()) { case Smc::MemorySize_4GB: default: // All invalid modes should go to 4GB. -#ifdef __OPENORBIS__ - return 2_GiB; -#else return 4_GiB; -#endif case Smc::MemorySize_6GB: return 6_GiB; case Smc::MemorySize_8GB: diff --git a/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp b/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp index 8470d77b2d..fc2d8d6284 100644 --- a/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp +++ b/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp @@ -60,7 +60,7 @@ public: signal_stack_memory = mmap(nullptr, signal_stack_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); #ifdef __OPENORBIS__ - fmt::print(stderr, "no fastmem on ps4\n"); + fmt::print(stderr, "no fastmem on PS4\n"); supports_fast_mem = false; #else stack_t signal_stack{}; diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt index 431c85679b..2a4c8edca3 100644 --- a/src/yuzu_cmd/CMakeLists.txt +++ b/src/yuzu_cmd/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(yuzu-cmd PRIVATE glad) if (MSVC) target_link_libraries(yuzu-cmd PRIVATE getopt) elseif(PLATFORM_PS4) - target_link_libraries(yuzu-cmd PRIVATE SceVideoOut SceAudioOut ScePad) + target_link_libraries(yuzu-cmd PRIVATE SceVideoOut SceAudioOut ScePad SceSystemService) endif() target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)