Annotation of qemu/roms/qemu-palcode/hwrpb.h, revision 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.