mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-01-29 00:33:01 +00:00
Small fix
This commit is contained in:
parent
10e9d383d4
commit
0df3e955c8
@ -283,11 +283,12 @@ void CPUThread::ExecOnce()
|
||||
void _se_translator(unsigned int u, EXCEPTION_POINTERS* pExp)
|
||||
{
|
||||
const u64 addr = (u64)pExp->ExceptionRecord->ExceptionInformation[1] - (u64)Memory.GetBaseAddr();
|
||||
if (u == EXCEPTION_ACCESS_VIOLATION && addr < 0x100000000)
|
||||
CPUThread* t = GetCurrentCPUThread();
|
||||
if (u == EXCEPTION_ACCESS_VIOLATION && addr < 0x100000000 && t)
|
||||
{
|
||||
// TODO: allow recovering from a page fault
|
||||
throw fmt::Format("Access violation: addr = 0x%x (last_syscall=0x%llx (%s))",
|
||||
(u32)addr, (u64)GetCurrentCPUThread()->m_last_syscall, SysCalls::GetHLEFuncName((u32)GetCurrentCPUThread()->m_last_syscall).c_str());
|
||||
(u32)addr, (u64)t->m_last_syscall, SysCalls::GetHLEFuncName((u32)t->m_last_syscall).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -317,7 +318,7 @@ void CPUThread::Task()
|
||||
std::vector<u64> trace;
|
||||
|
||||
#ifdef _WIN32
|
||||
_set_se_translator(_se_translator);
|
||||
auto old_se_translator = _set_se_translator(_se_translator);
|
||||
#else
|
||||
// TODO: linux version
|
||||
#endif
|
||||
@ -370,6 +371,12 @@ void CPUThread::Task()
|
||||
Emu.Pause();
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
_set_se_translator(old_se_translator);
|
||||
#else
|
||||
// TODO: linux version
|
||||
#endif
|
||||
|
||||
for (auto& v : trace) LOG_NOTICE(PPU, "PC = 0x%llx", v);
|
||||
|
||||
if (Ini.HLELogging.GetValue()) LOG_NOTICE(PPU, "%s leave", CPUThread::GetFName().c_str());
|
||||
|
@ -61,10 +61,16 @@ void CallbackManager::Init()
|
||||
m_cb_thread->SetEntry(cb_shit);
|
||||
m_cb_thread->SetPrio(1001); // ???
|
||||
m_cb_thread->SetStackSize(0x10000);
|
||||
m_cb_thread->Run();
|
||||
|
||||
thread cb_async_thread("CallbackManager::Async() thread", [this]()
|
||||
{
|
||||
while (Emu.IsReady())
|
||||
{
|
||||
m_cb_thread->WaitForAnySignal();
|
||||
}
|
||||
|
||||
m_cb_thread->Run();
|
||||
|
||||
SetCurrentNamedThread(m_cb_thread);
|
||||
|
||||
while (!Emu.IsStopped())
|
||||
|
Loading…
x
Reference in New Issue
Block a user