aboutsummaryrefslogtreecommitdiff
path: root/opcodes/rce-opc.h
blob: ec011162bfb3795824594c0c63df4c043fb9043a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
typedef enum {
	O0, OT, O1, OC, O2, X1, OI, OB, SI, I7, LS, BR, LI, LR, LJ, OM, OQ, JSR
} rce_opclass;

typedef struct inst
{	char *name;
	unsigned short opclass;
	unsigned short inst;
} rce_opcode_info;

#ifdef DEFINE_TABLE
rce_opcode_info rce_table[]={
{ "bkpt",	O0,	0x0000 },
{ "sync",	O0,	0x0001 },
{ "rte",	O0,	0x0002 },
{ "rfi",	O0,	0x0003 },
{ "stop",	O0,	0x0004 },
{ "wait",	O0,	0x0005 },

{ "trap",	OT,	0x0010 },
{ "mvc",	O1,	0x0020 },
{ "mvcv",	O1,	0x0030 },
{ "jmp",	O1,	0x0040 },
{ "jsr",	JSR,	0x0050 },
/*****
{ "jmpt",	O1,	0x0060 },
{ "jmpf",	O1,	0x0070 },
*****/
{ "tstne",	O1,	0x0080 },
{ "tstgt",	O1,	0x0090 },
{ "tstnbz",	O1,	0x00B0 },
{ "inct",	O1,	0x00C0 },
{ "incf",	O1,	0x00D0 },
{ "dect",	O1,	0x00E0 },
{ "decf",	O1,	0x00F0 },
{ "zextb",	O1,	0x0100 },
{ "sextb",	O1,	0x0110 },
{ "zexth",	O1,	0x0120 },
{ "sexth",	O1,	0x0130 },
{ "xtrb3",	X1,	0x0140 },
{ "xtrb2",	X1,	0x0150 },
{ "xtrb1",	X1,	0x0160 },
{ "xtrb0",	X1,	0x0170 },

{ "decgt",	O1,	0x01C0 },
{ "declt",	O1,	0x01D0 },
{ "brev",	O1,	0x01E0 },
{ "not",	O1,	0x01F0 },
{ "mfcr",	OC,	0x0400 },
{ "mtcr",	OC,	0x0600 },
{ "mov",	O2,	0x0200 },
{ "movnc",	O2,	0x0C00 },
{ "tst",	O2,	0x0B00 },
{ "cmpne",	O2,	0x0800 },
{ "cmplt",	O2,	0x0900 },
{ "cmphs",	O2,	0x0A00 },
{ "bgenr",	O2,	0x0D00 },
{ "movt",	O2,	0x0E00 },
{ "movf",	O2,	0x0F00 },
{ "and",	O2,	0x1000 },
{ "andn",	O2,	0x1100 },
{ "xor",	O2,	0x1200 },
{ "xnor",	O2,	0x1300 },
{ "or",		O2,	0x1400 },
{ "rsub",	O2,	0x1500 },
{ "addu",	O2,	0x1600 },
{ "subu",	O2,	0x1700 },
{ "ixh",	O2,	0x1800 },
{ "ixw",	O2,	0x1900 },
{ "addc",	O2,	0x1A00 },
{ "subc",	O2,	0x1B00 },
{ "lsr",	O2,	0x1C00 },
{ "asr",	O2,	0x1D00 },
{ "lsl",	O2,	0x1E00 },
/*****
{ "rotl",	O2,	0x1F00 },
*****/

{ "movi",	I7,	0x6800 },

{ "andi",	OB,	0x2200 },
{ "movit",	OB,	0x2400 },
{ "movif",	OB,	0x2600 },
{ "btsti",	OB,	0x2800 },
{ "bclri",	OB,	0x2A00 },
{ "bseti",	OB,	0x2C00 },
{ "bmaski",	OB,	0x2E00 },
{ "bgeni",	OB,	0x3000 },
{ "rsubi",	OB,	0x3200 },
{ "addi",	OI,	0x3400 },
{ "subi",	OI,	0x3600 },
{ "lsri",	SI,	0x3800 },
{ "lsrc",	O1,	0x3800 },
{ "asri",	SI,	0x3A00 },
{ "asrc",	O1,	0x3A00 },
{ "lsli",	SI,	0x3C00 },
{ "lslc",	O1,	0x3C00 },
{ "rotli",	SI,	0x3E00 },
{ "xsr",	O1,	0x3E00 },

{ "ldm",	OM,	0x6000 },
{ "stm",	OM,	0x6010 },
{ "ldq",	OQ,	0x6000 },
{ "stq",	OQ,	0x6010 },
{ "mult",	O2,	0x6100 },

/* { "mvir1",	LI,	0x6800 }, */
{ "lrw",	LR,	0x7000 },
{ "jmpi",	LJ,	0x7000 },
{ "jsri",	LJ,	0x7F00 },

{ "ld",		LS,	0x8000 },
{ "st",		LS,	0x9000 },
{ "ld.w",	LS,	0x8000 },
{ "st.w",	LS,	0x9000 },
{ "ld.b",	LS,	0xA000 },
{ "st.b",	LS,	0xB000 },
{ "ld.h",	LS,	0xC000 },
{ "st.h",	LS,	0xD000 },
{ "br",		BR,	0xE000 },
{ "bsr",	BR,	0xE800 },
{ "bt",		BR,	0xF000 },
{ "bf",		BR,	0xF800 },
{ 0,		0,	0 }
};
#endif