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 |
|
|
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 |
1175 |
|
break; |
1176 |
|
#endif |
1177 |
|
} |
1178 |
+ |
|
1179 |
+ |
// We are done with this interrupt |
1180 |
+ |
--interrupt_depth; |
1181 |
|
} |
1182 |
|
|
1183 |
|
static void get_resource(void); |