comparison m68k_core_x86.c @ 688:8c546bc1d773

Moved m68k_save_result to m68k_core.c
author Michael Pavone <pavone@retrodev.com>
date Thu, 08 Jan 2015 21:00:21 -0800
parents a61d33ccea7d
children 858e31f977ae
comparison
equal deleted inserted replaced
687:a61d33ccea7d 688:8c546bc1d773
516 } else { 516 } else {
517 movsx_rdispr(code, ea->base, ea->disp, opts->gen.scratch1, SZ_W, SZ_D); 517 movsx_rdispr(code, ea->base, ea->disp, opts->gen.scratch1, SZ_W, SZ_D);
518 ea->mode = MODE_REG_DIRECT; 518 ea->mode = MODE_REG_DIRECT;
519 } 519 }
520 ea->base = opts->gen.scratch1; 520 ea->base = opts->gen.scratch1;
521 }
522 }
523
524 void m68k_save_result(m68kinst * inst, m68k_options * opts)
525 {
526 code_info *code = &opts->gen.code;
527 if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) {
528 if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) {
529 areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2);
530 }
531 switch (inst->extra.size)
532 {
533 case OPSIZE_BYTE:
534 call(code, opts->write_8);
535 break;
536 case OPSIZE_WORD:
537 call(code, opts->write_16);
538 break;
539 case OPSIZE_LONG:
540 call(code, opts->write_32_lowfirst);
541 break;
542 }
543 } 521 }
544 } 522 }
545 523
546 void check_user_mode_swap_ssp_usp(m68k_options *opts) 524 void check_user_mode_swap_ssp_usp(m68k_options *opts)
547 { 525 {