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