1 /* $Id: mach3.c,v 1.9 1994/06/24 13:05:47 ceriel Exp $ */
3 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
4 * See the copyright notice in the ACK home directory, in the file "Copyright".
7 * Motorola 68020 keywords
10 0, SIZE, SIZE_B, ".b",
11 0, SIZE, SIZE_W, ".w",
12 0, SIZE, SIZE_L, ".l",
36 0, CREG, 04001, "vbr",
38 0, CREG, 00001, "dfc",
39 0, CREG, 00002, "cacr",
40 0, CREG, 04002, "caar",
41 0, CREG, 04003, "msp",
42 0, CREG, 04004, "isp",
48 0, ABCD, 0140400, "abcd",
49 0, ABCD, 0100400, "sbcd",
51 0, ADDX, 0150400, "addx",
52 0, ADDX, 0110400, "subx",
54 0, ADD, 0153300, "add",
55 0, ADD, 0112700, "sub",
57 0, AND, 0141000, "and",
58 0, AND, 0135000, "eor",
59 0, AND, 0100000, "or",
61 0, BITOP, 0000, "btst",
62 0, BITOP, 0100, "bchg",
63 0, BITOP, 0200, "bclr",
64 0, BITOP, 0300, "bset",
66 0, BITFIELD, 0164300, "bftst",
67 0, BITFIELD, 0165300, "bfchg",
68 0, BITFIELD, 0166300, "bfclr",
69 0, BITFIELD, 0167300, "bfset",
70 0, BF_TO_D, 0164700, "bfextu",
71 0, BF_TO_D, 0164700, "bfexts",
72 0, BF_TO_D, 0164700, "bfffo",
73 0, BFINS, 0167700, "bfins",
75 0, SHIFT, 0160340, "asr",
76 0, SHIFT, 0160740, "asl",
77 0, SHIFT, 0161350, "lsr",
78 0, SHIFT, 0161750, "lsl",
79 0, SHIFT, 0162360, "roxr",
80 0, SHIFT, 0162760, "roxl",
81 0, SHIFT, 0163370, "ror",
82 0, SHIFT, 0163770, "rol",
84 0, SZ_EA, 041000|DTA|ALT, "clr",
85 0, SZ_EA, 042000|DTA|ALT, "neg",
86 0, SZ_EA, 040000|DTA|ALT, "negx",
87 0, SZ_EA, 043000|DTA|ALT, "not",
88 0, SZ_EA, 045000, "tst",
90 0, OP_EA, 044000|DTA|ALT, "nbcd",
91 0, OP_EA, 045300|DTA|ALT, "tas",
92 0, OP_EA, 047200|CTR, "jsr",
93 0, OP_EA, 047300|CTR, "jmp",
94 0, OP_EA, 044100|CTR, "pea",
96 0, OP_EA, 050300, "st",
97 0, OP_EA, 050700, "sf",
98 0, OP_EA, 051300, "shi",
99 0, OP_EA, 051700, "sls",
100 0, OP_EA, 052300, "scc",
101 0, OP_EA, 052700, "scs",
102 0, OP_EA, 053300, "sne",
103 0, OP_EA, 053700, "seq",
104 0, OP_EA, 054300, "svc",
105 0, OP_EA, 054700, "svs",
106 0, OP_EA, 055300, "spl",
107 0, OP_EA, 055700, "smi",
108 0, OP_EA, 056300, "sge",
109 0, OP_EA, 056700, "slt",
110 0, OP_EA, 057300, "sgt",
111 0, OP_EA, 057700, "sle",
113 0, OP_NOOP, 047160, "reset",
114 0, OP_NOOP, 047161, "nop",
115 0, OP_NOOP, 047163, "rte",
116 0, OP_NOOP, 047165, "rts",
117 0, OP_NOOP, 047166, "trapv",
118 0, OP_NOOP, 047167, "rtr",
119 0, OP_NOOP, 045374, "illegal",
121 0, PACK, 0100500, "pack",
122 0, PACK, 0100600, "unpk",
124 0, DIVMUL, 0100, "divu",
125 0, DIVMUL, 0101, "divs",
126 0, DIVMUL, 0000, "mulu",
127 0, DIVMUL, 0001, "muls",
129 0, DIVL, 046100, "divul",
130 0, DIVL, 046101, "divsl",
132 0, BR, 060000, "bra",
133 0, BR, 060400, "bsr",
134 0, BR, 061000, "bhi",
135 0, BR, 061400, "bls",
136 0, BR, 062000, "bcc",
137 0, BR, 062400, "bcs",
138 0, BR, 063000, "bne",
139 0, BR, 063400, "beq",
140 0, BR, 064000, "bvc",
141 0, BR, 064400, "bvs",
142 0, BR, 065000, "bpl",
143 0, BR, 065400, "bmi",
144 0, BR, 066000, "bge",
145 0, BR, 066400, "blt",
146 0, BR, 067000, "bgt",
147 0, BR, 067400, "ble",
149 0, DBR, 050310, "dbt",
150 0, DBR, 050710, "dbf",
151 0, DBR, 050710, "dbra",
152 0, DBR, 051310, "dbhi",
153 0, DBR, 051710, "dbls",
154 0, DBR, 052310, "dbcc",
155 0, DBR, 052710, "dbcs",
156 0, DBR, 053310, "dbne",
157 0, DBR, 053710, "dbeq",
158 0, DBR, 054310, "dbvc",
159 0, DBR, 054710, "dbvs",
160 0, DBR, 055310, "dbpl",
161 0, DBR, 055710, "dbmi",
162 0, DBR, 056310, "dbge",
163 0, DBR, 056710, "dblt",
164 0, DBR, 057310, "dbgt",
165 0, DBR, 057710, "dble",
167 0, OP_EXT, 044000, "ext",
168 0, OP_EXT, 044400, "extb",
170 0, OP_RANGE, 04000, "chk2",
171 0, OP_RANGE, 0, "cmp2",
173 0, TRAPCC, 050370, "trapt",
174 0, TRAPCC, 050770, "trapf",
175 0, TRAPCC, 051370, "traphi",
176 0, TRAPCC, 051770, "trapls",
177 0, TRAPCC, 052370, "trapcc",
178 0, TRAPCC, 052770, "trapcs",
179 0, TRAPCC, 053370, "trapeq",
180 0, TRAPCC, 053770, "trapvc",
181 0, TRAPCC, 054370, "trapvs",
182 0, TRAPCC, 054770, "trappl",
183 0, TRAPCC, 055370, "trapmi",
184 0, TRAPCC, 055770, "trapge",
185 0, TRAPCC, 056370, "traplt",
186 0, TRAPCC, 056770, "trapgt",
187 0, TRAPCC, 057370, "traple",
188 0, TRAPCC, 057770, "trapne",
193 0, MOVESP, 0, "movep",
194 0, MOVEM, 0, "movem",
195 0, MOVESP, 1, "moves",
196 0, MOVEC, 0, "movec",
206 0, OP_IMM, 047162, "stop",
216 0, OP_IMM, 047164, "rtd",
220 0, CALLM, 0, "callm",
235 /* ???? what is this ???? */
236 0, CPGEN, 0170000, ".gen",
237 0, CPSCC, 0170100, ".s",
238 0, CPDBCC, 0170110, ".db",
239 0, CPTRAPCC, 0170170, ".trap",
240 0, CPBCC, 0170200, ".br", /* 'r' to distinguish from SIZE_B
242 0, CPSAVREST, 0170400, ".save",
243 0, CPSAVREST, 0170500, ".restore",
244 /* ???? end of what is this ???? */
246 /* M68030 MMU registers */
247 0, MREG, 0040000, "tc",
248 0, MREG, 0044000, "srp",
249 0, MREG, 0046000, "crp",
250 0, MREG, 0060000, "mmusr",
251 0, MREG, 0060000, "psr",
252 0, MREG, 0004000, "tt0",
253 0, MREG, 0006000, "tt1",
255 /* M68030 MMU instructions */
257 0, PFLUSHA, 0022000, "pflusha",
258 0, PFLUSH, 0020000, "pflush",
259 0, PLOAD, 0021000, "ploadr",
260 0, PLOAD, 0020000, "ploadw",
261 0, PTEST, 0101000, "ptestr",
262 0, PTEST, 0100000, "ptestw",
263 0, PMOVE, 0000000, "pmove",
264 0, PMOVE, 0000400, "pmovefd",
266 /* floating point coprocessor ... */
268 0, FSIZE, FSIZE_S, ".s",
269 0, FSIZE, FSIZE_X, ".x",
270 0, FSIZE, FSIZE_P, ".p",
271 0, FSIZE, FSIZE_D, ".d",
286 0, FMOVE, 0, "fmove",
287 0, FMOVECR, 0, "fmovecr",
288 0, FMOVEM, 0, "fmovem",
290 0, FDYADIC, 042, "fadd",
291 0, FDYADIC, 070, "fcmp",
292 0, FDYADIC, 040, "fdiv",
293 0, FDYADIC, 041, "fmod",
294 0, FDYADIC, 043, "fmul",
295 0, FDYADIC, 045, "frem",
296 0, FDYADIC, 046, "fscale",
297 0, FDYADIC, 044, "fsgldiv",
298 0, FDYADIC, 047, "fsglmul",
299 0, FDYADIC, 050, "fsub",
301 0, FMONADIC, 030, "fabs",
302 0, FMONADIC, 034, "facos",
303 0, FMONADIC, 014, "fasin",
304 0, FMONADIC, 012, "fatan",
305 0, FMONADIC, 015, "fatanh",
306 0, FMONADIC, 035, "fcos",
307 0, FMONADIC, 031, "fcosh",
308 0, FMONADIC, 020, "fetox",
309 0, FMONADIC, 010, "fetoxm1",
310 0, FMONADIC, 036, "fgetexp",
311 0, FMONADIC, 037, "fgetman",
312 0, FMONADIC, 001, "fint",
313 0, FMONADIC, 003, "fintrz",
314 0, FMONADIC, 024, "flogn",
315 0, FMONADIC, 006, "flognp1",
316 0, FMONADIC, 025, "flog10",
317 0, FMONADIC, 026, "flog2",
318 0, FMONADIC, 032, "fneg",
319 0, FMONADIC, 016, "fsin",
320 0, FMONADIC, 002, "fsinh",
321 0, FMONADIC, 004, "fsqrt",
322 0, FMONADIC, 017, "ftan",
323 0, FMONADIC, 011, "ftanh",
324 0, FMONADIC, 022, "ftentox",
325 0, FMONADIC, 021, "ftwotox",
327 0, FSINCOS, 060, "fsincos",
329 0, FBCC, 001, "fbeq",
330 0, FBCC, 016, "fbne",
331 0, FBCC, 022, "fbgt",
332 0, FBCC, 035, "fbngt",
333 0, FBCC, 023, "fbge",
334 0, FBCC, 034, "fbnge",
335 0, FBCC, 024, "fblt",
336 0, FBCC, 033, "fbnlt",
337 0, FBCC, 025, "fble",
338 0, FBCC, 032, "fbnle",
339 0, FBCC, 026, "fbgl",
340 0, FBCC, 031, "fbngl",
341 0, FBCC, 027, "fbgle",
342 0, FBCC, 030, "fbngle",
343 0, FBCC, 002, "fbogt",
344 0, FBCC, 015, "fbule",
345 0, FBCC, 003, "fboge",
346 0, FBCC, 014, "fbult",
347 0, FBCC, 004, "fbolt",
348 0, FBCC, 013, "fbuge",
349 0, FBCC, 005, "fbole",
350 0, FBCC, 012, "fbugt",
351 0, FBCC, 006, "fbogl",
352 0, FBCC, 011, "fbueq",
353 0, FBCC, 007, "fbor",
354 0, FBCC, 010, "fbun",
357 0, FBCC, 020, "fbsf",
358 0, FBCC, 037, "fbst",
359 0, FBCC, 021, "fbseq",
360 0, FBCC, 036, "fbsne",
362 0, FDBCC, 001, "fdbeq",
363 0, FDBCC, 016, "fdbne",
364 0, FDBCC, 022, "fdbgt",
365 0, FDBCC, 035, "fdbngt",
366 0, FDBCC, 023, "fdbge",
367 0, FDBCC, 034, "fdbnge",
368 0, FDBCC, 024, "fdblt",
369 0, FDBCC, 033, "fdbnlt",
370 0, FDBCC, 025, "fdble",
371 0, FDBCC, 032, "fdbnle",
372 0, FDBCC, 026, "fdbgl",
373 0, FDBCC, 031, "fdbngl",
374 0, FDBCC, 027, "fdbgle",
375 0, FDBCC, 030, "fdbngle",
376 0, FDBCC, 002, "fdbogt",
377 0, FDBCC, 015, "fdbule",
378 0, FDBCC, 003, "fdboge",
379 0, FDBCC, 014, "fdbult",
380 0, FDBCC, 004, "fdbolt",
381 0, FDBCC, 013, "fdbuge",
382 0, FDBCC, 005, "fdbole",
383 0, FDBCC, 012, "fdbugt",
384 0, FDBCC, 006, "fdbogl",
385 0, FDBCC, 011, "fdbueq",
386 0, FDBCC, 007, "fdbor",
387 0, FDBCC, 010, "fdbun",
388 0, FDBCC, 000, "fdbf",
389 0, FDBCC, 017, "fdbt",
390 0, FDBCC, 020, "fdbsf",
391 0, FDBCC, 037, "fdbst",
392 0, FDBCC, 021, "fdbseq",
393 0, FDBCC, 036, "fdbsne",
397 0, FSCC, 001, "fseq",
398 0, FSCC, 016, "fsne",
399 0, FSCC, 022, "fsgt",
400 0, FSCC, 035, "fsngt",
401 0, FSCC, 023, "fsge",
402 0, FSCC, 034, "fsnge",
403 0, FSCC, 024, "fslt",
404 0, FSCC, 033, "fsnlt",
405 0, FSCC, 025, "fsle",
406 0, FSCC, 032, "fsnle",
407 0, FSCC, 026, "fsgl",
408 0, FSCC, 031, "fsngl",
409 0, FSCC, 027, "fsgle",
410 0, FSCC, 030, "fsngle",
411 0, FSCC, 002, "fsogt",
412 0, FSCC, 015, "fsule",
413 0, FSCC, 003, "fsoge",
414 0, FSCC, 014, "fsult",
415 0, FSCC, 004, "fsolt",
416 0, FSCC, 013, "fsuge",
417 0, FSCC, 005, "fsole",
418 0, FSCC, 012, "fsugt",
419 0, FSCC, 006, "fsogl",
420 0, FSCC, 011, "fsueq",
421 0, FSCC, 007, "fsor",
422 0, FSCC, 010, "fsun",
425 0, FSCC, 020, "fssf",
426 0, FSCC, 037, "fsst",
427 0, FSCC, 021, "fsseq",
428 0, FSCC, 036, "fssne",
432 0, FSAVRES, MEM|ALT|0430, "fsave",
433 0, FSAVRES, MEM|0540, "frestore",
435 0, FTRAPCC, 001, "ftrapeq",
436 0, FTRAPCC, 016, "ftrapne",
437 0, FTRAPCC, 022, "ftrapgt",
438 0, FTRAPCC, 035, "ftrapngt",
439 0, FTRAPCC, 023, "ftrapge",
440 0, FTRAPCC, 034, "ftrapnge",
441 0, FTRAPCC, 024, "ftraplt",
442 0, FTRAPCC, 033, "ftrapnlt",
443 0, FTRAPCC, 025, "ftraple",
444 0, FTRAPCC, 032, "ftrapnle",
445 0, FTRAPCC, 026, "ftrapgl",
446 0, FTRAPCC, 031, "ftrapngl",
447 0, FTRAPCC, 027, "ftrapgle",
448 0, FTRAPCC, 030, "ftrapngle",
449 0, FTRAPCC, 002, "ftrapogt",
450 0, FTRAPCC, 015, "ftrapule",
451 0, FTRAPCC, 003, "ftrapoge",
452 0, FTRAPCC, 014, "ftrapult",
453 0, FTRAPCC, 004, "ftrapolt",
454 0, FTRAPCC, 013, "ftrapuge",
455 0, FTRAPCC, 005, "ftrapole",
456 0, FTRAPCC, 012, "ftrapugt",
457 0, FTRAPCC, 006, "ftrapogl",
458 0, FTRAPCC, 011, "ftrapueq",
459 0, FTRAPCC, 007, "ftrapor",
460 0, FTRAPCC, 010, "ftrapun",
461 0, FTRAPCC, 000, "ftrapf",
462 0, FTRAPCC, 017, "ftrapt",
463 0, FTRAPCC, 020, "ftrapsf",
464 0, FTRAPCC, 037, "ftrapst",
465 0, FTRAPCC, 021, "ftrapseq",
466 0, FTRAPCC, 036, "ftrapsne",