Mercurial > repos > blastem
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 } |