static void onBeforeRun(void) { dumpCpu(); dumpSizeOf(); }
int startSim(INT32 start) { //printf("Break Point: 0x"); //scanf("%x", &bp); //printf("Ins count: "); //scanf("%d", &bp); initInstruction(); writeReg(15, start); while(1) { //usleep(1); //if( (bp !=0 ) && ( inscount >= bp ) ) //{ //} /* if( (bp!=0) || (PC == 0x33f8ce04) ) { fflush(stdin); printf("r0 = 0x%08x, r1 = 0x%08x, r2 = 0x%08x, r3 = 0x%08x\n", Reg(0), Reg(1), Reg(2), Reg(3)); printf("r4 = 0x%08x, r5 = 0x%08x, r6 = 0x%08x, r7 = 0x%08x\n", Reg(4), Reg(5), Reg(6), Reg(7)); printf("r8 = 0x%08x, r9 = 0x%08x, r10 = 0x%08x, r11 = 0x%08x\n", Reg(8), Reg(9), Reg(10), Reg(11)); printf("r12 = 0x%08x, r13 = 0x%08x, r14 = 0x%08x, r15 = 0x%08x\n", Reg(12), Reg(13), Reg(14), Reg(15)); printf("At 0x%08x: %08x\n", (cpu.pipeline32[0].address), cpu.pipeline32[0].ins); printf("\n"); getchar(); bp = 1; } */ /* printf("At 0x%08x: %08x\n", (cpu.pipeline32[0].address), cpu.pipeline32[0].ins); printf("r0 = 0x%08x, r1 = 0x%08x, r2 = 0x%08x, r3 = 0x%08x\n", Reg(0), Reg(1), Reg(2), Reg(3)); printf("r4 = 0x%08x, r5 = 0x%08x, r6 = 0x%08x, r7 = 0x%08x\n", Reg(4), Reg(5), Reg(6), Reg(7)); printf("r8 = 0x%08x, r9 = 0x%08x, r10 = 0x%08x, r11 = 0x%08x\n", Reg(8), Reg(9), Reg(10), Reg(11)); printf("r12 = 0x%08x, r13 = 0x%08x, r14 = 0x%08x, r15 = 0x%08x\n", Reg(12), Reg(13), Reg(14), Reg(15)); printf("CPSR = 0x%08x\n", CPSR_CUR); printf("\n"); fflush(stdin); getchar(); */ if(cpu.pipelineRefreshed) { refreshPipeline(); } else { nextPipeline(); } /* printf("r0 = 0x%08x, r1 = 0x%08x, r2 = 0x%08x, r3 = 0x%08x\n", Reg(0), Reg(1), Reg(2), Reg(3)); printf("r4 = 0x%08x, r5 = 0x%08x, r6 = 0x%08x, r7 = 0x%08x\n", Reg(4), Reg(5), Reg(6), Reg(7)); printf("r8 = 0x%08x, r9 = 0x%08x, r10 = 0x%08x, r11 = 0x%08x\n", Reg(8), Reg(9), Reg(10), Reg(11)); printf("r12 = 0x%08x, r13 = 0x%08x, r14 = 0x%08x, r15 = 0x%08x\n", Reg(12), Reg(13), Reg(14), Reg(15)); printf("At 0x%08x: %08x\n", (cpu.pipeline32[0].address), cpu.pipeline32[0].ins); printf("\n"); getchar(); */ execIns(start); dumpCpu(); } }