9.out.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  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. /*
  10. * powerpc 64
  11. */
  12. #define NSNAME 8
  13. #define NSYM 50
  14. #define NREG 32
  15. #define NOPROF (1<<0)
  16. #define DUPOK (1<<1)
  17. enum
  18. {
  19. REGZERO = 0, /* set to zero */
  20. REGSP = 1,
  21. REGSB = 2,
  22. REGRET = 3,
  23. REGARG = 3,
  24. REGMIN = 7, /* register variables allocated from here to REGMAX */
  25. REGMAX = 27,
  26. REGEXT = 30, /* external registers allocated from here down */
  27. REGTMP = 31, /* used by the linker */
  28. FREGRET = 0,
  29. FREGMIN = 17, /* first register variable */
  30. FREGEXT = 26, /* first external register */
  31. FREGCVI = 27, /* floating conversion constant */
  32. FREGZERO = 28, /* both float and double */
  33. FREGHALF = 29, /* double */
  34. FREGONE = 30, /* double */
  35. FREGTWO = 31 /* double */
  36. /*
  37. * GENERAL:
  38. *
  39. * compiler allocates R3 up as temps
  40. * compiler allocates register variables R7-R27
  41. * compiler allocates external registers R30 down
  42. *
  43. * compiler allocates register variables F17-F26
  44. * compiler allocates external registers F26 down
  45. */
  46. };
  47. enum as
  48. {
  49. AXXX = 0,
  50. AADD,
  51. AADDCC,
  52. AADDV,
  53. AADDVCC,
  54. AADDC,
  55. AADDCCC,
  56. AADDCV,
  57. AADDCVCC,
  58. AADDME,
  59. AADDMECC,
  60. AADDMEVCC,
  61. AADDMEV,
  62. AADDE,
  63. AADDECC,
  64. AADDEVCC,
  65. AADDEV,
  66. AADDZE,
  67. AADDZECC,
  68. AADDZEVCC,
  69. AADDZEV,
  70. AAND,
  71. AANDCC,
  72. AANDN,
  73. AANDNCC,
  74. ABC,
  75. ABCL,
  76. ABEQ,
  77. ABGE,
  78. ABGT,
  79. ABL,
  80. ABLE,
  81. ABLT,
  82. ABNE,
  83. ABR,
  84. ABVC,
  85. ABVS,
  86. ACMP,
  87. ACMPU,
  88. ACNTLZW,
  89. ACNTLZWCC,
  90. ACRAND,
  91. ACRANDN,
  92. ACREQV,
  93. ACRNAND,
  94. ACRNOR,
  95. ACROR,
  96. ACRORN,
  97. ACRXOR,
  98. ADIVW,
  99. ADIVWCC,
  100. ADIVWVCC,
  101. ADIVWV,
  102. ADIVWU,
  103. ADIVWUCC,
  104. ADIVWUVCC,
  105. ADIVWUV,
  106. AEQV,
  107. AEQVCC,
  108. AEXTSB,
  109. AEXTSBCC,
  110. AEXTSH,
  111. AEXTSHCC,
  112. AFABS,
  113. AFABSCC,
  114. AFADD,
  115. AFADDCC,
  116. AFADDS,
  117. AFADDSCC,
  118. AFCMPO,
  119. AFCMPU,
  120. AFCTIW,
  121. AFCTIWCC,
  122. AFCTIWZ,
  123. AFCTIWZCC,
  124. AFDIV,
  125. AFDIVCC,
  126. AFDIVS,
  127. AFDIVSCC,
  128. AFMADD,
  129. AFMADDCC,
  130. AFMADDS,
  131. AFMADDSCC,
  132. AFMOVD,
  133. AFMOVDCC,
  134. AFMOVDU,
  135. AFMOVS,
  136. AFMOVSU,
  137. AFMSUB,
  138. AFMSUBCC,
  139. AFMSUBS,
  140. AFMSUBSCC,
  141. AFMUL,
  142. AFMULCC,
  143. AFMULS,
  144. AFMULSCC,
  145. AFNABS,
  146. AFNABSCC,
  147. AFNEG,
  148. AFNEGCC,
  149. AFNMADD,
  150. AFNMADDCC,
  151. AFNMADDS,
  152. AFNMADDSCC,
  153. AFNMSUB,
  154. AFNMSUBCC,
  155. AFNMSUBS,
  156. AFNMSUBSCC,
  157. AFRSP,
  158. AFRSPCC,
  159. AFSUB,
  160. AFSUBCC,
  161. AFSUBS,
  162. AFSUBSCC,
  163. AMOVMW,
  164. ALSW,
  165. ALWAR,
  166. AMOVWBR,
  167. AMOVB,
  168. AMOVBU,
  169. AMOVBZ,
  170. AMOVBZU,
  171. AMOVH,
  172. AMOVHBR,
  173. AMOVHU,
  174. AMOVHZ,
  175. AMOVHZU,
  176. AMOVW,
  177. AMOVWU,
  178. AMOVFL,
  179. AMOVCRFS,
  180. AMTFSB0,
  181. AMTFSB0CC,
  182. AMTFSB1,
  183. AMTFSB1CC,
  184. AMULHW,
  185. AMULHWCC,
  186. AMULHWU,
  187. AMULHWUCC,
  188. AMULLW,
  189. AMULLWCC,
  190. AMULLWVCC,
  191. AMULLWV,
  192. ANAND,
  193. ANANDCC,
  194. ANEG,
  195. ANEGCC,
  196. ANEGVCC,
  197. ANEGV,
  198. ANOR,
  199. ANORCC,
  200. AOR,
  201. AORCC,
  202. AORN,
  203. AORNCC,
  204. AREM,
  205. AREMCC,
  206. AREMV,
  207. AREMVCC,
  208. AREMU,
  209. AREMUCC,
  210. AREMUV,
  211. AREMUVCC,
  212. ARFI,
  213. ARLWMI,
  214. ARLWMICC,
  215. ARLWNM,
  216. ARLWNMCC,
  217. ASLW,
  218. ASLWCC,
  219. ASRW,
  220. ASRAW,
  221. ASRAWCC,
  222. ASRWCC,
  223. ASTSW,
  224. ASTWCCC,
  225. ASUB,
  226. ASUBCC,
  227. ASUBVCC,
  228. ASUBC,
  229. ASUBCCC,
  230. ASUBCV,
  231. ASUBCVCC,
  232. ASUBME,
  233. ASUBMECC,
  234. ASUBMEVCC,
  235. ASUBMEV,
  236. ASUBV,
  237. ASUBE,
  238. ASUBECC,
  239. ASUBEV,
  240. ASUBEVCC,
  241. ASUBZE,
  242. ASUBZECC,
  243. ASUBZEVCC,
  244. ASUBZEV,
  245. ASYNC,
  246. AXOR,
  247. AXORCC,
  248. ADCBF,
  249. ADCBI,
  250. ADCBST,
  251. ADCBT,
  252. ADCBTST,
  253. ADCBZ,
  254. AECIWX,
  255. AECOWX,
  256. AEIEIO,
  257. AICBI,
  258. AISYNC,
  259. APTESYNC,
  260. ATLBIE,
  261. ATLBIEL,
  262. ATLBSYNC,
  263. ATW,
  264. ASYSCALL,
  265. ADATA,
  266. AGLOBL,
  267. AGOK,
  268. AHISTORY,
  269. ANAME,
  270. ANOP,
  271. ARETURN,
  272. ATEXT,
  273. AWORD,
  274. AEND,
  275. ADYNT,
  276. AINIT,
  277. ASIGNAME,
  278. ARFCI,
  279. /* optional on 32-bit */
  280. AFRES,
  281. AFRESCC,
  282. AFRSQRTE,
  283. AFRSQRTECC,
  284. AFSEL,
  285. AFSELCC,
  286. AFSQRT,
  287. AFSQRTCC,
  288. AFSQRTS,
  289. AFSQRTSCC,
  290. /* 64-bit */
  291. ACNTLZD,
  292. ACNTLZDCC,
  293. ACMPW, /* CMP with L=0 */
  294. ACMPWU,
  295. ADIVD,
  296. ADIVDCC,
  297. ADIVDVCC,
  298. ADIVDV,
  299. ADIVDU,
  300. ADIVDUCC,
  301. ADIVDUVCC,
  302. ADIVDUV,
  303. AEXTSW,
  304. AEXTSWCC,
  305. /* AFCFIW; AFCFIWCC */
  306. AFCFID,
  307. AFCFIDCC,
  308. AFCTID,
  309. AFCTIDCC,
  310. AFCTIDZ,
  311. AFCTIDZCC,
  312. ALDAR,
  313. AMOVD,
  314. AMOVDU,
  315. AMOVWZ,
  316. AMOVWZU,
  317. AMULHD,
  318. AMULHDCC,
  319. AMULHDU,
  320. AMULHDUCC,
  321. AMULLD,
  322. AMULLDCC,
  323. AMULLDVCC,
  324. AMULLDV,
  325. ARFID,
  326. ARLDMI,
  327. ARLDMICC,
  328. ARLDC,
  329. ARLDCCC,
  330. ARLDCR,
  331. ARLDCRCC,
  332. ARLDCL,
  333. ARLDCLCC,
  334. ASLBIA,
  335. ASLBIE,
  336. ASLBMFEE,
  337. ASLBMFEV,
  338. ASLBMTE,
  339. ASLD,
  340. ASLDCC,
  341. ASRD,
  342. ASRAD,
  343. ASRADCC,
  344. ASRDCC,
  345. ASTDCCC,
  346. ATD,
  347. /* 64-bit pseudo operation */
  348. ADWORD,
  349. AREMD,
  350. AREMDCC,
  351. AREMDV,
  352. AREMDVCC,
  353. AREMDU,
  354. AREMDUCC,
  355. AREMDUV,
  356. AREMDUVCC,
  357. /* more 64-bit operations */
  358. AHRFID,
  359. ALAST
  360. };
  361. /* type/name */
  362. enum
  363. {
  364. D_GOK = 0,
  365. D_NONE,
  366. /* name */
  367. D_EXTERN,
  368. D_STATIC,
  369. D_AUTO,
  370. D_PARAM,
  371. /* type */
  372. D_BRANCH,
  373. D_OREG,
  374. D_CONST,
  375. D_FCONST,
  376. D_SCONST,
  377. D_REG,
  378. D_FPSCR,
  379. D_MSR,
  380. D_FREG,
  381. D_CREG,
  382. D_SPR,
  383. D_OPT, /* branch/trap option */
  384. D_FILE,
  385. D_FILE1,
  386. D_DCR, /* device control register */
  387. D_DCONST,
  388. /* reg names iff type is D_SPR */
  389. D_XER = 1,
  390. D_LR = 8,
  391. D_CTR = 9
  392. /* and many supervisor level registers */
  393. };
  394. /*
  395. * this is the ranlib header
  396. */
  397. #define SYMDEF "__.SYMDEF"
  398. /*
  399. * this is the simulated IEEE floating point
  400. */
  401. typedef struct ieee Ieee;
  402. struct ieee
  403. {
  404. long l; /* contains ls-man 0xffffffff */
  405. long h; /* contains sign 0x80000000
  406. exp 0x7ff00000
  407. ms-man 0x000fffff */
  408. };