Upload Tizen:Base source
[external/binutils.git] / gas / config / tc-m68851.h
1 /* This file is tc-m68851.h
2
3    Copyright 1987, 1988, 1989, 1990, 1991, 1992, 2000, 2005, 2007
4    Free Software Foundation, Inc.
5
6    This file is part of GAS, the GNU Assembler.
7
8    GAS is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3, or (at your option)
11    any later version.
12
13    GAS is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with GAS; see the file COPYING.  If not, write to the Free
20    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
21    02110-1301, USA.  */
22
23 #ifdef m68851
24
25 /*
26   I didn't use much imagination in choosing the
27   following codes, so many of them aren't very
28   mnemonic. -rab
29
30   P  pmmu register
31   Possible values:
32   000   TC      Translation Control reg
33   100   CAL     Current Access Level
34   101   VAL     Validate Access Level
35   110   SCC     Stack Change Control
36   111   AC      Access Control
37
38   W  wide pmmu registers
39   Possible values:
40   001   DRP     Dma Root Pointer
41   010   SRP     Supervisor Root Pointer
42   011   CRP     Cpu Root Pointer
43
44   f     function code register
45   0     SFC
46   1     DFC
47
48   V     VAL register only
49
50   X     BADx, BACx
51   100   BAD     Breakpoint Acknowledge Data
52   101   BAC     Breakpoint Acknowledge Control
53
54   Y     PSR
55   Z     PCSR
56
57   |     memory          (modes 2-6, 7.*)
58
59   */
60
61 /*
62  * these defines should be in m68k.c but
63  * i put them here to keep all the m68851 stuff
64  * together -rab
65  * JF--Make sure these #s don't clash with the ones in m68k.c
66  * That would be BAD.
67  */
68 #define TC      (FPS+1)         /* 48 */
69 #define DRP     (TC+1)          /* 49 */
70 #define SRP     (DRP+1)         /* 50 */
71 #define CRP     (SRP+1)         /* 51 */
72 #define CAL     (CRP+1)         /* 52 */
73 #define VAL     (CAL+1)         /* 53 */
74 #define SCC     (VAL+1)         /* 54 */
75 #define AC      (SCC+1)         /* 55 */
76 #define BAD     (AC+1)          /* 56,57,58,59, 60,61,62,63 */
77 #define BAC     (BAD+8)         /* 64,65,66,67, 68,69,70,71 */
78 #define PSR     (BAC+8)         /* 72 */
79 #define PCSR    (PSR+1)         /* 73 */
80
81 /* name */      /* opcode */            /* match */             /* args */
82
83 {"pbac",        one(0xf0c7),            one(0xffbf),            "Bc"},
84 {"pbacw",       one(0xf087),            one(0xffbf),            "Bc"},
85 {"pbas",        one(0xf0c6),            one(0xffbf),            "Bc"},
86 {"pbasw",       one(0xf086),            one(0xffbf),            "Bc"},
87 {"pbbc",        one(0xf0c1),            one(0xffbf),            "Bc"},
88 {"pbbcw",       one(0xf081),            one(0xffbf),            "Bc"},
89 {"pbbs",        one(0xf0c0),            one(0xffbf),            "Bc"},
90 {"pbbsw",       one(0xf080),            one(0xffbf),            "Bc"},
91 {"pbcc",        one(0xf0cf),            one(0xffbf),            "Bc"},
92 {"pbccw",       one(0xf08f),            one(0xffbf),            "Bc"},
93 {"pbcs",        one(0xf0ce),            one(0xffbf),            "Bc"},
94 {"pbcsw",       one(0xf08e),            one(0xffbf),            "Bc"},
95 {"pbgc",        one(0xf0cd),            one(0xffbf),            "Bc"},
96 {"pbgcw",       one(0xf08d),            one(0xffbf),            "Bc"},
97 {"pbgs",        one(0xf0cc),            one(0xffbf),            "Bc"},
98 {"pbgsw",       one(0xf08c),            one(0xffbf),            "Bc"},
99 {"pbic",        one(0xf0cb),            one(0xffbf),            "Bc"},
100 {"pbicw",       one(0xf08b),            one(0xffbf),            "Bc"},
101 {"pbis",        one(0xf0ca),            one(0xffbf),            "Bc"},
102 {"pbisw",       one(0xf08a),            one(0xffbf),            "Bc"},
103 {"pblc",        one(0xf0c3),            one(0xffbf),            "Bc"},
104 {"pblcw",       one(0xf083),            one(0xffbf),            "Bc"},
105 {"pbls",        one(0xf0c2),            one(0xffbf),            "Bc"},
106 {"pblsw",       one(0xf082),            one(0xffbf),            "Bc"},
107 {"pbsc",        one(0xf0c5),            one(0xffbf),            "Bc"},
108 {"pbscw",       one(0xf085),            one(0xffbf),            "Bc"},
109 {"pbss",        one(0xf0c4),            one(0xffbf),            "Bc"},
110 {"pbssw",       one(0xf084),            one(0xffbf),            "Bc"},
111 {"pbwc",        one(0xf0c9),            one(0xffbf),            "Bc"},
112 {"pbwcw",       one(0xf089),            one(0xffbf),            "Bc"},
113 {"pbws",        one(0xf0c8),            one(0xffbf),            "Bc"},
114 {"pbwsw",       one(0xf088),            one(0xffbf),            "Bc"},
115
116 {"pdbac",       two(0xf048, 0x0007),    two(0xfff8, 0xffff),    "DsBw"},
117 {"pdbas",       two(0xf048, 0x0006),    two(0xfff8, 0xffff),    "DsBw"},
118 {"pdbbc",       two(0xf048, 0x0001),    two(0xfff8, 0xffff),    "DsBw"},
119 {"pdbbs",       two(0xf048, 0x0000),    two(0xfff8, 0xffff),    "DsBw"},
120 {"pdbcc",       two(0xf048, 0x000f),    two(0xfff8, 0xffff),    "DsBw"},
121 {"pdbcs",       two(0xf048, 0x000e),    two(0xfff8, 0xffff),    "DsBw"},
122 {"pdbgc",       two(0xf048, 0x000d),    two(0xfff8, 0xffff),    "DsBw"},
123 {"pdbgs",       two(0xf048, 0x000c),    two(0xfff8, 0xffff),    "DsBw"},
124 {"pdbic",       two(0xf048, 0x000b),    two(0xfff8, 0xffff),    "DsBw"},
125 {"pdbis",       two(0xf048, 0x000a),    two(0xfff8, 0xffff),    "DsBw"},
126 {"pdblc",       two(0xf048, 0x0003),    two(0xfff8, 0xffff),    "DsBw"},
127 {"pdbls",       two(0xf048, 0x0002),    two(0xfff8, 0xffff),    "DsBw"},
128 {"pdbsc",       two(0xf048, 0x0005),    two(0xfff8, 0xffff),    "DsBw"},
129 {"pdbss",       two(0xf048, 0x0004),    two(0xfff8, 0xffff),    "DsBw"},
130 {"pdbwc",       two(0xf048, 0x0009),    two(0xfff8, 0xffff),    "DsBw"},
131 {"pdbws",       two(0xf048, 0x0008),    two(0xfff8, 0xffff),    "DsBw"},
132
133 {"pflusha",     two(0xf000, 0x2400),    two(0xffff, 0xffff),    "" },
134
135 {"pflush",      two(0xf000, 0x3010),    two(0xffc0, 0xfe10),    "T3T9" },
136 {"pflush",      two(0xf000, 0x3810),    two(0xffc0, 0xfe10),    "T3T9&s" },
137 {"pflush",      two(0xf000, 0x3008),    two(0xffc0, 0xfe18),    "D3T9" },
138 {"pflush",      two(0xf000, 0x3808),    two(0xffc0, 0xfe18),    "D3T9&s" },
139 {"pflush",      two(0xf000, 0x3000),    two(0xffc0, 0xfe1e),    "f3T9" },
140 {"pflush",      two(0xf000, 0x3800),    two(0xffc0, 0xfe1e),    "f3T9&s" },
141
142 {"pflushs",     two(0xf000, 0x3410),    two(0xfff8, 0xfe10),    "T3T9" },
143 {"pflushs",     two(0xf000, 0x3c00),    two(0xfff8, 0xfe00),    "T3T9&s" },
144 {"pflushs",     two(0xf000, 0x3408),    two(0xfff8, 0xfe18),    "D3T9" },
145 {"pflushs",     two(0xf000, 0x3c08),    two(0xfff8, 0xfe18),    "D3T9&s" },
146 {"pflushs",     two(0xf000, 0x3400),    two(0xfff8, 0xfe1e),    "f3T9" },
147 {"pflushs",     two(0xf000, 0x3c00),    two(0xfff8, 0xfe1e),    "f3T9&s"},
148
149 {"pflushr",     two(0xf000, 0xa000),    two(0xffc0, 0xffff),    "|s" },
150
151 {"ploadr",      two(0xf000, 0x2210),    two(0xffc0, 0xfff0),    "T3&s" },
152 {"ploadr",      two(0xf000, 0x2208),    two(0xffc0, 0xfff8),    "D3&s" },
153 {"ploadr",      two(0xf000, 0x2200),    two(0xffc0, 0xfffe),    "f3&s" },
154 {"ploadw",      two(0xf000, 0x2010),    two(0xffc0, 0xfff0),    "T3&s" },
155 {"ploadw",      two(0xf000, 0x2008),    two(0xffc0, 0xfff8),    "D3&s" },
156 {"ploadw",      two(0xf000, 0x2000),    two(0xffc0, 0xfffe),    "f3&s" },
157
158     /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
159 {"pmove",       two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "*sP8" },
160 {"pmove",       two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "P8%s" },
161 {"pmove",       two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "|sW8" },
162 {"pmove",       two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "W8~s" },
163
164     /* BADx, BACx */
165 {"pmove",       two(0xf000, 0x6200),    two(0xffc0, 0xe3e3),    "*sX3" },
166 {"pmove",       two(0xf000, 0x6000),    two(0xffc0, 0xe3e3),    "X3%s" },
167
168     /* PSR, PCSR */
169     /* {"pmove",        two(0xf000, 0x6100),    two(oxffc0, oxffff),    "*sZ8" }, */
170 {"pmove",       two(0xf000, 0x6000),    two(0xffc0, 0xffff),    "*sY8" },
171 {"pmove",       two(0xf000, 0x6200),    two(0xffc0, 0xffff),    "Y8%s" },
172 {"pmove",       two(0xf000, 0x6600),    two(0xffc0, 0xffff),    "Z8%s" },
173
174 {"prestore",    one(0xf140),            one(0xffc0),            "&s"},
175 {"prestore",    one(0xf158),            one(0xfff8),            "+s"},
176 {"psave",       one(0xf100),            one(0xffc0),            "&s"},
177 {"psave",       one(0xf100),            one(0xffc0),            "+s"},
178
179 {"psac",        two(0xf040, 0x0007),    two(0xffc0, 0xffff),    "@s"},
180 {"psas",        two(0xf040, 0x0006),    two(0xffc0, 0xffff),    "@s"},
181 {"psbc",        two(0xf040, 0x0001),    two(0xffc0, 0xffff),    "@s"},
182 {"psbs",        two(0xf040, 0x0000),    two(0xffc0, 0xffff),    "@s"},
183 {"pscc",        two(0xf040, 0x000f),    two(0xffc0, 0xffff),    "@s"},
184 {"pscs",        two(0xf040, 0x000e),    two(0xffc0, 0xffff),    "@s"},
185 {"psgc",        two(0xf040, 0x000d),    two(0xffc0, 0xffff),    "@s"},
186 {"psgs",        two(0xf040, 0x000c),    two(0xffc0, 0xffff),    "@s"},
187 {"psic",        two(0xf040, 0x000b),    two(0xffc0, 0xffff),    "@s"},
188 {"psis",        two(0xf040, 0x000a),    two(0xffc0, 0xffff),    "@s"},
189 {"pslc",        two(0xf040, 0x0003),    two(0xffc0, 0xffff),    "@s"},
190 {"psls",        two(0xf040, 0x0002),    two(0xffc0, 0xffff),    "@s"},
191 {"pssc",        two(0xf040, 0x0005),    two(0xffc0, 0xffff),    "@s"},
192 {"psss",        two(0xf040, 0x0004),    two(0xffc0, 0xffff),    "@s"},
193 {"pswc",        two(0xf040, 0x0009),    two(0xffc0, 0xffff),    "@s"},
194 {"psws",        two(0xf040, 0x0008),    two(0xffc0, 0xffff),    "@s"},
195
196 {"ptestr",      two(0xf000, 0x8210),    two(0xffc0, 0xe3f0),    "T3&sQ8" },
197 {"ptestr",      two(0xf000, 0x8310),    two(0xffc0, 0xe310),    "T3&sQ8A9" },
198 {"ptestr",      two(0xf000, 0x8208),    two(0xffc0, 0xe3f8),    "D3&sQ8" },
199 {"ptestr",      two(0xf000, 0x8308),    two(0xffc0, 0xe318),    "D3&sQ8A9" },
200 {"ptestr",      two(0xf000, 0x8200),    two(0xffc0, 0xe3fe),    "f3&sQ8" },
201 {"ptestr",      two(0xf000, 0x8300),    two(0xffc0, 0xe31e),    "f3&sQ8A9" },
202
203 {"ptestw",      two(0xf000, 0x8010),    two(0xffc0, 0xe3f0),    "T3&sQ8" },
204 {"ptestw",      two(0xf000, 0x8110),    two(0xffc0, 0xe310),    "T3&sQ8A9" },
205 {"ptestw",      two(0xf000, 0x8008),    two(0xffc0, 0xe3f8),    "D3&sQ8" },
206 {"ptestw",      two(0xf000, 0x8108),    two(0xffc0, 0xe318),    "D3&sQ8A9" },
207 {"ptestw",      two(0xf000, 0x8000),    two(0xffc0, 0xe3fe),    "f3&sQ8" },
208 {"ptestw",      two(0xf000, 0x8100),    two(0xffc0, 0xe31e),    "f3&sQ8A9" },
209
210 {"ptrapacw",    two(0xf07a, 0x0007),    two(0xffff, 0xffff),    "#w"},
211 {"ptrapacl",    two(0xf07b, 0x0007),    two(0xffff, 0xffff),    "#l"},
212 {"ptrapac",     two(0xf07c, 0x0007),    two(0xffff, 0xffff),    ""},
213
214 {"ptrapasw",    two(0xf07a, 0x0006),    two(0xffff, 0xffff),    "#w"},
215 {"ptrapasl",    two(0xf07b, 0x0006),    two(0xffff, 0xffff),    "#l"},
216 {"ptrapas",     two(0xf07c, 0x0006),    two(0xffff, 0xffff),    ""},
217
218 {"ptrapbcw",    two(0xf07a, 0x0001),    two(0xffff, 0xffff),    "#w"},
219 {"ptrapbcl",    two(0xf07b, 0x0001),    two(0xffff, 0xffff),    "#l"},
220 {"ptrapbc",     two(0xf07c, 0x0001),    two(0xffff, 0xffff),    ""},
221
222 {"ptrapbsw",    two(0xf07a, 0x0000),    two(0xffff, 0xffff),    "#w"},
223 {"ptrapbsl",    two(0xf07b, 0x0000),    two(0xffff, 0xffff),    "#l"},
224 {"ptrapbs",     two(0xf07c, 0x0000),    two(0xffff, 0xffff),    ""},
225
226 {"ptrapccw",    two(0xf07a, 0x000f),    two(0xffff, 0xffff),    "#w"},
227 {"ptrapccl",    two(0xf07b, 0x000f),    two(0xffff, 0xffff),    "#l"},
228 {"ptrapcc",     two(0xf07c, 0x000f),    two(0xffff, 0xffff),    ""},
229
230 {"ptrapcsw",    two(0xf07a, 0x000e),    two(0xffff, 0xffff),    "#w"},
231 {"ptrapcsl",    two(0xf07b, 0x000e),    two(0xffff, 0xffff),    "#l"},
232 {"ptrapcs",     two(0xf07c, 0x000e),    two(0xffff, 0xffff),    ""},
233
234 {"ptrapgcw",    two(0xf07a, 0x000d),    two(0xffff, 0xffff),    "#w"},
235 {"ptrapgcl",    two(0xf07b, 0x000d),    two(0xffff, 0xffff),    "#l"},
236 {"ptrapgc",     two(0xf07c, 0x000d),    two(0xffff, 0xffff),    ""},
237
238 {"ptrapgsw",    two(0xf07a, 0x000c),    two(0xffff, 0xffff),    "#w"},
239 {"ptrapgsl",    two(0xf07b, 0x000c),    two(0xffff, 0xffff),    "#l"},
240 {"ptrapgs",     two(0xf07c, 0x000c),    two(0xffff, 0xffff),    ""},
241
242 {"ptrapicw",    two(0xf07a, 0x000b),    two(0xffff, 0xffff),    "#w"},
243 {"ptrapicl",    two(0xf07b, 0x000b),    two(0xffff, 0xffff),    "#l"},
244 {"ptrapic",     two(0xf07c, 0x000b),    two(0xffff, 0xffff),    ""},
245
246 {"ptrapisw",    two(0xf07a, 0x000a),    two(0xffff, 0xffff),    "#w"},
247 {"ptrapisl",    two(0xf07b, 0x000a),    two(0xffff, 0xffff),    "#l"},
248 {"ptrapis",     two(0xf07c, 0x000a),    two(0xffff, 0xffff),    ""},
249
250 {"ptraplcw",    two(0xf07a, 0x0003),    two(0xffff, 0xffff),    "#w"},
251 {"ptraplcl",    two(0xf07b, 0x0003),    two(0xffff, 0xffff),    "#l"},
252 {"ptraplc",     two(0xf07c, 0x0003),    two(0xffff, 0xffff),    ""},
253
254 {"ptraplsw",    two(0xf07a, 0x0002),    two(0xffff, 0xffff),    "#w"},
255 {"ptraplsl",    two(0xf07b, 0x0002),    two(0xffff, 0xffff),    "#l"},
256 {"ptrapls",     two(0xf07c, 0x0002),    two(0xffff, 0xffff),    ""},
257
258 {"ptrapscw",    two(0xf07a, 0x0005),    two(0xffff, 0xffff),    "#w"},
259 {"ptrapscl",    two(0xf07b, 0x0005),    two(0xffff, 0xffff),    "#l"},
260 {"ptrapsc",     two(0xf07c, 0x0005),    two(0xffff, 0xffff),    ""},
261
262 {"ptrapssw",    two(0xf07a, 0x0004),    two(0xffff, 0xffff),    "#w"},
263 {"ptrapssl",    two(0xf07b, 0x0004),    two(0xffff, 0xffff),    "#l"},
264 {"ptrapss",     two(0xf07c, 0x0004),    two(0xffff, 0xffff),    ""},
265
266 {"ptrapwcw",    two(0xf07a, 0x0009),    two(0xffff, 0xffff),    "#w"},
267 {"ptrapwcl",    two(0xf07b, 0x0009),    two(0xffff, 0xffff),    "#l"},
268 {"ptrapwc",     two(0xf07c, 0x0009),    two(0xffff, 0xffff),    ""},
269
270 {"ptrapwsw",    two(0xf07a, 0x0008),    two(0xffff, 0xffff),    "#w"},
271 {"ptrapwsl",    two(0xf07b, 0x0008),    two(0xffff, 0xffff),    "#l"},
272 {"ptrapws",     two(0xf07c, 0x0008),    two(0xffff, 0xffff),    ""},
273
274 {"pvalid",      two(0xf000, 0x2800),    two(0xffc0, 0xffff),    "Vs&s"},
275 {"pvalid",      two(0xf000, 0x2c00),    two(0xffc0, 0xfff8),    "A3&s" },
276
277 #endif /* m68851 */