diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 455ac24b1..931c97aef 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1063,15 +1063,25 @@ ScePthread PThreadPool::Create(const char* name) { } } - auto* ret = new PthreadInternal{}; - ret->is_free = false; - ret->is_detached = false; - ret->is_almost_done = false; - ret->attr = nullptr; + + #ifdef _WIN64 + auto* ret = new PthreadInternal{}; + #else + // TODO: Linux specific hack + static u8* hint_address = reinterpret_cast(0x7FFFFC000ULL); + auto* ret = reinterpret_cast( + mmap(hint_address, sizeof(PthreadInternal), PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0)); + hint_address += Common::AlignUp(sizeof(PthreadInternal), 4_KB); + #endif + ret->is_free = false; + ret->is_detached = false; + ret->is_almost_done = false; + ret->attr = nullptr; - m_threads.push_back(ret); + m_threads.push_back(ret); - return ret; + return ret; } void PS4_SYSV_ABI scePthreadYield() { diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index 40a1825a2..6624cee7f 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -295,7 +295,7 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc .bindingCount = static_cast(bindings.size()), .pBindings = bindings.data(), }; - static auto [desc_layout_result, desc_layout] = + auto [desc_layout_result, desc_layout] = instance.GetDevice().createDescriptorSetLayoutUnique(desc_layout_ci); ASSERT_MSG(desc_layout_result == vk::Result::eSuccess, "Failed to create descriptor set layout: {}", vk::to_string(desc_layout_result));