comparison m68k_internal.h @ 574:1594525e2157

More 68K core refactoring to both reduce the amount of code and better split the host-cpu specific parts from the generic parts
author Michael Pavone <pavone@retrodev.com>
date Mon, 03 Mar 2014 22:17:20 -0800
parents 76bba9ffe351
children a6f2db4df70d
comparison
equal deleted inserted replaced
573:29d99db6f55d 574:1594525e2157
9 #include "68kinst.h" 9 #include "68kinst.h"
10 10
11 //functions implemented in host CPU specfic file 11 //functions implemented in host CPU specfic file
12 void translate_out_of_bounds(code_info *code); 12 void translate_out_of_bounds(code_info *code);
13 void check_code_prologue(code_info *code); 13 void check_code_prologue(code_info *code);
14 void areg_to_native(m68k_options *opts, uint8_t reg, uint8_t native_reg);
15 void dreg_to_native(m68k_options *opts, uint8_t reg, uint8_t native_reg);
16 void areg_to_native_sx(m68k_options *opts, uint8_t reg, uint8_t native_reg);
17 void dreg_to_native_sx(m68k_options *opts, uint8_t reg, uint8_t native_reg);
18 void native_to_areg(m68k_options *opts, uint8_t native_reg, uint8_t reg);
19 void native_to_dreg(m68k_options *opts, uint8_t native_reg, uint8_t reg);
20 void ldi_areg(m68k_options *opts, int32_t value, uint8_t reg);
21 void ldi_native(m68k_options *opts, int32_t value, uint8_t reg);
22 void addi_areg(m68k_options *opts, int32_t val, uint8_t reg);
23 void subi_areg(m68k_options *opts, int32_t val, uint8_t reg);
24 void add_areg_native(m68k_options *opts, uint8_t reg, uint8_t native_reg);
25 void add_dreg_native(m68k_options *opts, uint8_t reg, uint8_t native_reg);
26 void calc_areg_displace(m68k_options *opts, m68k_op_info *op, uint8_t native_reg);
27 void calc_index_disp8(m68k_options *opts, m68k_op_info *op, uint8_t native_reg);
28 void calc_areg_index_disp8(m68k_options *opts, m68k_op_info *op, uint8_t native_reg);
14 29
15 //functions implemented in m68k_core.c 30 //functions implemented in m68k_core.c
16 int8_t native_reg(m68k_op_info * op, m68k_options * opts); 31 int8_t native_reg(m68k_op_info * op, m68k_options * opts);
32 size_t dreg_offset(uint8_t reg);
33 size_t areg_offset(uint8_t reg);
17 size_t reg_offset(m68k_op_info *op); 34 size_t reg_offset(m68k_op_info *op);
18 void print_regs_exit(m68k_context * context); 35 void print_regs_exit(m68k_context * context);
19 void m68k_read_size(m68k_options *opts, uint8_t size); 36 void m68k_read_size(m68k_options *opts, uint8_t size);
20 void m68k_write_size(m68k_options *opts, uint8_t size); 37 void m68k_write_size(m68k_options *opts, uint8_t size);
38 void push_const(m68k_options *opts, int32_t value);
39 void jump_m68k_abs(m68k_options * opts, uint32_t address);
40 void swap_ssp_usp(m68k_options * opts);
21 code_ptr get_native_address(native_map_slot * native_code_map, uint32_t address); 41 code_ptr get_native_address(native_map_slot * native_code_map, uint32_t address);
22 void map_native_address(m68k_context * context, uint32_t address, code_ptr native_addr, uint8_t size, uint8_t native_size); 42 void map_native_address(m68k_context * context, uint32_t address, code_ptr native_addr, uint8_t size, uint8_t native_size);
23 uint8_t get_native_inst_size(m68k_options * opts, uint32_t address); 43 uint8_t get_native_inst_size(m68k_options * opts, uint32_t address);
24 uint8_t m68k_is_terminal(m68kinst * inst); 44 uint8_t m68k_is_terminal(m68kinst * inst);
25 void m68k_handle_deferred(m68k_context * context); 45 void m68k_handle_deferred(m68k_context * context);
26 code_ptr get_native_address_trans(m68k_context * context, uint32_t address); 46 code_ptr get_native_address_trans(m68k_context * context, uint32_t address);
27 47
48 //individual instructions
49 void translate_m68k_lea(m68k_options * opts, m68kinst * inst);
50 void translate_m68k_pea(m68k_options * opts, m68kinst * inst);
51 void translate_m68k_bsr(m68k_options * opts, m68kinst * inst);
52 void translate_m68k_jmp_jsr(m68k_options * opts, m68kinst * inst);
53 void translate_m68k_unlk(m68k_options * opts, m68kinst * inst);
54 void translate_m68k_link(m68k_options * opts, m68kinst * inst);
55 void translate_m68k_rts(m68k_options * opts, m68kinst * inst);
56 void translate_m68k_rtr(m68k_options *opts, m68kinst * inst);
57 void translate_m68k_trap(m68k_options *opts, m68kinst *inst);
58
59 #define BUS 4
60 #define PREDEC_PENALTY 2
61 extern char disasm_buf[1024];
62
63 m68k_context * sync_components(m68k_context * context, uint32_t address);
64
65 void m68k_invalid();
66 void bcd_add();
67 void bcd_sub();
68
28 #endif //M68K_INTERNAL_H_ 69 #endif //M68K_INTERNAL_H_