summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2015-01-08 21:00:21 -0800
committerMichael Pavone <pavone@retrodev.com>2015-01-08 21:00:21 -0800
commit7565848dd7a5d4dd1f762aeebd31d5835fe14835 (patch)
tree31a9581735deea1765c04b6309271e85856ccdd0
parent882b6ddf738a529c15f45f9d058dc753bc354b50 (diff)
Moved m68k_save_result to m68k_core.c
-rw-r--r--m68k_core.c22
-rw-r--r--m68k_core_x86.c22
-rw-r--r--m68k_internal.h1
3 files changed, 23 insertions, 22 deletions
diff --git a/m68k_core.c b/m68k_core.c
index 6b0484a..63133a1 100644
--- a/m68k_core.c
+++ b/m68k_core.c
@@ -86,6 +86,28 @@ void m68k_write_size(m68k_options *opts, uint8_t size)
}
}
+void m68k_save_result(m68kinst * inst, m68k_options * opts)
+{
+ code_info *code = &opts->gen.code;
+ if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) {
+ if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) {
+ areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2);
+ }
+ switch (inst->extra.size)
+ {
+ case OPSIZE_BYTE:
+ call(code, opts->write_8);
+ break;
+ case OPSIZE_WORD:
+ call(code, opts->write_16);
+ break;
+ case OPSIZE_LONG:
+ call(code, opts->write_32_lowfirst);
+ break;
+ }
+ }
+}
+
void translate_m68k_lea_pea(m68k_options * opts, m68kinst * inst)
{
code_info *code = &opts->gen.code;
diff --git a/m68k_core_x86.c b/m68k_core_x86.c
index d59b9bd..938b071 100644
--- a/m68k_core_x86.c
+++ b/m68k_core_x86.c
@@ -521,28 +521,6 @@ void translate_m68k_op(m68kinst * inst, host_ea * ea, m68k_options * opts, uint8
}
}
-void m68k_save_result(m68kinst * inst, m68k_options * opts)
-{
- code_info *code = &opts->gen.code;
- if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) {
- if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) {
- areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2);
- }
- switch (inst->extra.size)
- {
- case OPSIZE_BYTE:
- call(code, opts->write_8);
- break;
- case OPSIZE_WORD:
- call(code, opts->write_16);
- break;
- case OPSIZE_LONG:
- call(code, opts->write_32_lowfirst);
- break;
- }
- }
-}
-
void check_user_mode_swap_ssp_usp(m68k_options *opts)
{
code_info * code = &opts->gen.code;
diff --git a/m68k_internal.h b/m68k_internal.h
index fe77e78..755fd99 100644
--- a/m68k_internal.h
+++ b/m68k_internal.h
@@ -42,6 +42,7 @@ void translate_m68k_op(m68kinst * inst, host_ea * ea, m68k_options * opts, uint8
void print_regs_exit(m68k_context * context);
void m68k_read_size(m68k_options *opts, uint8_t size);
void m68k_write_size(m68k_options *opts, uint8_t size);
+void m68k_save_result(m68kinst * inst, m68k_options * opts);
void push_const(m68k_options *opts, int32_t value);
void jump_m68k_abs(m68k_options * opts, uint32_t address);
void swap_ssp_usp(m68k_options * opts);