mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 21:00:17 +02:00
FEXCore: Have the Syscall IR op jump to the dispatcher
Have it treated as a block terminator IR and instead of doing syscall+exitfunction, just do syscall and jump in to the dispatcher. This is necessary for code invalidation and reuse for code that is stuck in long running syscalls. We'll need to do something similar for thunks later, although the recursive nature of thunk+callback can make that a little squirrely.
This commit is contained in:
7 files changed
+45
-51
No files matched your search
@@ -59,12 +59,6 @@ void OpDispatchBuilder::SyscallOp(OpcodeArgs, bool IsSyscallInst) {
|
||||
|
||||
FlushRegisterCache();
|
||||
_Syscall();
|
||||
|
||||
if (Op->TableInfo->Flags & X86Tables::InstFlags::FLAGS_BLOCK_END) {
|
||||
// RIP could have been updated after coming back from the Syscall.
|
||||
NewRIP = _LoadContextGPR(GPRSize, offsetof(FEXCore::Core::CPUState, rip));
|
||||
ExitFunction(NewRIP);
|
||||
}
|
||||
}
|
||||
|
||||
void OpDispatchBuilder::ThunkOp(OpcodeArgs) {
|
||||
|
||||
Reference in new issue
Block a user