diff --git a/SheepShaver/src/CrossPlatform/sigsegv.cpp b/SheepShaver/src/CrossPlatform/sigsegv.cpp index 04b066a48..47a6adcdf 100644 --- a/SheepShaver/src/CrossPlatform/sigsegv.cpp +++ b/SheepShaver/src/CrossPlatform/sigsegv.cpp @@ -2646,6 +2646,14 @@ static bool handle_badaccess(SIGSEGV_FAULT_HANDLER_ARGLIST_1) x86_thread_state64_t *ts = &SIP->thr_state; uint8_t *rip = (uint8_t *)ts->__rip; switch (rip[0]) { + case 0xf: + if (rip[1] == 0xb7 && rip[2] == 0) { + ts->__rax = safeLoad(ts->__rax); + ts->__rip += 3; + mach_set_thread_state(SIP); + return true; + } + break; case 0x44: if (rip[1] == 0xf && rip[2] == 0xb6 && rip[3] == 0x20) { ts->__r12 = safeLoad(ts->__rax);