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