mach3.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /* $Id$ */
  2. /*
  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".
  5. */
  6. /*
  7. * Motorola 68020 keywords
  8. */
  9. 0, SIZE, SIZE_B, ".b",
  10. 0, SIZE, SIZE_W, ".w",
  11. 0, SIZE, SIZE_L, ".l",
  12. 0, DREG, 00, "d0",
  13. 0, DREG, 01, "d1",
  14. 0, DREG, 02, "d2",
  15. 0, DREG, 03, "d3",
  16. 0, DREG, 04, "d4",
  17. 0, DREG, 05, "d5",
  18. 0, DREG, 06, "d6",
  19. 0, DREG, 07, "d7",
  20. 0, AREG, 00, "a0",
  21. 0, AREG, 01, "a1",
  22. 0, AREG, 02, "a2",
  23. 0, AREG, 03, "a3",
  24. 0, AREG, 04, "a4",
  25. 0, AREG, 05, "a5",
  26. 0, AREG, 06, "a6",
  27. 0, AREG, 07, "a7",
  28. 0, AREG, 07, "sp",
  29. 0, PC, 0, "pc",
  30. 0, PC, 0200, "zpc",
  31. 0, CREG, 04001, "vbr",
  32. 0, CREG, 0, "sfc",
  33. 0, CREG, 00001, "dfc",
  34. 0, CREG, 00002, "cacr",
  35. 0, CREG, 04002, "caar",
  36. 0, CREG, 04003, "msp",
  37. 0, CREG, 04004, "isp",
  38. 0, SPEC, 075, "usp",
  39. 0, SPEC, 076, "ccr",
  40. 0, SPEC, 077, "sr",
  41. 0, ABCD, 0140400, "abcd",
  42. 0, ABCD, 0100400, "sbcd",
  43. 0, ADDX, 0150400, "addx",
  44. 0, ADDX, 0110400, "subx",
  45. 0, ADD, 0153300, "add",
  46. 0, ADD, 0112700, "sub",
  47. 0, AND, 0141000, "and",
  48. 0, AND, 0135000, "eor",
  49. 0, AND, 0100000, "or",
  50. 0, BITOP, 0000, "btst",
  51. 0, BITOP, 0100, "bchg",
  52. 0, BITOP, 0200, "bclr",
  53. 0, BITOP, 0300, "bset",
  54. 0, BITFIELD, 0164300, "bftst",
  55. 0, BITFIELD, 0165300, "bfchg",
  56. 0, BITFIELD, 0166300, "bfclr",
  57. 0, BITFIELD, 0167300, "bfset",
  58. 0, BF_TO_D, 0164700, "bfextu",
  59. 0, BF_TO_D, 0164700, "bfexts",
  60. 0, BF_TO_D, 0164700, "bfffo",
  61. 0, BFINS, 0167700, "bfins",
  62. 0, SHIFT, 0160340, "asr",
  63. 0, SHIFT, 0160740, "asl",
  64. 0, SHIFT, 0161350, "lsr",
  65. 0, SHIFT, 0161750, "lsl",
  66. 0, SHIFT, 0162360, "roxr",
  67. 0, SHIFT, 0162760, "roxl",
  68. 0, SHIFT, 0163370, "ror",
  69. 0, SHIFT, 0163770, "rol",
  70. 0, SZ_EA, 041000|DTA|ALT, "clr",
  71. 0, SZ_EA, 042000|DTA|ALT, "neg",
  72. 0, SZ_EA, 040000|DTA|ALT, "negx",
  73. 0, SZ_EA, 043000|DTA|ALT, "not",
  74. 0, SZ_EA, 045000, "tst",
  75. 0, OP_EA, 044000|DTA|ALT, "nbcd",
  76. 0, OP_EA, 045300|DTA|ALT, "tas",
  77. 0, OP_EA, 047200|CTR, "jsr",
  78. 0, OP_EA, 047300|CTR, "jmp",
  79. 0, OP_EA, 044100|CTR, "pea",
  80. 0, OP_EA, 050300, "st",
  81. 0, OP_EA, 050700, "sf",
  82. 0, OP_EA, 051300, "shi",
  83. 0, OP_EA, 051700, "sls",
  84. 0, OP_EA, 052300, "scc",
  85. 0, OP_EA, 052700, "scs",
  86. 0, OP_EA, 053300, "sne",
  87. 0, OP_EA, 053700, "seq",
  88. 0, OP_EA, 054300, "svc",
  89. 0, OP_EA, 054700, "svs",
  90. 0, OP_EA, 055300, "spl",
  91. 0, OP_EA, 055700, "smi",
  92. 0, OP_EA, 056300, "sge",
  93. 0, OP_EA, 056700, "slt",
  94. 0, OP_EA, 057300, "sgt",
  95. 0, OP_EA, 057700, "sle",
  96. 0, OP_NOOP, 047160, "reset",
  97. 0, OP_NOOP, 047161, "nop",
  98. 0, OP_NOOP, 047163, "rte",
  99. 0, OP_NOOP, 047165, "rts",
  100. 0, OP_NOOP, 047166, "trapv",
  101. 0, OP_NOOP, 047167, "rtr",
  102. 0, OP_NOOP, 045374, "illegal",
  103. 0, PACK, 0100500, "pack",
  104. 0, PACK, 0100600, "unpk",
  105. 0, DIVMUL, 0100, "divu",
  106. 0, DIVMUL, 0101, "divs",
  107. 0, DIVMUL, 0000, "mulu",
  108. 0, DIVMUL, 0001, "muls",
  109. 0, DIVL, 046100, "divul",
  110. 0, DIVL, 046101, "divsl",
  111. 0, BR, 060000, "bra",
  112. 0, BR, 060400, "bsr",
  113. 0, BR, 061000, "bhi",
  114. 0, BR, 061400, "bls",
  115. 0, BR, 062000, "bcc",
  116. 0, BR, 062400, "bcs",
  117. 0, BR, 063000, "bne",
  118. 0, BR, 063400, "beq",
  119. 0, BR, 064000, "bvc",
  120. 0, BR, 064400, "bvs",
  121. 0, BR, 065000, "bpl",
  122. 0, BR, 065400, "bmi",
  123. 0, BR, 066000, "bge",
  124. 0, BR, 066400, "blt",
  125. 0, BR, 067000, "bgt",
  126. 0, BR, 067400, "ble",
  127. 0, DBR, 050310, "dbt",
  128. 0, DBR, 050710, "dbf",
  129. 0, DBR, 050710, "dbra",
  130. 0, DBR, 051310, "dbhi",
  131. 0, DBR, 051710, "dbls",
  132. 0, DBR, 052310, "dbcc",
  133. 0, DBR, 052710, "dbcs",
  134. 0, DBR, 053310, "dbne",
  135. 0, DBR, 053710, "dbeq",
  136. 0, DBR, 054310, "dbvc",
  137. 0, DBR, 054710, "dbvs",
  138. 0, DBR, 055310, "dbpl",
  139. 0, DBR, 055710, "dbmi",
  140. 0, DBR, 056310, "dbge",
  141. 0, DBR, 056710, "dblt",
  142. 0, DBR, 057310, "dbgt",
  143. 0, DBR, 057710, "dble",
  144. 0, OP_EXT, 044000, "ext",
  145. 0, OP_EXT, 044400, "extb",
  146. 0, OP_RANGE, 04000, "chk2",
  147. 0, OP_RANGE, 0, "cmp2",
  148. 0, TRAPCC, 050370, "trapt",
  149. 0, TRAPCC, 050770, "trapf",
  150. 0, TRAPCC, 051370, "traphi",
  151. 0, TRAPCC, 051770, "trapls",
  152. 0, TRAPCC, 052370, "trapcc",
  153. 0, TRAPCC, 052770, "trapcs",
  154. 0, TRAPCC, 053370, "trapeq",
  155. 0, TRAPCC, 053770, "trapvc",
  156. 0, TRAPCC, 054370, "trapvs",
  157. 0, TRAPCC, 054770, "trappl",
  158. 0, TRAPCC, 055370, "trapmi",
  159. 0, TRAPCC, 055770, "trapge",
  160. 0, TRAPCC, 056370, "traplt",
  161. 0, TRAPCC, 056770, "trapgt",
  162. 0, TRAPCC, 057370, "traple",
  163. 0, TRAPCC, 057770, "trapne",
  164. 0, CMP, 0, "cmp",
  165. 0, MOVE, 0, "move",
  166. 0, MOVESP, 0, "movep",
  167. 0, MOVEM, 0, "movem",
  168. 0, MOVESP, 1, "moves",
  169. 0, MOVEC, 0, "movec",
  170. 0, SWAP, 0, "swap",
  171. 0, LINK, 0, "link",
  172. 0, UNLK, 0, "unlk",
  173. 0, TRAP, 0, "trap",
  174. 0, OP_IMM, 047162, "stop",
  175. 0, CHK, 0, "chk",
  176. 0, RTM, 0, "rtm",
  177. 0, EXG, 0, "exg",
  178. 0, LEA, 0, "lea",
  179. 0, OP_IMM, 047164, "rtd",
  180. 0, BKPT, 0, "bkpt",
  181. 0, CALLM, 0, "callm",
  182. 0, CAS, 0, "cas",
  183. 0, CAS2, 0, "cas2",
  184. 0, CP, 00000, "c0",
  185. 0, CP, 01000, "c1",
  186. 0, CP, 02000, "c2",
  187. 0, CP, 03000, "c3",
  188. 0, CP, 04000, "c4",
  189. 0, CP, 05000, "c5",
  190. 0, CP, 06000, "c6",
  191. 0, CP, 07000, "c7",
  192. /* ???? what is this ???? */
  193. 0, CPGEN, 0170000, ".gen",
  194. 0, CPSCC, 0170100, ".s",
  195. 0, CPDBCC, 0170110, ".db",
  196. 0, CPTRAPCC, 0170170, ".trap",
  197. 0, CPBCC, 0170200, ".br", /* 'r' to distinguish from SIZE_B
  198. */
  199. 0, CPSAVREST, 0170400, ".save",
  200. 0, CPSAVREST, 0170500, ".restore",
  201. /* ???? end of what is this ???? */
  202. /* M68030 MMU registers */
  203. 0, MREG, 0040000, "tc",
  204. 0, MREG, 0044000, "srp",
  205. 0, MREG, 0046000, "crp",
  206. 0, MREG, 0060000, "mmusr",
  207. 0, MREG, 0060000, "psr",
  208. 0, MREG, 0004000, "tt0",
  209. 0, MREG, 0006000, "tt1",
  210. /* M68030 MMU instructions */
  211. 0, PFLUSHA, 0022000, "pflusha",
  212. 0, PFLUSH, 0020000, "pflush",
  213. 0, PLOAD, 0021000, "ploadr",
  214. 0, PLOAD, 0020000, "ploadw",
  215. 0, PTEST, 0101000, "ptestr",
  216. 0, PTEST, 0100000, "ptestw",
  217. 0, PMOVE, 0000000, "pmove",
  218. 0, PMOVE, 0000400, "pmovefd",
  219. /* floating point coprocessor ... */
  220. 0, FSIZE, FSIZE_S, ".s",
  221. 0, FSIZE, FSIZE_X, ".x",
  222. 0, FSIZE, FSIZE_P, ".p",
  223. 0, FSIZE, FSIZE_D, ".d",
  224. 0, FPREG, 0, "fp0",
  225. 0, FPREG, 1, "fp1",
  226. 0, FPREG, 2, "fp2",
  227. 0, FPREG, 3, "fp3",
  228. 0, FPREG, 4, "fp4",
  229. 0, FPREG, 5, "fp5",
  230. 0, FPREG, 6, "fp6",
  231. 0, FPREG, 7, "fp7",
  232. 0, FPCR, 1, "fpiar",
  233. 0, FPCR, 2, "fpsr",
  234. 0, FPCR, 4, "fpcr",
  235. 0, FMOVE, 0, "fmove",
  236. 0, FMOVECR, 0, "fmovecr",
  237. 0, FMOVEM, 0, "fmovem",
  238. 0, FDYADIC, 042, "fadd",
  239. 0, FDYADIC, 070, "fcmp",
  240. 0, FDYADIC, 040, "fdiv",
  241. 0, FDYADIC, 041, "fmod",
  242. 0, FDYADIC, 043, "fmul",
  243. 0, FDYADIC, 045, "frem",
  244. 0, FDYADIC, 046, "fscale",
  245. 0, FDYADIC, 044, "fsgldiv",
  246. 0, FDYADIC, 047, "fsglmul",
  247. 0, FDYADIC, 050, "fsub",
  248. 0, FMONADIC, 030, "fabs",
  249. 0, FMONADIC, 034, "facos",
  250. 0, FMONADIC, 014, "fasin",
  251. 0, FMONADIC, 012, "fatan",
  252. 0, FMONADIC, 015, "fatanh",
  253. 0, FMONADIC, 035, "fcos",
  254. 0, FMONADIC, 031, "fcosh",
  255. 0, FMONADIC, 020, "fetox",
  256. 0, FMONADIC, 010, "fetoxm1",
  257. 0, FMONADIC, 036, "fgetexp",
  258. 0, FMONADIC, 037, "fgetman",
  259. 0, FMONADIC, 001, "fint",
  260. 0, FMONADIC, 003, "fintrz",
  261. 0, FMONADIC, 024, "flogn",
  262. 0, FMONADIC, 006, "flognp1",
  263. 0, FMONADIC, 025, "flog10",
  264. 0, FMONADIC, 026, "flog2",
  265. 0, FMONADIC, 032, "fneg",
  266. 0, FMONADIC, 016, "fsin",
  267. 0, FMONADIC, 002, "fsinh",
  268. 0, FMONADIC, 004, "fsqrt",
  269. 0, FMONADIC, 017, "ftan",
  270. 0, FMONADIC, 011, "ftanh",
  271. 0, FMONADIC, 022, "ftentox",
  272. 0, FMONADIC, 021, "ftwotox",
  273. 0, FSINCOS, 060, "fsincos",
  274. 0, FBCC, 001, "fbeq",
  275. 0, FBCC, 016, "fbne",
  276. 0, FBCC, 022, "fbgt",
  277. 0, FBCC, 035, "fbngt",
  278. 0, FBCC, 023, "fbge",
  279. 0, FBCC, 034, "fbnge",
  280. 0, FBCC, 024, "fblt",
  281. 0, FBCC, 033, "fbnlt",
  282. 0, FBCC, 025, "fble",
  283. 0, FBCC, 032, "fbnle",
  284. 0, FBCC, 026, "fbgl",
  285. 0, FBCC, 031, "fbngl",
  286. 0, FBCC, 027, "fbgle",
  287. 0, FBCC, 030, "fbngle",
  288. 0, FBCC, 002, "fbogt",
  289. 0, FBCC, 015, "fbule",
  290. 0, FBCC, 003, "fboge",
  291. 0, FBCC, 014, "fbult",
  292. 0, FBCC, 004, "fbolt",
  293. 0, FBCC, 013, "fbuge",
  294. 0, FBCC, 005, "fbole",
  295. 0, FBCC, 012, "fbugt",
  296. 0, FBCC, 006, "fbogl",
  297. 0, FBCC, 011, "fbueq",
  298. 0, FBCC, 007, "fbor",
  299. 0, FBCC, 010, "fbun",
  300. 0, FBCC, 000, "fbf",
  301. 0, FBCC, 017, "fbt",
  302. 0, FBCC, 020, "fbsf",
  303. 0, FBCC, 037, "fbst",
  304. 0, FBCC, 021, "fbseq",
  305. 0, FBCC, 036, "fbsne",
  306. 0, FDBCC, 001, "fdbeq",
  307. 0, FDBCC, 016, "fdbne",
  308. 0, FDBCC, 022, "fdbgt",
  309. 0, FDBCC, 035, "fdbngt",
  310. 0, FDBCC, 023, "fdbge",
  311. 0, FDBCC, 034, "fdbnge",
  312. 0, FDBCC, 024, "fdblt",
  313. 0, FDBCC, 033, "fdbnlt",
  314. 0, FDBCC, 025, "fdble",
  315. 0, FDBCC, 032, "fdbnle",
  316. 0, FDBCC, 026, "fdbgl",
  317. 0, FDBCC, 031, "fdbngl",
  318. 0, FDBCC, 027, "fdbgle",
  319. 0, FDBCC, 030, "fdbngle",
  320. 0, FDBCC, 002, "fdbogt",
  321. 0, FDBCC, 015, "fdbule",
  322. 0, FDBCC, 003, "fdboge",
  323. 0, FDBCC, 014, "fdbult",
  324. 0, FDBCC, 004, "fdbolt",
  325. 0, FDBCC, 013, "fdbuge",
  326. 0, FDBCC, 005, "fdbole",
  327. 0, FDBCC, 012, "fdbugt",
  328. 0, FDBCC, 006, "fdbogl",
  329. 0, FDBCC, 011, "fdbueq",
  330. 0, FDBCC, 007, "fdbor",
  331. 0, FDBCC, 010, "fdbun",
  332. 0, FDBCC, 000, "fdbf",
  333. 0, FDBCC, 017, "fdbt",
  334. 0, FDBCC, 020, "fdbsf",
  335. 0, FDBCC, 037, "fdbst",
  336. 0, FDBCC, 021, "fdbseq",
  337. 0, FDBCC, 036, "fdbsne",
  338. 0, FNOP, 0, "fnop",
  339. 0, FSCC, 001, "fseq",
  340. 0, FSCC, 016, "fsne",
  341. 0, FSCC, 022, "fsgt",
  342. 0, FSCC, 035, "fsngt",
  343. 0, FSCC, 023, "fsge",
  344. 0, FSCC, 034, "fsnge",
  345. 0, FSCC, 024, "fslt",
  346. 0, FSCC, 033, "fsnlt",
  347. 0, FSCC, 025, "fsle",
  348. 0, FSCC, 032, "fsnle",
  349. 0, FSCC, 026, "fsgl",
  350. 0, FSCC, 031, "fsngl",
  351. 0, FSCC, 027, "fsgle",
  352. 0, FSCC, 030, "fsngle",
  353. 0, FSCC, 002, "fsogt",
  354. 0, FSCC, 015, "fsule",
  355. 0, FSCC, 003, "fsoge",
  356. 0, FSCC, 014, "fsult",
  357. 0, FSCC, 004, "fsolt",
  358. 0, FSCC, 013, "fsuge",
  359. 0, FSCC, 005, "fsole",
  360. 0, FSCC, 012, "fsugt",
  361. 0, FSCC, 006, "fsogl",
  362. 0, FSCC, 011, "fsueq",
  363. 0, FSCC, 007, "fsor",
  364. 0, FSCC, 010, "fsun",
  365. 0, FSCC, 000, "fsf",
  366. 0, FSCC, 017, "fst",
  367. 0, FSCC, 020, "fssf",
  368. 0, FSCC, 037, "fsst",
  369. 0, FSCC, 021, "fsseq",
  370. 0, FSCC, 036, "fssne",
  371. 0, FTST, 0, "ftst",
  372. 0, FSAVRES, MEM|ALT|0430, "fsave",
  373. 0, FSAVRES, MEM|0540, "frestore",
  374. 0, FTRAPCC, 001, "ftrapeq",
  375. 0, FTRAPCC, 016, "ftrapne",
  376. 0, FTRAPCC, 022, "ftrapgt",
  377. 0, FTRAPCC, 035, "ftrapngt",
  378. 0, FTRAPCC, 023, "ftrapge",
  379. 0, FTRAPCC, 034, "ftrapnge",
  380. 0, FTRAPCC, 024, "ftraplt",
  381. 0, FTRAPCC, 033, "ftrapnlt",
  382. 0, FTRAPCC, 025, "ftraple",
  383. 0, FTRAPCC, 032, "ftrapnle",
  384. 0, FTRAPCC, 026, "ftrapgl",
  385. 0, FTRAPCC, 031, "ftrapngl",
  386. 0, FTRAPCC, 027, "ftrapgle",
  387. 0, FTRAPCC, 030, "ftrapngle",
  388. 0, FTRAPCC, 002, "ftrapogt",
  389. 0, FTRAPCC, 015, "ftrapule",
  390. 0, FTRAPCC, 003, "ftrapoge",
  391. 0, FTRAPCC, 014, "ftrapult",
  392. 0, FTRAPCC, 004, "ftrapolt",
  393. 0, FTRAPCC, 013, "ftrapuge",
  394. 0, FTRAPCC, 005, "ftrapole",
  395. 0, FTRAPCC, 012, "ftrapugt",
  396. 0, FTRAPCC, 006, "ftrapogl",
  397. 0, FTRAPCC, 011, "ftrapueq",
  398. 0, FTRAPCC, 007, "ftrapor",
  399. 0, FTRAPCC, 010, "ftrapun",
  400. 0, FTRAPCC, 000, "ftrapf",
  401. 0, FTRAPCC, 017, "ftrapt",
  402. 0, FTRAPCC, 020, "ftrapsf",
  403. 0, FTRAPCC, 037, "ftrapst",
  404. 0, FTRAPCC, 021, "ftrapseq",
  405. 0, FTRAPCC, 036, "ftrapsne",