dat.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. typedef struct Hwrpb Hwrpb;
  2. typedef struct Hwcpu Hwcpu;
  3. typedef struct Hwcrb Hwcrb;
  4. typedef struct Hwdsr Hwdsr;
  5. typedef struct Procdesc Procdesc;
  6. typedef struct Memdsc Memdsc;
  7. typedef struct Memclust Memclust;
  8. typedef struct PCB PCB;
  9. struct Hwrpb
  10. {
  11. uvlong phys;
  12. uvlong sign;
  13. uvlong rev;
  14. uvlong size;
  15. uvlong cpu0;
  16. uvlong by2pg;
  17. uvlong pabits;
  18. uvlong maxasn;
  19. char ssn[16];
  20. uvlong systype;
  21. uvlong sysvar;
  22. uvlong sysrev;
  23. uvlong ifreq;
  24. uvlong cfreq;
  25. uvlong vptb;
  26. uvlong resv;
  27. uvlong tbhint;
  28. uvlong ncpu;
  29. uvlong cpulen;
  30. uvlong cpuoff;
  31. uvlong nctb;
  32. uvlong ctblen;
  33. uvlong ctboff;
  34. uvlong crboff;
  35. uvlong memoff;
  36. uvlong confoff;
  37. uvlong fruoff;
  38. uvlong termsaveva;
  39. uvlong termsavex;
  40. uvlong termrestva;
  41. uvlong termrestx;
  42. uvlong termresetva;
  43. uvlong termresetx;
  44. uvlong sysresv;
  45. uvlong hardresv;
  46. uvlong csum;
  47. uvlong rxrdymsk;
  48. uvlong txrdymsk;
  49. uvlong dsroff; /* rev 6 or higher */
  50. };
  51. extern Hwrpb* hwrpb;
  52. struct Hwcpu
  53. {
  54. uvlong hwpcb[16];
  55. uvlong state;
  56. uvlong palmainlen;
  57. uvlong palscratchlen;
  58. uvlong palmainpa;
  59. uvlong palscratchpa;
  60. uvlong palrev;
  61. uvlong cputype;
  62. uvlong cpuvar;
  63. uvlong cpurev;
  64. uvlong serial[2];
  65. /* more crap ... */
  66. };
  67. struct Hwdsr
  68. {
  69. vlong smm;
  70. uvlong lurtoff;
  71. uvlong sysnameoff;
  72. };
  73. struct Hwcrb
  74. {
  75. uvlong dispatchva;
  76. uvlong dispatchpa;
  77. uvlong fixupva;
  78. uvlong fixuppa;
  79. /* more, uninteresting crud */
  80. };
  81. struct Procdesc
  82. {
  83. uvlong bollocks;
  84. uvlong addr;
  85. };
  86. struct Memclust
  87. {
  88. uvlong pfn;
  89. uvlong npages;
  90. uvlong ntest;
  91. uvlong vabitm;
  92. uvlong pabitm;
  93. uvlong csumbitm;
  94. uvlong usage;
  95. };
  96. struct Memdsc
  97. {
  98. uvlong csum;
  99. uvlong opt;
  100. uvlong nclust;
  101. Memclust clust[1];
  102. };
  103. enum
  104. {
  105. PRINTSIZE = 256,
  106. MB = (1024*1024),
  107. };
  108. #define L_MAGIC ((((4*23)+0)*23)+7)
  109. typedef struct Exec Exec;
  110. struct Exec
  111. {
  112. uchar magic[4]; /* magic number */
  113. uchar text[4]; /* size of text segment */
  114. uchar data[4]; /* size of initialized data */
  115. uchar bss[4]; /* size of uninitialized data */
  116. uchar syms[4]; /* size of symbol table */
  117. uchar entry[4]; /* entry point */
  118. uchar spsz[4]; /* size of sp/pc offset table */
  119. uchar pcsz[4]; /* size of pc/line number table */
  120. };
  121. enum {
  122. Eaddrlen = 6,
  123. ETHERMINTU = 60, /* minimum transmit size */
  124. ETHERMAXTU = 1514, /* maximum transmit size */
  125. ETHERHDRSIZE = 14, /* size of an ethernet header */
  126. MaxEther = 2,
  127. };
  128. typedef struct {
  129. uchar d[Eaddrlen];
  130. uchar s[Eaddrlen];
  131. uchar type[2];
  132. uchar data[1500];
  133. uchar crc[4];
  134. } Etherpkt;
  135. /*
  136. * Process Control Block, used by OSF/1 PALcode when we switch to it
  137. */
  138. struct PCB {
  139. uvlong ksp;
  140. uvlong usp;
  141. uvlong ptbr;
  142. ulong asn;
  143. ulong pcc;
  144. uvlong unique;
  145. ulong fen;
  146. ulong dummy;
  147. uvlong rsrv1;
  148. uvlong rsrv2;
  149. };
  150. #include "conf.h"
  151. extern Bootconf conf;