--- trunk/src/cpus/cpu_arm_instr.c 2007/10/08 16:19:56 24 +++ trunk/src/cpus/cpu_arm_instr.c 2007/10/08 16:20:40 30 @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: cpu_arm_instr.c,v 1.65 2006/06/23 12:49:46 debug Exp $ + * $Id: cpu_arm_instr.c,v 1.68 2006/08/11 17:43:30 debug Exp $ * * ARM instructions. * @@ -215,7 +215,8 @@ " dyntrans code. Please contact the author with detailed" " repro steps on how to trigger this bug. pc = 0x%08"PRIx32"\n", (uint32_t)cpu->pc); - exit(1); + + cpu->cd.arm.next_ic = ¬hing_call; } @@ -856,7 +857,6 @@ X(reboot) { cpu->running = 0; - cpu->running_translated = 0; cpu->n_translated_instrs --; cpu->cd.arm.next_ic = ¬hing_call; } @@ -880,7 +880,6 @@ useremul_syscall(cpu, ic->arg[0]); if (!cpu->running) { - cpu->running_translated = 0; cpu->n_translated_instrs --; cpu->cd.arm.next_ic = ¬hing_call; } else if (cpu->pc != old_pc) { @@ -2049,7 +2048,6 @@ ic[ 0].f == instr(b_samepage__gt) && ic[ 0].arg[0] == (size_t)&ic[-17]) { ic[-17].f = instr(netbsd_memset); - combined; } } #endif @@ -2079,7 +2077,6 @@ ic[ 0].f == instr(b_samepage__ge) && ic[ 0].arg[0] == (size_t)&ic[-5]) { ic[-5].f = instr(netbsd_memcpy); - combined; } } #endif @@ -2104,7 +2101,6 @@ ic[-1].f == instr(b_samepage__ne) && ic[-1].arg[0] == (size_t)&ic[-3]) { ic[-3].f = instr(netbsd_cacheclean); - combined; } } } @@ -2129,7 +2125,6 @@ ic[-1].f == instr(subs) && ic[-1].arg[0]==ic[-1].arg[2] && ic[-1].arg[1] == 0x20) { ic[-4].f = instr(netbsd_cacheclean2); - combined; } } } @@ -2156,7 +2151,6 @@ ic[-1].arg[1] == (size_t)arm_r_r3_t0_c0 && ic[-1].arg[2] == (size_t)(&cpu->cd.arm.r[3])) { ic[-2].f = instr(netbsd_scanc); - combined; } } @@ -2180,7 +2174,6 @@ ic[-1].arg[0] == (size_t)(&cpu->cd.arm.r[3]) && ic[-1].arg[1] == 0) { ic[-2].f = instr(strlen); - combined; } } @@ -2206,7 +2199,6 @@ ic[-1].arg[0] == b && ic[-1].arg[1] == a && ic[-1].arg[2] == a && ic[ 0].arg[0] == a && ic[ 0].arg[1] == b && ic[ 0].arg[2] == b) { ic[-2].f = instr(xchg); - combined; } } @@ -2237,7 +2229,6 @@ ic[-2].arg[2] == (size_t)(&cpu->cd.arm.r[7]) && ic[-1].arg[2] == (size_t)(&cpu->cd.arm.r[8])) { ic[-5].f = instr(netbsd_copyin); - combined; } #endif } @@ -2269,7 +2260,6 @@ ic[-2].arg[2] == (size_t)(&cpu->cd.arm.r[11]) && ic[-1].arg[2] == (size_t)(&cpu->cd.arm.r[6])) { ic[-5].f = instr(netbsd_copyout); - combined; } #endif } @@ -2293,7 +2283,6 @@ ic[-1].f = instr(cmps_neg_beq); else ic[-1].f = instr(cmps_pos_beq); - combined; } return; } @@ -2303,16 +2292,13 @@ ic[-1].f = instr(cmps0_beq_samepage); else ic[-1].f = instr(cmps_beq_samepage); - combined; } if (ic[-1].f == instr(tsts) && !(ic[-1].arg[1] & 0x80000000)) { ic[-1].f = instr(tsts_lo_beq_samepage); - combined; } if (ic[-1].f == instr(teqs)) { ic[-1].f = instr(teqs_beq_samepage); - combined; } return; } @@ -2322,52 +2308,43 @@ ic[-1].f = instr(cmps0_bne_samepage); else ic[-1].f = instr(cmps_bne_samepage); - combined; } if (ic[-1].f == instr(tsts) && !(ic[-1].arg[1] & 0x80000000)) { ic[-1].f = instr(tsts_lo_bne_samepage); - combined; } if (ic[-1].f == instr(teqs)) { ic[-1].f = instr(teqs_bne_samepage); - combined; } return; } if (ic[0].f == instr(b_samepage__cc)) { if (ic[-1].f == instr(cmps)) { ic[-1].f = instr(cmps_bcc_samepage); - combined; } if (ic[-1].f == instr(cmps_regshort)) { ic[-1].f = instr(cmps_reg_bcc_samepage); - combined; } return; } if (ic[0].f == instr(b_samepage__hi)) { if (ic[-1].f == instr(cmps)) { ic[-1].f = instr(cmps_bhi_samepage); - combined; } if (ic[-1].f == instr(cmps_regshort)) { ic[-1].f = instr(cmps_reg_bhi_samepage); - combined; } return; } if (ic[0].f == instr(b_samepage__gt)) { if (ic[-1].f == instr(cmps)) { ic[-1].f = instr(cmps_bgt_samepage); - combined; } return; } if (ic[0].f == instr(b_samepage__le)) { if (ic[-1].f == instr(cmps)) { ic[-1].f = instr(cmps_ble_samepage); - combined; } return; }