diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-09 14:41:48 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-09 14:41:48 +0200 |
| commit | ad79f878ebc245aaa5495c9cbd580cb907d141fd (patch) | |
| tree | b77073b7dd43743677633338a52ee0a1cb57098e | |
| parent | 04a7437158a13c8c4c0dd178d824053c9fbb6c37 (diff) | |
| download | box64-ad79f878ebc245aaa5495c9cbd580cb907d141fd.tar.gz box64-ad79f878ebc245aaa5495c9cbd580cb907d141fd.zip | |
[DYNAREC] Some other small improvment to signal jmpbuf handling
| -rwxr-xr-x | src/dynarec/dynarec.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c index bfd83dee..05d5b5ad 100755 --- a/src/dynarec/dynarec.c +++ b/src/dynarec/dynarec.c @@ -102,8 +102,6 @@ void DynaCall(x64emu_t* emu, uintptr_t addr) emu->test.clean = 0; } #endif - if(skip!=2) - skip = 0; } } } @@ -123,7 +121,7 @@ void DynaCall(x64emu_t* emu, uintptr_t addr) R_RIP = addr; emu->df = d_none; while(!emu->quit) { - dynablock_t* block = (skip==2)?NULL:DBGetBlock(emu, R_RIP, 1); + dynablock_t* block = (skip)?NULL:DBGetBlock(emu, R_RIP, 1); if(!block || !block->block || !block->done) { skip = 0; // no block, of block doesn't have DynaRec content (yet, temp is not null) @@ -200,8 +198,6 @@ int DynaRun(x64emu_t* emu) emu->test.clean = 0; } #endif - if(skip!=2) - skip = 0; } } } @@ -212,7 +208,7 @@ int DynaRun(x64emu_t* emu) #ifdef DYNAREC else { while(!emu->quit) { - dynablock_t* block = (skip==2)?NULL:DBGetBlock(emu, R_RIP, 1); + dynablock_t* block = (skip)?NULL:DBGetBlock(emu, R_RIP, 1); if(!block || !block->block || !block->done) { skip = 0; // no block, of block doesn't have DynaRec content (yet, temp is not null) @@ -236,7 +232,7 @@ int DynaRun(x64emu_t* emu) ejb->emu = emu; ejb->jmpbuf_ok = 1; jmpbuf_reset = 1; - if(sigsetjmp((struct __jmp_buf_tag*)ejb->jmpbuf, 1)) + if((skip = sigsetjmp((struct __jmp_buf_tag*)ejb->jmpbuf, 1))) printf_log(LOG_DEBUG, "Setjmp inner DynaRun, fs=0x%x\n", ejb->emu->segs[_FS]); } } |