q.out.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. /*
  2. * This file is part of the UCB release of Plan 9. It is subject to the license
  3. * terms in the LICENSE file found in the top-level directory of this
  4. * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
  5. * part of the UCB release of Plan 9, including this file, may be copied,
  6. * modified, propagated, or distributed except according to the terms contained
  7. * in the LICENSE file.
  8. */
  9. #define NSNAME 8
  10. #define NSYM 50
  11. #define NREG 32
  12. #define NOPROF (1<<0)
  13. #define DUPOK (1<<1)
  14. enum
  15. {
  16. REGZERO = 0, /* set to zero */
  17. REGSP = 1,
  18. REGSB = 2,
  19. REGRET = 3,
  20. REGARG = 3,
  21. REGMIN = 7, /* register variables allocated from here to REGMAX */
  22. REGMAX = 27,
  23. REGEXT = 30, /* external registers allocated from here down */
  24. REGTMP = 31, /* used by the linker */
  25. FREGRET = 0,
  26. FREGMIN = 17, /* first register variable */
  27. FREGEXT = 26, /* first external register */
  28. FREGCVI = 27, /* floating conversion constant */
  29. FREGZERO = 28, /* both float and double */
  30. FREGHALF = 29, /* double */
  31. FREGONE = 30, /* double */
  32. FREGTWO = 31 /* double */
  33. /*
  34. * GENERAL:
  35. *
  36. * compiler allocates R3 up as temps
  37. * compiler allocates register variables R7-R27
  38. * compiler allocates external registers R30 down
  39. *
  40. * compiler allocates register variables F17-F26
  41. * compiler allocates external registers F26 down
  42. */
  43. };
  44. enum as
  45. {
  46. AXXX = 0,
  47. AADD,
  48. AADDCC,
  49. AADDV,
  50. AADDVCC,
  51. AADDC,
  52. AADDCCC,
  53. AADDCV,
  54. AADDCVCC,
  55. AADDME,
  56. AADDMECC,
  57. AADDMEVCC,
  58. AADDMEV,
  59. AADDE,
  60. AADDECC,
  61. AADDEVCC,
  62. AADDEV,
  63. AADDZE,
  64. AADDZECC,
  65. AADDZEVCC,
  66. AADDZEV,
  67. AAND,
  68. AANDCC,
  69. AANDN,
  70. AANDNCC,
  71. ABC,
  72. ABCL,
  73. ABEQ,
  74. ABGE,
  75. ABGT,
  76. ABL,
  77. ABLE,
  78. ABLT,
  79. ABNE,
  80. ABR,
  81. ABVC,
  82. ABVS,
  83. ACMP,
  84. ACMPU,
  85. ACNTLZW,
  86. ACNTLZWCC,
  87. ACRAND,
  88. ACRANDN,
  89. ACREQV,
  90. ACRNAND,
  91. ACRNOR,
  92. ACROR,
  93. ACRORN,
  94. ACRXOR,
  95. ADIVW,
  96. ADIVWCC,
  97. ADIVWVCC,
  98. ADIVWV,
  99. ADIVWU,
  100. ADIVWUCC,
  101. ADIVWUVCC,
  102. ADIVWUV,
  103. AEQV,
  104. AEQVCC,
  105. AEXTSB,
  106. AEXTSBCC,
  107. AEXTSH,
  108. AEXTSHCC,
  109. AFABS,
  110. AFABSCC,
  111. AFADD,
  112. AFADDCC,
  113. AFADDS,
  114. AFADDSCC,
  115. AFCMPO,
  116. AFCMPU,
  117. AFCTIW,
  118. AFCTIWCC,
  119. AFCTIWZ,
  120. AFCTIWZCC,
  121. AFDIV,
  122. AFDIVCC,
  123. AFDIVS,
  124. AFDIVSCC,
  125. AFMADD,
  126. AFMADDCC,
  127. AFMADDS,
  128. AFMADDSCC,
  129. AFMOVD,
  130. AFMOVDCC,
  131. AFMOVDU,
  132. AFMOVS,
  133. AFMOVSU,
  134. AFMSUB,
  135. AFMSUBCC,
  136. AFMSUBS,
  137. AFMSUBSCC,
  138. AFMUL,
  139. AFMULCC,
  140. AFMULS,
  141. AFMULSCC,
  142. AFNABS,
  143. AFNABSCC,
  144. AFNEG,
  145. AFNEGCC,
  146. AFNMADD,
  147. AFNMADDCC,
  148. AFNMADDS,
  149. AFNMADDSCC,
  150. AFNMSUB,
  151. AFNMSUBCC,
  152. AFNMSUBS,
  153. AFNMSUBSCC,
  154. AFRSP,
  155. AFRSPCC,
  156. AFSUB,
  157. AFSUBCC,
  158. AFSUBS,
  159. AFSUBSCC,
  160. AMOVMW,
  161. ALSW,
  162. ALWAR,
  163. AMOVWBR,
  164. AMOVB,
  165. AMOVBU,
  166. AMOVBZ,
  167. AMOVBZU,
  168. AMOVH,
  169. AMOVHBR,
  170. AMOVHU,
  171. AMOVHZ,
  172. AMOVHZU,
  173. AMOVW,
  174. AMOVWU,
  175. AMOVFL,
  176. AMOVCRFS,
  177. AMTFSB0,
  178. AMTFSB0CC,
  179. AMTFSB1,
  180. AMTFSB1CC,
  181. AMULHW,
  182. AMULHWCC,
  183. AMULHWU,
  184. AMULHWUCC,
  185. AMULLW,
  186. AMULLWCC,
  187. AMULLWVCC,
  188. AMULLWV,
  189. ANAND,
  190. ANANDCC,
  191. ANEG,
  192. ANEGCC,
  193. ANEGVCC,
  194. ANEGV,
  195. ANOR,
  196. ANORCC,
  197. AOR,
  198. AORCC,
  199. AORN,
  200. AORNCC,
  201. AREM,
  202. AREMCC,
  203. AREMV,
  204. AREMVCC,
  205. AREMU,
  206. AREMUCC,
  207. AREMUV,
  208. AREMUVCC,
  209. ARFI,
  210. ARLWMI,
  211. ARLWMICC,
  212. ARLWNM,
  213. ARLWNMCC,
  214. ASLW,
  215. ASLWCC,
  216. ASRW,
  217. ASRAW,
  218. ASRAWCC,
  219. ASRWCC,
  220. ASTSW,
  221. ASTWCCC,
  222. ASUB,
  223. ASUBCC,
  224. ASUBVCC,
  225. ASUBC,
  226. ASUBCCC,
  227. ASUBCV,
  228. ASUBCVCC,
  229. ASUBME,
  230. ASUBMECC,
  231. ASUBMEVCC,
  232. ASUBMEV,
  233. ASUBV,
  234. ASUBE,
  235. ASUBECC,
  236. ASUBEV,
  237. ASUBEVCC,
  238. ASUBZE,
  239. ASUBZECC,
  240. ASUBZEVCC,
  241. ASUBZEV,
  242. ASYNC,
  243. AXOR,
  244. AXORCC,
  245. ADCBF,
  246. ADCBI,
  247. ADCBST,
  248. ADCBT,
  249. ADCBTST,
  250. ADCBZ,
  251. AECIWX,
  252. AECOWX,
  253. AEIEIO,
  254. AICBI,
  255. AISYNC,
  256. ATLBIE,
  257. ATW,
  258. ASYSCALL,
  259. ADATA,
  260. AGLOBL,
  261. AGOK,
  262. AHISTORY,
  263. ANAME,
  264. ANOP,
  265. ARETURN,
  266. ATEXT,
  267. AWORD,
  268. AEND,
  269. ADYNT,
  270. AINIT,
  271. ASIGNAME,
  272. /* IBM powerpc embedded; not portable */
  273. AMACCHW,
  274. AMACCHWCC,
  275. AMACCHWS,
  276. AMACCHWSCC,
  277. AMACCHWSU,
  278. AMACCHWSUCC,
  279. AMACCHWSUV,
  280. AMACCHWSUVCC,
  281. AMACCHWSV,
  282. AMACCHWSVCC,
  283. AMACCHWU,
  284. AMACCHWUCC,
  285. AMACCHWUV,
  286. AMACCHWUVCC,
  287. AMACCHWV,
  288. AMACCHWVCC,
  289. AMACHHW,
  290. AMACHHWCC,
  291. AMACHHWV,
  292. AMACHHWVCC,
  293. AMACHHWS,
  294. AMACHHWSCC,
  295. AMACHHWSV,
  296. AMACHHWSVCC,
  297. AMACHHWSU,
  298. AMACHHWSUCC,
  299. AMACHHWSUV,
  300. AMACHHWSUVCC,
  301. AMACHHWU,
  302. AMACHHWUCC,
  303. AMACHHWUV,
  304. AMACHHWUVCC,
  305. AMACLHW,
  306. AMACLHWCC,
  307. AMACLHWS,
  308. AMACLHWSCC,
  309. AMACLHWSU,
  310. AMACLHWSUCC,
  311. AMACLHWSUV,
  312. AMACLHWSUVCC,
  313. AMACLHWSV,
  314. AMACLHWSVCC,
  315. AMACLHWU,
  316. AMACLHWUCC,
  317. AMACLHWUV,
  318. AMACLHWUVCC,
  319. AMACLHWV,
  320. AMACLHWVCC,
  321. AMULCHW,
  322. AMULCHWCC,
  323. AMULCHWU,
  324. AMULCHWUCC,
  325. AMULHHW,
  326. AMULHHWCC,
  327. AMULHHWU,
  328. AMULHHWUCC,
  329. AMULLHW,
  330. AMULLHWCC,
  331. AMULLHWU,
  332. AMULLHWUCC,
  333. ANMACCHW,
  334. ANMACCHWCC,
  335. ANMACCHWS,
  336. ANMACCHWSCC,
  337. ANMACCHWSV,
  338. ANMACCHWSVCC,
  339. ANMACCHWV,
  340. ANMACCHWVCC,
  341. ANMACHHW,
  342. ANMACHHWCC,
  343. ANMACHHWS,
  344. ANMACHHWSCC,
  345. ANMACHHWSV,
  346. ANMACHHWSVCC,
  347. ANMACHHWV,
  348. ANMACHHWVCC,
  349. ANMACLHW,
  350. ANMACLHWCC,
  351. ANMACLHWS,
  352. ANMACLHWSCC,
  353. ANMACLHWSV,
  354. ANMACLHWSVCC,
  355. ANMACLHWV,
  356. ANMACLHWVCC,
  357. ARFCI,
  358. /* optional on 32-bit */
  359. AFRES,
  360. AFRESCC,
  361. AFRSQRTE,
  362. AFRSQRTECC,
  363. AFSEL,
  364. AFSELCC,
  365. AFSQRT,
  366. AFSQRTCC,
  367. AFSQRTS,
  368. AFSQRTSCC,
  369. /* parallel, cross, and secondary */
  370. AFPSEL,
  371. AFPMUL,
  372. AFXMUL,
  373. AFXPMUL,
  374. AFXSMUL,
  375. AFPADD,
  376. AFPSUB,
  377. AFPRE,
  378. AFPRSQRTE,
  379. AFPMADD,
  380. AFXMADD,
  381. AFXCPMADD,
  382. AFXCSMADD,
  383. AFPNMADD,
  384. AFXNMADD,
  385. AFXCPNMADD,
  386. AFXCSNMADD,
  387. AFPMSUB,
  388. AFXMSUB,
  389. AFXCPMSUB,
  390. AFXCSMSUB,
  391. AFPNMSUB,
  392. AFXNMSUB,
  393. AFXCPNMSUB,
  394. AFXCSNMSUB,
  395. AFPABS,
  396. AFPNEG,
  397. AFPRSP,
  398. AFPNABS,
  399. AFSCMP,
  400. AFSABS,
  401. AFSNEG,
  402. AFSNABS,
  403. AFPCTIW,
  404. AFPCTIWZ,
  405. AFMOVSPD,
  406. AFMOVPSD,
  407. AFXCPNPMA,
  408. AFXCSNPMA,
  409. AFXCPNSMA,
  410. AFXCSNSMA,
  411. AFXCXNPMA,
  412. AFXCXNSMA,
  413. AFXCXMA,
  414. AFXCXNMS,
  415. /* parallel, cross, and secondary load and store */
  416. AFSMOVS,
  417. AFSMOVSU,
  418. AFSMOVD,
  419. AFSMOVDU,
  420. AFXMOVS,
  421. AFXMOVSU,
  422. AFXMOVD,
  423. AFXMOVDU,
  424. AFPMOVS,
  425. AFPMOVSU,
  426. AFPMOVD,
  427. AFPMOVDU,
  428. AFPMOVIW,
  429. ALAST
  430. };
  431. /* type/name */
  432. enum
  433. {
  434. D_GOK = 0,
  435. D_NONE,
  436. /* name */
  437. D_EXTERN,
  438. D_STATIC,
  439. D_AUTO,
  440. D_PARAM,
  441. /* type */
  442. D_BRANCH,
  443. D_OREG,
  444. D_CONST,
  445. D_FCONST,
  446. D_SCONST,
  447. D_REG,
  448. D_FPSCR,
  449. D_MSR,
  450. D_FREG,
  451. D_CREG,
  452. D_SPR,
  453. D_SREG, /* segment register */
  454. D_OPT, /* branch/trap option */
  455. D_FILE,
  456. D_FILE1,
  457. D_DCR, /* device control register */
  458. /* reg names iff type is D_SPR */
  459. D_XER = 1,
  460. D_LR = 8,
  461. D_CTR = 9
  462. /* and many supervisor level registers */
  463. };
  464. /*
  465. * this is the ranlib header
  466. */
  467. #define SYMDEF "__.SYMDEF"
  468. /*
  469. * this is the simulated IEEE floating point
  470. */
  471. typedef struct ieee Ieee;
  472. struct ieee
  473. {
  474. long l; /* contains ls-man 0xffffffff */
  475. long h; /* contains sign 0x80000000
  476. exp 0x7ff00000
  477. ms-man 0x000fffff */
  478. };