902 |
|
const uint32 pc = cpu->pc(); |
903 |
|
|
904 |
|
// Fault in Mac ROM or RAM? |
905 |
< |
bool mac_fault = (pc >= ROM_BASE) && (pc < (ROM_BASE + ROM_AREA_SIZE)) || (pc >= RAMBase) && (pc < (RAMBase + RAMSize)); |
905 |
> |
bool mac_fault = (pc >= ROM_BASE) && (pc < (ROM_BASE + ROM_AREA_SIZE)) || (pc >= RAMBase) && (pc < (RAMBase + RAMSize)) || (pc >= DR_CACHE_BASE && pc < (DR_CACHE_BASE + DR_CACHE_SIZE)); |
906 |
|
if (mac_fault) { |
907 |
|
|
908 |
|
// "VM settings" during MacOS 8 installation |
922 |
|
return SIGSEGV_RETURN_SKIP_INSTRUCTION; |
923 |
|
else if (pc == ROM_BASE + 0x4a10a0 && (cpu->gpr(20) == 0xf3012002 || cpu->gpr(20) == 0xf3012000)) |
924 |
|
return SIGSEGV_RETURN_SKIP_INSTRUCTION; |
925 |
+ |
|
926 |
+ |
// MacOS 8.6 serial drivers on startup (with DR Cache and OldWorld ROM) |
927 |
+ |
else if ((pc - DR_CACHE_BASE) < DR_CACHE_SIZE && (cpu->gpr(16) == 0xf3012002 || cpu->gpr(16) == 0xf3012000)) |
928 |
+ |
return SIGSEGV_RETURN_SKIP_INSTRUCTION; |
929 |
+ |
else if ((pc - DR_CACHE_BASE) < DR_CACHE_SIZE && (cpu->gpr(20) == 0xf3012002 || cpu->gpr(20) == 0xf3012000)) |
930 |
+ |
return SIGSEGV_RETURN_SKIP_INSTRUCTION; |
931 |
|
|
932 |
|
// Ignore writes to the zero page |
933 |
|
else if ((uint32)(addr - SheepMem::ZeroPage()) < (uint32)SheepMem::PageSize()) |