/src/capstonenext/arch/M680X/M680XModule.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* Capstone Disassembly Engine */ |
2 | | /* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */ |
3 | | |
4 | | #ifdef CAPSTONE_HAS_M680X |
5 | | |
6 | | #include "../../utils.h" |
7 | | #include "../../MCRegisterInfo.h" |
8 | | #include "M680XDisassembler.h" |
9 | | #include "M680XDisassemblerInternals.h" |
10 | | #include "M680XInstPrinter.h" |
11 | | #include "M680XModule.h" |
12 | | |
13 | | cs_err M680X_global_init(cs_struct *ud) |
14 | 2.89k | { |
15 | 2.89k | m680x_info *info; |
16 | 2.89k | cs_err errcode; |
17 | | |
18 | | /* Do some validation checks */ |
19 | 2.89k | errcode = M680X_disassembler_init(ud); |
20 | | |
21 | 2.89k | if (errcode != CS_ERR_OK) |
22 | 0 | return errcode; |
23 | | |
24 | 2.89k | errcode = M680X_instprinter_init(ud); |
25 | | |
26 | 2.89k | if (errcode != CS_ERR_OK) |
27 | 0 | return errcode; |
28 | | |
29 | | // verify if requested mode is valid |
30 | 2.89k | if (ud->mode & ~(CS_MODE_M680X_6800 | CS_MODE_M680X_6801 | |
31 | 2.89k | CS_MODE_M680X_6805 | CS_MODE_M680X_6808 | |
32 | 2.89k | CS_MODE_M680X_6809 | CS_MODE_M680X_6811 | |
33 | 2.89k | CS_MODE_M680X_6301 | CS_MODE_M680X_6309 | |
34 | 2.89k | CS_MODE_M680X_CPU12 | CS_MODE_M680X_HCS08)) { |
35 | | // At least one mode is not supported by M680X |
36 | 0 | return CS_ERR_MODE; |
37 | 0 | } |
38 | | |
39 | 2.89k | if (!(ud->mode & (CS_MODE_M680X_6800 | CS_MODE_M680X_6801 | |
40 | 2.89k | CS_MODE_M680X_6805 | CS_MODE_M680X_6808 | |
41 | 2.89k | CS_MODE_M680X_6809 | CS_MODE_M680X_6811 | |
42 | 2.89k | CS_MODE_M680X_6301 | CS_MODE_M680X_6309 | |
43 | 2.89k | CS_MODE_M680X_CPU12 | CS_MODE_M680X_HCS08))) { |
44 | | // At least the cpu type has to be selected. No default. |
45 | 0 | return CS_ERR_MODE; |
46 | 0 | } |
47 | | |
48 | 2.89k | info = cs_mem_malloc(sizeof(m680x_info)); |
49 | | |
50 | 2.89k | if (!info) |
51 | 0 | return CS_ERR_MEM; |
52 | | |
53 | 2.89k | ud->printer = M680X_printInst; |
54 | 2.89k | ud->printer_info = info; |
55 | 2.89k | ud->getinsn_info = NULL; |
56 | 2.89k | ud->disasm = M680X_getInstruction; |
57 | 2.89k | ud->reg_name = M680X_reg_name; |
58 | 2.89k | ud->insn_id = M680X_get_insn_id; |
59 | 2.89k | ud->insn_name = M680X_insn_name; |
60 | 2.89k | ud->group_name = M680X_group_name; |
61 | 2.89k | ud->skipdata_size = 1; |
62 | 2.89k | ud->post_printer = NULL; |
63 | 2.89k | #ifndef CAPSTONE_DIET |
64 | 2.89k | ud->reg_access = M680X_reg_access; |
65 | 2.89k | #endif |
66 | | |
67 | 2.89k | return CS_ERR_OK; |
68 | 2.89k | } |
69 | | |
70 | | cs_err M680X_option(cs_struct *handle, cs_opt_type type, size_t value) |
71 | 1.11k | { |
72 | | //TODO |
73 | 1.11k | return CS_ERR_OK; |
74 | 1.11k | } |
75 | | |
76 | | #endif |
77 | | |