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.39 by gbeauche, 2004-05-20T11:05:30Z vs.
Revision 1.40 by gbeauche, 2004-05-20T11:47:27Z

# Line 1100 | Line 1100 | void sheepshaver_cpu::handle_interrupt(v
1100          if (InterruptFlags == 0)
1101                  return;
1102  
1103 +        // Current interrupt nest level
1104 +        static int interrupt_depth = 0;
1105 +        ++interrupt_depth;
1106 +
1107          // Disable MacOS stack sniffer
1108          WriteMacInt32(0x110, 0);
1109  
# Line 1116 | Line 1120 | void sheepshaver_cpu::handle_interrupt(v
1120          case MODE_NATIVE:
1121                  // 68k emulator inactive, in nanokernel?
1122                  assert(current_cpu == main_cpu);
1123 <                if (gpr(1) != KernelDataAddr) {
1123 >                if (gpr(1) != KernelDataAddr && interrupt_depth == 1) {
1124                          interrupt_context ctx(this, "PowerPC mode");
1125  
1126                          // Prepare for 68k interrupt level 1
# Line 1171 | Line 1175 | void sheepshaver_cpu::handle_interrupt(v
1175                  break;
1176   #endif
1177          }
1178 +
1179 +        // We are done with this interrupt
1180 +        --interrupt_depth;
1181   }
1182  
1183   static void get_resource(void);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines