xref: /aosp_15_r20/external/capstone/arch/M680X/m6811.inc (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf Ebrahimi
2*9a0e4156SSadaf Ebrahimi// Additional instructions only supported on M68HC11
3*9a0e4156SSadaf Ebrahimistatic const inst_pageX g_m6811_inst_overlay_table[] = {
4*9a0e4156SSadaf Ebrahimi	{ 0x00, M680X_INS_TEST, inh_hid, inh_hid },
5*9a0e4156SSadaf Ebrahimi	{ 0x02, M680X_INS_IDIV, inh_hid, inh_hid },
6*9a0e4156SSadaf Ebrahimi	{ 0x03, M680X_INS_FDIV, inh_hid, inh_hid },
7*9a0e4156SSadaf Ebrahimi	{ 0x12, M680X_INS_BRSET, dir_hid, imm8rel_hid },
8*9a0e4156SSadaf Ebrahimi	{ 0x13, M680X_INS_BRCLR, dir_hid, imm8rel_hid },
9*9a0e4156SSadaf Ebrahimi	{ 0x14, M680X_INS_BSET, dir_hid, imm8_hid },
10*9a0e4156SSadaf Ebrahimi	{ 0x15, M680X_INS_BCLR, dir_hid, imm8_hid },
11*9a0e4156SSadaf Ebrahimi	{ 0x1c, M680X_INS_BSET, idxX_hid, imm8_hid },
12*9a0e4156SSadaf Ebrahimi	{ 0x1d, M680X_INS_BCLR, idxX_hid, imm8_hid },
13*9a0e4156SSadaf Ebrahimi	{ 0x1e, M680X_INS_BRSET, idxX_hid, imm8rel_hid },
14*9a0e4156SSadaf Ebrahimi	{ 0x1f, M680X_INS_BRCLR, idxX_hid, imm8rel_hid },
15*9a0e4156SSadaf Ebrahimi	{ 0x8f, M680X_INS_XGDX, inh_hid, inh_hid },
16*9a0e4156SSadaf Ebrahimi	{ 0xcf, M680X_INS_STOP, inh_hid, inh_hid },
17*9a0e4156SSadaf Ebrahimi};
18*9a0e4156SSadaf Ebrahimi
19*9a0e4156SSadaf Ebrahimi// M68HC11 PAGE2 instructions
20*9a0e4156SSadaf Ebrahimistatic const inst_pageX g_m6811_inst_page2_table[] = {
21*9a0e4156SSadaf Ebrahimi	{ 0x08, M680X_INS_INY, inh_hid, inh_hid },
22*9a0e4156SSadaf Ebrahimi	{ 0x09, M680X_INS_DEY, inh_hid, inh_hid },
23*9a0e4156SSadaf Ebrahimi	{ 0x1c, M680X_INS_BSET, idxY_hid, imm8_hid },
24*9a0e4156SSadaf Ebrahimi	{ 0x1d, M680X_INS_BCLR, idxY_hid, imm8_hid },
25*9a0e4156SSadaf Ebrahimi	{ 0x1e, M680X_INS_BRSET, idxY_hid, imm8rel_hid },
26*9a0e4156SSadaf Ebrahimi	{ 0x1f, M680X_INS_BRCLR, idxY_hid, imm8rel_hid },
27*9a0e4156SSadaf Ebrahimi	{ 0x30, M680X_INS_TSY, inh_hid, inh_hid },
28*9a0e4156SSadaf Ebrahimi	{ 0x35, M680X_INS_TYS, inh_hid, inh_hid },
29*9a0e4156SSadaf Ebrahimi	{ 0x38, M680X_INS_PULY, inh_hid, inh_hid },
30*9a0e4156SSadaf Ebrahimi	{ 0x3a, M680X_INS_ABY, inh_hid, inh_hid },
31*9a0e4156SSadaf Ebrahimi	{ 0x3c, M680X_INS_PSHY, inh_hid, inh_hid },
32*9a0e4156SSadaf Ebrahimi	{ 0x60, M680X_INS_NEG, idxY_hid, inh_hid },
33*9a0e4156SSadaf Ebrahimi	{ 0x63, M680X_INS_COM, idxY_hid, inh_hid },
34*9a0e4156SSadaf Ebrahimi	{ 0x64, M680X_INS_LSR, idxY_hid, inh_hid },
35*9a0e4156SSadaf Ebrahimi	{ 0x66, M680X_INS_ROR, idxY_hid, inh_hid },
36*9a0e4156SSadaf Ebrahimi	{ 0x67, M680X_INS_ASR, idxY_hid, inh_hid },
37*9a0e4156SSadaf Ebrahimi	{ 0x68, M680X_INS_ASL, idxY_hid, inh_hid },
38*9a0e4156SSadaf Ebrahimi	{ 0x69, M680X_INS_ROL, idxY_hid, inh_hid },
39*9a0e4156SSadaf Ebrahimi	{ 0x6a, M680X_INS_DEC, idxY_hid, inh_hid },
40*9a0e4156SSadaf Ebrahimi	{ 0x6c, M680X_INS_INC, idxY_hid, inh_hid },
41*9a0e4156SSadaf Ebrahimi	{ 0x6d, M680X_INS_TST, idxY_hid, inh_hid },
42*9a0e4156SSadaf Ebrahimi	{ 0x6e, M680X_INS_JMP, idxY_hid, inh_hid },
43*9a0e4156SSadaf Ebrahimi	{ 0x6f, M680X_INS_CLR, idxY_hid, inh_hid },
44*9a0e4156SSadaf Ebrahimi	{ 0x8c, M680X_INS_CPY, imm16_hid, inh_hid },
45*9a0e4156SSadaf Ebrahimi	{ 0x8f, M680X_INS_XGDY, inh_hid, inh_hid },
46*9a0e4156SSadaf Ebrahimi	{ 0x9c, M680X_INS_CPY, dir_hid, inh_hid },
47*9a0e4156SSadaf Ebrahimi	{ 0xa0, M680X_INS_SUBA, idxY_hid, inh_hid },
48*9a0e4156SSadaf Ebrahimi	{ 0xa1, M680X_INS_CMPA, idxY_hid, inh_hid },
49*9a0e4156SSadaf Ebrahimi	{ 0xa2, M680X_INS_SBCA, idxY_hid, inh_hid },
50*9a0e4156SSadaf Ebrahimi	{ 0xa3, M680X_INS_SUBD, idxY_hid, inh_hid },
51*9a0e4156SSadaf Ebrahimi	{ 0xa4, M680X_INS_ANDA, idxY_hid, inh_hid },
52*9a0e4156SSadaf Ebrahimi	{ 0xa5, M680X_INS_BITA, idxY_hid, inh_hid },
53*9a0e4156SSadaf Ebrahimi	{ 0xa6, M680X_INS_LDAA, idxY_hid, inh_hid },
54*9a0e4156SSadaf Ebrahimi	{ 0xa7, M680X_INS_STAA, idxY_hid, inh_hid },
55*9a0e4156SSadaf Ebrahimi	{ 0xa8, M680X_INS_EORA, idxY_hid, inh_hid },
56*9a0e4156SSadaf Ebrahimi	{ 0xa9, M680X_INS_ADCA, idxY_hid, inh_hid },
57*9a0e4156SSadaf Ebrahimi	{ 0xaa, M680X_INS_ORAA, idxY_hid, inh_hid },
58*9a0e4156SSadaf Ebrahimi	{ 0xab, M680X_INS_ADDA, idxY_hid, inh_hid },
59*9a0e4156SSadaf Ebrahimi	{ 0xac, M680X_INS_CPY, idxY_hid, inh_hid },
60*9a0e4156SSadaf Ebrahimi	{ 0xad, M680X_INS_JSR, idxY_hid, inh_hid },
61*9a0e4156SSadaf Ebrahimi	{ 0xae, M680X_INS_LDS, idxY_hid, inh_hid },
62*9a0e4156SSadaf Ebrahimi	{ 0xaf, M680X_INS_STS, idxY_hid, inh_hid },
63*9a0e4156SSadaf Ebrahimi	{ 0xbc, M680X_INS_CPY, ext_hid, inh_hid },
64*9a0e4156SSadaf Ebrahimi	{ 0xce, M680X_INS_LDY, imm16_hid, inh_hid },
65*9a0e4156SSadaf Ebrahimi	{ 0xde, M680X_INS_LDY, dir_hid, inh_hid },
66*9a0e4156SSadaf Ebrahimi	{ 0xdf, M680X_INS_STY, dir_hid, inh_hid },
67*9a0e4156SSadaf Ebrahimi	{ 0xe0, M680X_INS_SUBB, idxY_hid, inh_hid },
68*9a0e4156SSadaf Ebrahimi	{ 0xe1, M680X_INS_CMPB, idxY_hid, inh_hid },
69*9a0e4156SSadaf Ebrahimi	{ 0xe2, M680X_INS_SBCB, idxY_hid, inh_hid },
70*9a0e4156SSadaf Ebrahimi	{ 0xe3, M680X_INS_ADDD, idxY_hid, inh_hid },
71*9a0e4156SSadaf Ebrahimi	{ 0xe4, M680X_INS_ANDB, idxY_hid, inh_hid },
72*9a0e4156SSadaf Ebrahimi	{ 0xe5, M680X_INS_BITB, idxY_hid, inh_hid },
73*9a0e4156SSadaf Ebrahimi	{ 0xe6, M680X_INS_LDAB, idxY_hid, inh_hid },
74*9a0e4156SSadaf Ebrahimi	{ 0xe7, M680X_INS_STAB, idxY_hid, inh_hid },
75*9a0e4156SSadaf Ebrahimi	{ 0xe8, M680X_INS_EORB, idxY_hid, inh_hid },
76*9a0e4156SSadaf Ebrahimi	{ 0xe9, M680X_INS_ADCB, idxY_hid, inh_hid },
77*9a0e4156SSadaf Ebrahimi	{ 0xea, M680X_INS_ORAB, idxY_hid, inh_hid },
78*9a0e4156SSadaf Ebrahimi	{ 0xeb, M680X_INS_ADDB, idxY_hid, inh_hid },
79*9a0e4156SSadaf Ebrahimi	{ 0xec, M680X_INS_LDD, idxY_hid, inh_hid },
80*9a0e4156SSadaf Ebrahimi	{ 0xed, M680X_INS_STD, idxY_hid, inh_hid },
81*9a0e4156SSadaf Ebrahimi	{ 0xee, M680X_INS_LDY, idxY_hid, inh_hid },
82*9a0e4156SSadaf Ebrahimi	{ 0xef, M680X_INS_STY, idxY_hid, inh_hid },
83*9a0e4156SSadaf Ebrahimi	{ 0xfe, M680X_INS_LDY, ext_hid, inh_hid },
84*9a0e4156SSadaf Ebrahimi	{ 0xff, M680X_INS_STY, ext_hid, inh_hid },
85*9a0e4156SSadaf Ebrahimi};
86*9a0e4156SSadaf Ebrahimi
87*9a0e4156SSadaf Ebrahimi// M68HC11 PAGE3 instructions
88*9a0e4156SSadaf Ebrahimistatic const inst_pageX g_m6811_inst_page3_table[] = {
89*9a0e4156SSadaf Ebrahimi	{ 0x83, M680X_INS_CPD, imm16_hid, inh_hid },
90*9a0e4156SSadaf Ebrahimi	{ 0x93, M680X_INS_CPD, dir_hid, inh_hid },
91*9a0e4156SSadaf Ebrahimi	{ 0xa3, M680X_INS_CPD, idxX_hid, inh_hid },
92*9a0e4156SSadaf Ebrahimi	{ 0xac, M680X_INS_CPY, idxX_hid, inh_hid },
93*9a0e4156SSadaf Ebrahimi	{ 0xb3, M680X_INS_CPD, ext_hid, inh_hid },
94*9a0e4156SSadaf Ebrahimi	{ 0xee, M680X_INS_LDY, idxX_hid, inh_hid },
95*9a0e4156SSadaf Ebrahimi	{ 0xef, M680X_INS_STY, idxX_hid, inh_hid },
96*9a0e4156SSadaf Ebrahimi};
97*9a0e4156SSadaf Ebrahimi
98*9a0e4156SSadaf Ebrahimi// M68HC11 PAGE4 instructions
99*9a0e4156SSadaf Ebrahimistatic const inst_pageX g_m6811_inst_page4_table[] = {
100*9a0e4156SSadaf Ebrahimi	{ 0xa3, M680X_INS_CPD, idxY_hid, inh_hid },
101*9a0e4156SSadaf Ebrahimi	{ 0xac, M680X_INS_CPX, idxY_hid, inh_hid },
102*9a0e4156SSadaf Ebrahimi	{ 0xee, M680X_INS_LDX, idxY_hid, inh_hid },
103*9a0e4156SSadaf Ebrahimi	{ 0xef, M680X_INS_STX, idxY_hid, inh_hid },
104*9a0e4156SSadaf Ebrahimi};
105*9a0e4156SSadaf Ebrahimi
106