ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/kpx_cpu/sheepshaver_glue.cpp
(Generate patch)

Comparing SheepShaver/src/kpx_cpu/sheepshaver_glue.cpp (file contents):
Revision 1.42 by gbeauche, 2004-05-23T05:28:12Z vs.
Revision 1.43 by gbeauche, 2004-05-31T10:08:31Z

# Line 902 | Line 902 | static sigsegv_return_t sigsegv_handler(
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
# Line 922 | Line 922 | static sigsegv_return_t sigsegv_handler(
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())

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines