void powerpc_cpu::execute_illegal(uint32 opcode) { fprintf(stderr, "Illegal instruction at %08x, opcode = %08x\n", pc(), opcode); #if ENABLE_MON disass_ppc(stdout, pc(), opcode); // Start up mon in real-mode char *arg[4] = {"mon", "-m", "-r", NULL}; mon(3, arg); #endif abort(); }
void powerpc_cpu::execute_illegal(uint32 opcode) { fprintf(stderr, "Illegal instruction at %08x, opcode = %08x\n", pc(), opcode); #ifdef SHEEPSHAVER if (PrefsFindBool("ignoreillegal")) { increment_pc(4); return; } #endif #if ENABLE_MON disass_ppc(stdout, pc(), opcode); // Start up mon in real-mode char *arg[4] = {"mon", "-m", "-r", NULL}; mon(3, arg); #endif abort(); }
static void dump_log(void) { FILE *f = fopen("log", "w"); if (f == NULL) return; for (int i=0; i<LOG_SIZE; i++) { int j = (i + log_ptr) % LOG_SIZE; fprintf(f, "pc %08x lr %08x ctr %08x cr %08x xer %08x ", log[j].pc, log[j].lr, log[j].ctr, log[j].cr, log[j].xer); fprintf(f, "r0 %08x r1 %08x r2 %08x r3 %08x ", log[j].r[0], log[j].r[1], log[j].r[2], log[j].r[3]); fprintf(f, "r4 %08x r5 %08x r6 %08x r7 %08x ", log[j].r[4], log[j].r[5], log[j].r[6], log[j].r[7]); fprintf(f, "r8 %08x r9 %08x r10 %08x r11 %08x ", log[j].r[8], log[j].r[9], log[j].r[10], log[j].r[11]); fprintf(f, "r12 %08x r13 %08x r14 %08x r15 %08x ", log[j].r[12], log[j].r[13], log[j].r[14], log[j].r[15]); fprintf(f, "r16 %08x r17 %08x r18 %08x r19 %08x ", log[j].r[16], log[j].r[17], log[j].r[18], log[j].r[19]); fprintf(f, "r20 %08x r21 %08x r22 %08x r23 %08x ", log[j].r[20], log[j].r[21], log[j].r[22], log[j].r[23]); fprintf(f, "r24 %08x r25 %08x r26 %08x r27 %08x ", log[j].r[24], log[j].r[25], log[j].r[26], log[j].r[27]); fprintf(f, "r28 %08x r29 %08x r30 %08x r31 %08x\n", log[j].r[28], log[j].r[29], log[j].r[30], log[j].r[31]); #if ENABLE_MON disass_ppc(f, log[j].pc, log[j].opcode); #endif } fclose(f); }