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