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