force all files to end in "/* end of filename"
[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
285 /* end of tc-m68851.h */