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