1 /* This file is tc-m68851.h
3 Copyright (C) 1987-2019 Free Software Foundation, Inc.
5 This file is part of GAS, the GNU Assembler.
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)
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.
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
25 I didn't use much imagination in choosing the
26 following codes, so many of them aren't very
31 000 TC Translation Control reg
32 100 CAL Current Access Level
33 101 VAL Validate Access Level
34 110 SCC Stack Change Control
39 001 DRP Dma Root Pointer
40 010 SRP Supervisor Root Pointer
41 011 CRP Cpu Root Pointer
43 f function code register
50 100 BAD Breakpoint Acknowledge Data
51 101 BAC Breakpoint Acknowledge Control
56 | memory (modes 2-6, 7.*)
61 * these defines should be in m68k.c but
62 * i put them here to keep all the m68851 stuff
64 * JF--Make sure these #s don't clash with the ones in m68k.c
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 */
80 /* name */ /* opcode */ /* match */ /* args */
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"},
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"},
132 {"pflusha", two(0xf000, 0x2400), two(0xffff, 0xffff), "" },
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" },
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"},
148 {"pflushr", two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s" },
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" },
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" },
164 {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3" },
165 {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s" },
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" },
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"},
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"},
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" },
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" },
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
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), ""},
273 {"pvalid", two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s"},
274 {"pvalid", two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s" },