comparison m68k_to_x86.c @ 176:e2918b5208eb

Print a message when we try to run an invalid instruction, not when we try to translate it
author Mike Pavone <pavone@retrodev.com>
date Sun, 06 Jan 2013 21:42:57 -0800
parents 7504200cac86
children 09761d4391e1
comparison
equal deleted inserted replaced
175:7504200cac86 176:e2918b5208eb
40 void m68k_save_context(); 40 void m68k_save_context();
41 void m68k_modified_ret_addr(); 41 void m68k_modified_ret_addr();
42 void m68k_native_addr(); 42 void m68k_native_addr();
43 void m68k_native_addr_and_sync(); 43 void m68k_native_addr_and_sync();
44 void m68k_trap(); 44 void m68k_trap();
45 void m68k_invalid();
45 void set_sr(); 46 void set_sr();
46 void set_ccr(); 47 void set_ccr();
47 void get_sr(); 48 void get_sr();
48 void do_sync(); 49 void do_sync();
49 void m68k_start_context(uint8_t * addr, m68k_context * context); 50 void m68k_start_context(uint8_t * addr, m68k_context * context);
2530 return translate_m68k_ext(dst, inst, opts); 2531 return translate_m68k_ext(dst, inst, opts);
2531 } else if(inst->op == M68K_SCC) { 2532 } else if(inst->op == M68K_SCC) {
2532 return translate_m68k_scc(dst, inst, opts); 2533 return translate_m68k_scc(dst, inst, opts);
2533 } else if(inst->op == M68K_MOVEP) { 2534 } else if(inst->op == M68K_MOVEP) {
2534 return translate_m68k_movep(dst, inst, opts); 2535 return translate_m68k_movep(dst, inst, opts);
2536 } else if(inst->op == M68K_INVALID) {
2537 dst = mov_ir(dst, inst->address, SCRATCH1, SZ_D);
2538 return call(dst, (uint8_t *)m68k_invalid);
2535 } 2539 }
2536 x86_ea src_op, dst_op; 2540 x86_ea src_op, dst_op;
2537 if (inst->src.addr_mode != MODE_UNUSED) { 2541 if (inst->src.addr_mode != MODE_UNUSED) {
2538 dst = translate_m68k_src(inst, &src_op, dst, opts); 2542 dst = translate_m68k_src(inst, &src_op, dst, opts);
2539 } 2543 }
3466 } else { 3470 } else {
3467 dst = mov_rrdisp8(dst, SCRATCH1, dst_op.base, dst_op.disp, SZ_D); 3471 dst = mov_rrdisp8(dst, SCRATCH1, dst_op.base, dst_op.disp, SZ_D);
3468 } 3472 }
3469 dst = add_ir(dst, 4, opts->aregs[7], SZ_D); 3473 dst = add_ir(dst, 4, opts->aregs[7], SZ_D);
3470 break; 3474 break;
3471 /*case M68K_INVALID:
3472 break;*/
3473 default: 3475 default:
3474 m68k_disasm(inst, disasm_buf); 3476 m68k_disasm(inst, disasm_buf);
3475 printf("%X: %s\ninstruction %d not yet implemented\n", inst->address, disasm_buf, inst->op); 3477 printf("%X: %s\ninstruction %d not yet implemented\n", inst->address, disasm_buf, inst->op);
3476 exit(1); 3478 exit(1);
3477 } 3479 }