k.out.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  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, /* always zero */
  17. REGSP = 1, /* stack pointer */
  18. REGSB = 2, /* static pointer */
  19. REGSB1 = 3, /* (possible) second static pointer */
  20. REGEXT = 6, /* first external register, grows-- */
  21. REGRET = 7, /* return register and first temp, grows++ */
  22. REGTMP = 14, /* used by the loader */
  23. REGLINK = 15, /* subroutine linkage */
  24. REGARG = 7, /* first arg passed in */
  25. FREGRET = 0,
  26. FREGEXT = 22, /* first external register */
  27. FREGZERO = 24, /* both float and double */
  28. FREGHALF = 26, /* double */
  29. FREGONE = 28, /* double */
  30. FREGTWO = 30 /* double */
  31. /*
  32. * GENERAL:
  33. *
  34. * compiler allocates R7 up as temps
  35. * compiler allocates external registers R6 down
  36. * compiler allocates register variables F4-F22
  37. * compiler allocates external registers F22 down
  38. */
  39. };
  40. enum as
  41. {
  42. AXXX = 0,
  43. AADD,
  44. AADDCC,
  45. AADDX,
  46. AADDXCC,
  47. AAND,
  48. AANDCC,
  49. AANDN,
  50. AANDNCC,
  51. ABA,
  52. ABCC,
  53. ABCS,
  54. ABE,
  55. ABG,
  56. ABGE,
  57. ABGU,
  58. ABL,
  59. ABLE,
  60. ABLEU,
  61. ABN,
  62. ABNE,
  63. ABNEG,
  64. ABPOS,
  65. ABVC,
  66. ABVS,
  67. ACB0,
  68. ACB01,
  69. ACB012,
  70. ACB013,
  71. ACB02,
  72. ACB023,
  73. ACB03,
  74. ACB1,
  75. ACB12,
  76. ACB123,
  77. ACB13,
  78. ACB2,
  79. ACB23,
  80. ACB3,
  81. ACBA,
  82. ACBN,
  83. ACMP, /* pseudo op */
  84. ACPOP1,
  85. ACPOP2,
  86. ADATA,
  87. ADIV,
  88. ADIVL,
  89. AFABSD, /* pseudo op */
  90. AFABSF,
  91. AFABSX, /* pseudo op */
  92. AFADDD,
  93. AFADDF,
  94. AFADDX,
  95. AFBA,
  96. AFBE,
  97. AFBG,
  98. AFBGE,
  99. AFBL,
  100. AFBLE,
  101. AFBLG,
  102. AFBN,
  103. AFBNE,
  104. AFBO,
  105. AFBU,
  106. AFBUE,
  107. AFBUG,
  108. AFBUGE,
  109. AFBUL,
  110. AFBULE,
  111. AFCMPD,
  112. AFCMPED,
  113. AFCMPEF,
  114. AFCMPEX,
  115. AFCMPF,
  116. AFCMPX,
  117. AFDIVD,
  118. AFDIVF,
  119. AFDIVX,
  120. AFMOVD, /* pseudo op */
  121. AFMOVDF,
  122. AFMOVDW,
  123. AFMOVDX,
  124. AFMOVF,
  125. AFMOVFD,
  126. AFMOVFW,
  127. AFMOVFX,
  128. AFMOVWD,
  129. AFMOVWF,
  130. AFMOVWX,
  131. AFMOVX, /* pseudo op */
  132. AFMOVXD,
  133. AFMOVXF,
  134. AFMOVXW,
  135. AFMULD,
  136. AFMULF,
  137. AFMULX,
  138. AFNEGD, /* pseudo op */
  139. AFNEGF,
  140. AFNEGX, /* pseudo op */
  141. AFSQRTD,
  142. AFSQRTF,
  143. AFSQRTX,
  144. AFSUBD,
  145. AFSUBF,
  146. AFSUBX,
  147. AGLOBL,
  148. AGOK,
  149. AHISTORY,
  150. AIFLUSH,
  151. AJMPL,
  152. AJMP,
  153. AMOD,
  154. AMODL,
  155. AMOVB,
  156. AMOVBU,
  157. AMOVD,
  158. AMOVH,
  159. AMOVHU,
  160. AMOVW,
  161. AMUL,
  162. AMULSCC,
  163. ANAME,
  164. ANOP,
  165. AOR,
  166. AORCC,
  167. AORN,
  168. AORNCC,
  169. ARESTORE,
  170. ARETT,
  171. ARETURN,
  172. ASAVE,
  173. ASLL,
  174. ASRA,
  175. ASRL,
  176. ASUB,
  177. ASUBCC,
  178. ASUBX,
  179. ASUBXCC,
  180. ASWAP,
  181. ATA,
  182. ATADDCC,
  183. ATADDCCTV,
  184. ATAS,
  185. ATCC,
  186. ATCS,
  187. ATE,
  188. ATEXT,
  189. ATG,
  190. ATGE,
  191. ATGU,
  192. ATL,
  193. ATLE,
  194. ATLEU,
  195. ATN,
  196. ATNE,
  197. ATNEG,
  198. ATPOS,
  199. ATSUBCC,
  200. ATSUBCCTV,
  201. ATVC,
  202. ATVS,
  203. AUNIMP,
  204. AWORD,
  205. AXNOR,
  206. AXNORCC,
  207. AXOR,
  208. AXORCC,
  209. AEND,
  210. ADYNT,
  211. AINIT,
  212. ASIGNAME,
  213. ALAST
  214. };
  215. /* type/name */
  216. enum
  217. {
  218. D_GOK = 0,
  219. D_NONE,
  220. /* name */
  221. D_EXTERN,
  222. D_STATIC,
  223. D_AUTO,
  224. D_PARAM,
  225. /* type */
  226. D_BRANCH,
  227. D_OREG,
  228. D_ASI,
  229. D_CONST,
  230. D_FCONST,
  231. D_SCONST,
  232. D_REG,
  233. D_FREG,
  234. D_CREG,
  235. D_PREG,
  236. D_FILE,
  237. D_FILE1,
  238. /* reg names iff type is D_PREG */
  239. D_CPQ = 0,
  240. D_CSR,
  241. D_FPQ,
  242. D_FSR,
  243. D_PSR,
  244. D_TBR,
  245. D_WIM,
  246. D_Y
  247. };
  248. /*
  249. * this is the ranlib header
  250. */
  251. #define SYMDEF "__.SYMDEF"
  252. /*
  253. * this is the simulated IEEE floating point
  254. */
  255. typedef struct ieee Ieee;
  256. struct ieee
  257. {
  258. long l; /* contains ls-man 0xffffffff */
  259. long h; /* contains sign 0x80000000
  260. exp 0x7ff00000
  261. ms-man 0x000fffff */
  262. };