home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-alpha / hwrpb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  6.9 KB  |  221 lines

  1. #ifndef __ALPHA_HWRPB_H
  2. #define __ALPHA_HWRPB_H
  3.  
  4. #define INIT_HWRPB ((struct hwrpb_struct *) 0x10000000)
  5.  
  6. /*
  7.  * DEC processor types for Alpha systems.  Found in HWRPB.
  8.  * These values are architected.
  9.  */
  10.  
  11. #define EV3_CPU                 1       /* EV3                  */
  12. #define EV4_CPU                 2       /* EV4 (21064)          */
  13. #define LCA4_CPU                4       /* LCA4 (21066/21068)   */
  14. #define EV5_CPU                 5       /* EV5 (21164)          */
  15. #define EV45_CPU                6       /* EV4.5 (21064/xxx)    */
  16. #define EV56_CPU        7    /* EV5.6 (21164)    */
  17. #define EV6_CPU            8    /* EV6 (21264)        */
  18. #define PCA56_CPU        9    /* PCA56 (21164PC)    */
  19. #define PCA57_CPU        10    /* PCA57 (notyet)    */
  20. #define EV67_CPU        11    /* EV67 (21264A)    */
  21. #define EV68CB_CPU        12    /* EV68CB (21264C)    */
  22. #define EV68AL_CPU        13    /* EV68AL (21264B)    */
  23. #define EV68CX_CPU        14    /* EV68CX (21264D)    */
  24. #define EV7_CPU            15    /* EV7 (21364)        */
  25. #define EV79_CPU        16    /* EV79 (21364??)    */
  26. #define EV69_CPU        17    /* EV69 (21264/EV69A)    */
  27.  
  28. /*
  29.  * DEC system types for Alpha systems.  Found in HWRPB.
  30.  * These values are architected.
  31.  */
  32.  
  33. #define ST_ADU              1    /* Alpha ADU systype    */
  34. #define ST_DEC_4000          2    /* Cobra systype    */
  35. #define ST_DEC_7000          3    /* Ruby systype        */
  36. #define ST_DEC_3000_500          4    /* Flamingo systype    */
  37. #define ST_DEC_2000_300          6    /* Jensen systype    */
  38. #define ST_DEC_3000_300          7    /* Pelican systype    */
  39. #define ST_DEC_2100_A500      9    /* Sable systype    */
  40. #define ST_DEC_AXPVME_64     10    /* AXPvme system type    */
  41. #define ST_DEC_AXPPCI_33     11    /* NoName system type    */
  42. #define ST_DEC_TLASER         12    /* Turbolaser systype    */
  43. #define ST_DEC_2100_A50         13    /* Avanti systype    */
  44. #define ST_DEC_MUSTANG         14    /* Mustang systype    */
  45. #define ST_DEC_ALCOR         15    /* Alcor (EV5) systype    */
  46. #define ST_DEC_1000         17    /* Mikasa systype    */
  47. #define ST_DEC_EB64         18    /* EB64 systype        */
  48. #define ST_DEC_EB66         19    /* EB66 systype        */
  49. #define ST_DEC_EB64P         20    /* EB64+ systype    */
  50. #define ST_DEC_BURNS         21    /* laptop systype    */
  51. #define ST_DEC_RAWHIDE         22    /* Rawhide systype    */
  52. #define ST_DEC_K2         23    /* K2 systype        */
  53. #define ST_DEC_LYNX         24    /* Lynx systype        */
  54. #define ST_DEC_XL         25    /* Alpha XL systype    */
  55. #define ST_DEC_EB164         26    /* EB164 systype    */
  56. #define ST_DEC_NORITAKE         27    /* Noritake systype    */
  57. #define ST_DEC_CORTEX         28    /* Cortex systype    */
  58. #define ST_DEC_MIATA         30    /* Miata systype        */
  59. #define ST_DEC_XXM         31    /* XXM systype        */
  60. #define ST_DEC_TAKARA         32    /* Takara systype    */
  61. #define ST_DEC_YUKON         33    /* Yukon systype    */
  62. #define ST_DEC_TSUNAMI         34    /* Tsunami systype    */
  63. #define ST_DEC_WILDFIRE         35    /* Wildfire systype    */
  64. #define ST_DEC_CUSCO         36    /* CUSCO systype    */
  65. #define ST_DEC_EIGER         37    /* Eiger systype    */
  66. #define ST_DEC_TITAN         38    /* Titan systype    */
  67. #define ST_DEC_MARVEL         39    /* Marvel systype    */
  68.  
  69. /* UNOFFICIAL!!! */
  70. #define ST_UNOFFICIAL_BIAS    100
  71. #define ST_DTI_RUFFIAN        101    /* RUFFIAN systype    */
  72.  
  73. /* Alpha Processor, Inc. systems */
  74. #define ST_API_BIAS        200
  75. #define ST_API_NAUTILUS        201    /* UP1000 systype    */
  76.  
  77. struct pcb_struct {
  78.     unsigned long ksp;
  79.     unsigned long usp;
  80.     unsigned long ptbr;
  81.     unsigned int pcc;
  82.     unsigned int asn;
  83.     unsigned long unique;
  84.     unsigned long flags;
  85.     unsigned long res1, res2;
  86. };
  87.  
  88. struct percpu_struct {
  89.     unsigned long hwpcb[16];
  90.     unsigned long flags;
  91.     unsigned long pal_mem_size;
  92.     unsigned long pal_scratch_size;
  93.     unsigned long pal_mem_pa;
  94.     unsigned long pal_scratch_pa;
  95.     unsigned long pal_revision;
  96.     unsigned long type;
  97.     unsigned long variation;
  98.     unsigned long revision;
  99.     unsigned long serial_no[2];
  100.     unsigned long logout_area_pa;
  101.     unsigned long logout_area_len;
  102.     unsigned long halt_PCBB;
  103.     unsigned long halt_PC;
  104.     unsigned long halt_PS;
  105.     unsigned long halt_arg;
  106.     unsigned long halt_ra;
  107.     unsigned long halt_pv;
  108.     unsigned long halt_reason;
  109.     unsigned long res;
  110.     unsigned long ipc_buffer[21];
  111.     unsigned long palcode_avail[16];
  112.     unsigned long compatibility;
  113.     unsigned long console_data_log_pa;
  114.     unsigned long console_data_log_length;
  115.     unsigned long bcache_info;
  116. };
  117.  
  118. struct procdesc_struct {
  119.     unsigned long weird_vms_stuff;
  120.     unsigned long address;
  121. };
  122.  
  123. struct vf_map_struct {
  124.     unsigned long va;
  125.     unsigned long pa;
  126.     unsigned long count;
  127. };
  128.  
  129. struct crb_struct {
  130.     struct procdesc_struct * dispatch_va;
  131.     struct procdesc_struct * dispatch_pa;
  132.     struct procdesc_struct * fixup_va;
  133.     struct procdesc_struct * fixup_pa;
  134.     /* virtual->physical map */
  135.     unsigned long map_entries;
  136.     unsigned long map_pages;
  137.     struct vf_map_struct map[1];
  138. };
  139.  
  140. struct memclust_struct {
  141.     unsigned long start_pfn;
  142.     unsigned long numpages;
  143.     unsigned long numtested;
  144.     unsigned long bitmap_va;
  145.     unsigned long bitmap_pa;
  146.     unsigned long bitmap_chksum;
  147.     unsigned long usage;
  148. };
  149.  
  150. struct memdesc_struct {
  151.     unsigned long chksum;
  152.     unsigned long optional_pa;
  153.     unsigned long numclusters;
  154.     struct memclust_struct cluster[0];
  155. };
  156.  
  157. struct dsr_struct {
  158.     long smm;            /* SMM nubber used by LMF       */
  159.     unsigned long  lurt_off;    /* offset to LURT table         */
  160.     unsigned long  sysname_off;    /* offset to sysname char count */
  161. };
  162.  
  163. struct hwrpb_struct {
  164.     unsigned long phys_addr;    /* check: physical address of the hwrpb */
  165.     unsigned long id;        /* check: "HWRPB\0\0\0" */
  166.     unsigned long revision;    
  167.     unsigned long size;        /* size of hwrpb */
  168.     unsigned long cpuid;
  169.     unsigned long pagesize;        /* 8192, I hope */
  170.     unsigned long pa_bits;        /* number of physical address bits */
  171.     unsigned long max_asn;
  172.     unsigned char ssn[16];        /* system serial number: big bother is watching */
  173.     unsigned long sys_type;
  174.     unsigned long sys_variation;
  175.     unsigned long sys_revision;
  176.     unsigned long intr_freq;    /* interval clock frequency * 4096 */
  177.     unsigned long cycle_freq;    /* cycle counter frequency */
  178.     unsigned long vptb;        /* Virtual Page Table Base address */
  179.     unsigned long res1;
  180.     unsigned long tbhb_offset;    /* Translation Buffer Hint Block */
  181.     unsigned long nr_processors;
  182.     unsigned long processor_size;
  183.     unsigned long processor_offset;
  184.     unsigned long ctb_nr;
  185.     unsigned long ctb_size;        /* console terminal block size */
  186.     unsigned long ctbt_offset;    /* console terminal block table offset */
  187.     unsigned long crb_offset;    /* console callback routine block */
  188.     unsigned long mddt_offset;    /* memory data descriptor table */
  189.     unsigned long cdb_offset;    /* configuration data block (or NULL) */
  190.     unsigned long frut_offset;    /* FRU table (or NULL) */
  191.     void (*save_terminal)(unsigned long);
  192.     unsigned long save_terminal_data;
  193.     void (*restore_terminal)(unsigned long);
  194.     unsigned long restore_terminal_data;
  195.     void (*CPU_restart)(unsigned long);
  196.     unsigned long CPU_restart_data;
  197.     unsigned long res2;
  198.     unsigned long res3;
  199.     unsigned long chksum;
  200.     unsigned long rxrdy;
  201.     unsigned long txrdy;
  202.     unsigned long dsr_offset;    /* "Dynamic System Recognition Data Block Table" */
  203. };
  204.  
  205. #ifdef __KERNEL__
  206.  
  207. extern struct hwrpb_struct *hwrpb;
  208.  
  209. static inline void
  210. hwrpb_update_checksum(struct hwrpb_struct *h)
  211. {
  212.     unsigned long sum = 0, *l;
  213.         for (l = (unsigned long *) h; l < (unsigned long *) &h->chksum; ++l)
  214.                 sum += *l;
  215.         h->chksum = sum;
  216. }
  217.  
  218. #endif /* __KERNEL__ */
  219.  
  220. #endif /* __ALPHA_HWRPB_H */
  221.