Mercurial > repos > blastem
comparison m68k_core.c @ 687:a61d33ccea7d
Moved translate_m68k_rte and translate_m68k_reset to m68k_core.c
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Jan 2015 19:11:56 -0800 |
parents | e26640daf1ae |
children | 8c546bc1d773 |
comparison
equal
deleted
inserted
replaced
686:8cb61671777b | 687:a61d33ccea7d |
---|---|
499 void swap_ssp_usp(m68k_options * opts) | 499 void swap_ssp_usp(m68k_options * opts) |
500 { | 500 { |
501 areg_to_native(opts, 7, opts->gen.scratch2); | 501 areg_to_native(opts, 7, opts->gen.scratch2); |
502 areg_to_native(opts, 8, opts->aregs[7]); | 502 areg_to_native(opts, 8, opts->aregs[7]); |
503 native_to_areg(opts, opts->gen.scratch2, 8); | 503 native_to_areg(opts, opts->gen.scratch2, 8); |
504 } | |
505 | |
506 void translate_m68k_reset(m68k_options *opts, m68kinst *inst) | |
507 { | |
508 code_info *code = &opts->gen.code; | |
509 call(code, opts->gen.save_context); | |
510 call_args(code, (code_ptr)print_regs_exit, 1, opts->gen.context_reg); | |
511 } | |
512 | |
513 void translate_m68k_rte(m68k_options *opts, m68kinst *inst) | |
514 { | |
515 code_info *code = &opts->gen.code; | |
516 //TODO: Trap if not in system mode | |
517 //Read saved SR | |
518 areg_to_native(opts, 7, opts->gen.scratch1); | |
519 call(code, opts->read_16); | |
520 addi_areg(opts, 2, 7); | |
521 call(code, opts->set_sr); | |
522 //Read saved PC | |
523 areg_to_native(opts, 7, opts->gen.scratch1); | |
524 call(code, opts->read_32); | |
525 addi_areg(opts, 4, 7); | |
526 check_user_mode_swap_ssp_usp(opts); | |
527 //Get native address, sync components, recalculate integer points and jump to returned address | |
528 call(code, opts->native_addr_and_sync); | |
529 jmp_r(code, opts->gen.scratch1); | |
504 } | 530 } |
505 | 531 |
506 code_ptr get_native_address(native_map_slot * native_code_map, uint32_t address) | 532 code_ptr get_native_address(native_map_slot * native_code_map, uint32_t address) |
507 { | 533 { |
508 address &= 0xFFFFFF; | 534 address &= 0xFFFFFF; |