mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-27 21:35:26 -06:00
34 lines
996 B
C++
34 lines
996 B
C++
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include "core/libraries/kernel/kernel.h"
|
|
#include "core/libraries/kernel/threads.h"
|
|
#include "core/libraries/kernel/threads/pthread.h"
|
|
|
|
namespace Libraries::Kernel {
|
|
|
|
void PS4_SYSV_ABI ClearStack() {
|
|
void* const stackaddr_attr = Libraries::Kernel::g_curthread->attr.stackaddr_attr;
|
|
void* volatile sp;
|
|
asm("mov %%rsp, %0" : "=rm"(sp));
|
|
// leave a safety net of 64 bytes for memset
|
|
const size_t size = ((uintptr_t)sp - (uintptr_t)stackaddr_attr) - 64;
|
|
void* volatile buf = alloca(size);
|
|
memset(buf, 0, size);
|
|
sp = nullptr;
|
|
}
|
|
|
|
void RegisterThreads(Core::Loader::SymbolsResolver* sym) {
|
|
RegisterMutex(sym);
|
|
RegisterCond(sym);
|
|
RegisterRwlock(sym);
|
|
RegisterSemaphore(sym);
|
|
RegisterSpec(sym);
|
|
RegisterThreadAttr(sym);
|
|
RegisterThread(sym);
|
|
RegisterRtld(sym);
|
|
RegisterPthreadClean(sym);
|
|
}
|
|
|
|
} // namespace Libraries::Kernel
|