diff --git a/SheepShaver/src/CrossPlatform/sigsegv.cpp b/SheepShaver/src/CrossPlatform/sigsegv.cpp index 8c6546f3..04b066a4 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 0x44: + if (rip[1] == 0xf && rip[2] == 0xb6 && rip[3] == 0x20) { + ts->__r12 = safeLoad(ts->__rax); + ts->__rip += 4; + mach_set_thread_state(SIP); + return true; + } + break; case 0x48: if (rip[1] == 0xc7 && rip[2] == 0) { safeStore(ts->__rax, rip[3] | rip[4] << 8 | rip[5] << 16 | rip[6] << 24);