Annotation of qemu/roms/qemu-palcode/hwrpb.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.