rpb.h revision 8013
112853Sgabeblack@google.com/* 212853Sgabeblack@google.com * Copyright 1990 Hewlett-Packard Development Company, L.P. 312853Sgabeblack@google.com * 412853Sgabeblack@google.com * Permission is hereby granted, free of charge, to any person 512853Sgabeblack@google.com * obtaining a copy of this software and associated documentation 612853Sgabeblack@google.com * files (the "Software"), to deal in the Software without 712853Sgabeblack@google.com * restriction, including without limitation the rights to use, copy, 812853Sgabeblack@google.com * modify, merge, publish, distribute, sublicense, and/or sell copies 912853Sgabeblack@google.com * of the Software, and to permit persons to whom the Software is 1012853Sgabeblack@google.com * furnished to do so, subject to the following conditions: 1112853Sgabeblack@google.com * 1212853Sgabeblack@google.com * The above copyright notice and this permission notice shall be 1312853Sgabeblack@google.com * included in all copies or substantial portions of the Software. 1412853Sgabeblack@google.com * 1512853Sgabeblack@google.com * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1612853Sgabeblack@google.com * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1712853Sgabeblack@google.com * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1812853Sgabeblack@google.com * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 1912853Sgabeblack@google.com * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 2012853Sgabeblack@google.com * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 2112853Sgabeblack@google.com * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2212853Sgabeblack@google.com * SOFTWARE. 2312853Sgabeblack@google.com */ 2412853Sgabeblack@google.com 2512853Sgabeblack@google.com/* 2612853Sgabeblack@google.com * Defines for the architected startup addresses. 2712853Sgabeblack@google.com */ 2812853Sgabeblack@google.com#define HWRPB_ADDR 0x10000000 /* 256 MB */ 2912853Sgabeblack@google.com#define BOOT_ADDR 0x20000000 /* 512 MB */ 3012853Sgabeblack@google.com#define PGTBL_ADDR 0x40000000 /* 1 GB */ 3112853Sgabeblack@google.com 3212853Sgabeblack@google.com/* 3312853Sgabeblack@google.com * Values for the "haltcode" field in the per-cpu portion of the HWRPB 3412853Sgabeblack@google.com * 3512853Sgabeblack@google.com * Bit defines for the "sysvar" field in the HWRPB. 3612853Sgabeblack@google.com * Each platform has different values for SYSBOARD and IOBOARD bits. 3712853Sgabeblack@google.com */ 3812853Sgabeblack@google.com#define HALT_PWRUP 0 /* power up */ 3912853Sgabeblack@google.com#define HALT_OPR 1 /* operator issued halt cmd */ 4012853Sgabeblack@google.com#define HALT_KSTK 2 /* kernel stack not valid */ 4112853Sgabeblack@google.com#define HALT_SCBB 3 /* invalid SCBB */ 4212853Sgabeblack@google.com#define HALT_PTBR 4 /* invalid PTBR */ 4312853Sgabeblack@google.com#define HALT_EXE 5 /* kernel executed halt instruction */ 4412853Sgabeblack@google.com#define HALT_DBLE 6 /* double error abort */ 4512853Sgabeblack@google.com 4612853Sgabeblack@google.com/* 4712853Sgabeblack@google.com * Bit defines for the "state" field in the per-cpu portion of the HWRPB 4812853Sgabeblack@google.com */ 4912853Sgabeblack@google.com#define STATE_BIP 0x00000001 /* bootstrap in progress */ 5012853Sgabeblack@google.com#define STATE_RC 0x00000002 /* restart capable */ 5112853Sgabeblack@google.com#define STATE_PA 0x00000004 /* processor available to OS */ 5212853Sgabeblack@google.com#define STATE_PP 0x00000008 /* processor present */ 5312853Sgabeblack@google.com#define STATE_OH 0x00000010 /* operator halted */ 5412853Sgabeblack@google.com#define STATE_CV 0x00000020 /* context valid */ 5512853Sgabeblack@google.com#define STATE_PV 0x00000040 /* PALcode valid */ 5612853Sgabeblack@google.com#define STATE_PMV 0x00000080 /* PALcode memory valid */ 5712853Sgabeblack@google.com#define STATE_PL 0x00000100 /* PALcode loaded */ 5812853Sgabeblack@google.com#define STATE_HALT_MASK 0x00ff0000 /* Mask for Halt Requested field */ 5912853Sgabeblack@google.com#define STATE_DEFAULT 0x00000000 /* Default (no specific action) */ 6012853Sgabeblack@google.com#define STATE_SVRS_TERM 0x00010000 /* SAVE_TERM/RESTORE_TERM Exit */ 6112853Sgabeblack@google.com#define STATE_COLD_BOOT 0x00020000 /* Cold Bootstrap Requested */ 6212853Sgabeblack@google.com#define STATE_WARM_BOOT 0x00030000 /* Warm Bootstrap Requested */ 6312853Sgabeblack@google.com#define STATE_HALT 0x00040000 /* Remain halted (no restart) */ 6412853Sgabeblack@google.com 6512853Sgabeblack@google.com 6612853Sgabeblack@google.com#define SV_PF_RSVD 0x00000000 /* RESERVED */ 6712853Sgabeblack@google.com#define SV_RESERVED 0x00000000 /* All STS bits; 0 for back compat */ 6812853Sgabeblack@google.com#define SV_MPCAP 0x00000001 /* MP capable */ 6912853Sgabeblack@google.com#define SV_PF_UNITED 0x00000020 /* United */ 7012853Sgabeblack@google.com#define SV_PF_SEPARATE 0x00000040 /* Separate */ 7112853Sgabeblack@google.com#define SV_PF_FULLBB 0x00000060 /* Full battery backup */ 7212853Sgabeblack@google.com#define SV_POWERFAIL 0x000000e0 /* Powerfail implementation */ 7312853Sgabeblack@google.com#define SV_PF_RESTART 0x00000100 /* Powerfail restart */ 7412853Sgabeblack@google.com 7512853Sgabeblack@google.com#define SV_GRAPHICS 0x00000200 /* Embedded graphics processor */ 7612853Sgabeblack@google.com 7712853Sgabeblack@google.com#define SV_STS_MASK 0x0000fc00 /* STS bits - system and I/O board */ 7812853Sgabeblack@google.com#define SV_SANDPIPER 0x00000400 /* others define system platforms */ 7912853Sgabeblack@google.com#define SV_FLAMINGO 0x00000800 /* STS BIT SETTINGS */ 8012853Sgabeblack@google.com#define SV_HOTPINK 0x00000c00 /* STS BIT SETTINGS */ 8112853Sgabeblack@google.com#define SV_FLAMINGOPLUS 0x00001000 /* STS BIT SETTINGS */ 8212853Sgabeblack@google.com#define SV_ULTRA 0x00001400 /* STS BIT SETTINGS */ 8312853Sgabeblack@google.com#define SV_SANDPLUS 0x00001800 /* STS BIT SETTINGS */ 8412853Sgabeblack@google.com#define SV_SANDPIPER45 0x00001c00 /* STS BIT SETTINGS */ 8512853Sgabeblack@google.com#define SV_FLAMINGO45 0x00002000 /* STS BIT SETTINGS */ 8612853Sgabeblack@google.com 8712853Sgabeblack@google.com#define SV_SABLE 0x00000400 /* STS BIT SETTINGS */ 8812853Sgabeblack@google.com 8912853Sgabeblack@google.com#define SV_KN20AA 0x00000400 /* STS BIT SETTINGS */ 9012853Sgabeblack@google.com 9112853Sgabeblack@google.com/* 9212853Sgabeblack@google.com * Values for the "console type" field in the CTB portion of the HWRPB 9312853Sgabeblack@google.com */ 9412853Sgabeblack@google.com#define CONS_NONE 0 /* no console present */ 9512853Sgabeblack@google.com#define CONS_SRVC 1 /* console is service processor */ 9612853Sgabeblack@google.com#define CONS_DZ 2 /* console is dz/dl VT device */ 9712853Sgabeblack@google.com#define CONS_GRPH 3 /* cons is gfx dev w/ dz/dl keybd*/ 9812853Sgabeblack@google.com#define CONS_REM 4 /* cons is remote, protocal enet/MOP */ 9912853Sgabeblack@google.com 10012853Sgabeblack@google.com/* 10112853Sgabeblack@google.com * PALcode variants that we're interested in. 10212853Sgabeblack@google.com * Used as indices into the "palrev_avail" array in the per-cpu portion 10312853Sgabeblack@google.com * of the HWRPB. 10412853Sgabeblack@google.com */ 10512853Sgabeblack@google.com#define PALvar_reserved 0 10612853Sgabeblack@google.com#define PALvar_OpenVMS 1 10712853Sgabeblack@google.com#define PALvar_OSF1 2 10812853Sgabeblack@google.com 10912853Sgabeblack@google.com/* 11012853Sgabeblack@google.com * The Alpha restart parameter block, which is a page or 2 in low memory 11112853Sgabeblack@google.com */ 11212853Sgabeblack@google.comstruct rpb { 11312853Sgabeblack@google.com struct rpb *rpb_selfref; /* 000: physical self-reference */ 11412853Sgabeblack@google.com long rpb_string; /* 008: contains string "HWRPB" */ 11512853Sgabeblack@google.com long rpb_vers; /* 010: HWRPB version number */ 11612853Sgabeblack@google.com ulong rpb_size; /* 018: bytes in RPB perCPU CTB CRB MEMDSC */ 11712853Sgabeblack@google.com ulong rpb_cpuid; /* 020: primary cpu id */ 11812853Sgabeblack@google.com ulong rpb_pagesize; /* 028: page size in bytes */ 11912853Sgabeblack@google.com ulong rpb_addrbits; /* 030: number of phys addr bits */ 12012853Sgabeblack@google.com ulong rpb_maxasn; /* 038: max valid ASN */ 12112853Sgabeblack@google.com char rpb_ssn[16]; /* 040: system serial num: 10 ascii chars */ 12212853Sgabeblack@google.com ulong grpb_systype; /* 050: system type */ 12312853Sgabeblack@google.com long rpb_sysvar; /* 058: system variation */ 12412853Sgabeblack@google.com long rpb_sysrev; /* 060: system revision */ 12512853Sgabeblack@google.com ulong rpb_clock; /* 068: scaled interval clock intr freq */ 12612853Sgabeblack@google.com ulong rpb_counter; /* 070: cycle counter frequency */ 12712853Sgabeblack@google.com ulong rpb_vptb; /* 078: virtual page table base */ 12812853Sgabeblack@google.com long rpb_res1; /* 080: reserved */ 12912853Sgabeblack@google.com ulong rpb_trans_off; /* 088: offset to translation buffer hint */ 13012853Sgabeblack@google.com ulong rpb_numprocs; /* 090: number of processor slots */ 13112853Sgabeblack@google.com ulong rpb_slotsize; /* 098: per-cpu slot size */ 13212853Sgabeblack@google.com ulong rpb_percpu_off; /* 0A0: offset to per_cpu slots */ 13312853Sgabeblack@google.com ulong rpb_num_ctb; /* 0A8: number of CTBs */ 13412853Sgabeblack@google.com ulong rpb_ctb_size; /* 0B0: bytes in largest CTB */ 13512853Sgabeblack@google.com ulong rpb_ctb_off; /* 0B8: offset to CTB (cons term block) */ 13612853Sgabeblack@google.com ulong rpb_crb_off; /* 0C0: offset to CRB (cons routine block) */ 13712853Sgabeblack@google.com ulong rpb_mdt_off; /* 0C8: offset to memory descriptor table */ 13812853Sgabeblack@google.com ulong rpb_config_off; /* 0D0: offset to config data block */ 13912853Sgabeblack@google.com ulong rpb_fru_off; /* 0D8: offset to FRU table */ 14012853Sgabeblack@google.com void (*rpb_saveterm)(); /* 0E0: virt addr of save term routine */ 14112853Sgabeblack@google.com long rpb_saveterm_pv; /* 0E8: proc value for save term routine */ 14212853Sgabeblack@google.com void (*rpb_rstrterm)(); /* 0F0: virt addr of restore term routine */ 14312853Sgabeblack@google.com long rpb_rstrterm_pv; /* 0F8: proc value for restore term routine */ 14412853Sgabeblack@google.com void (*rpb_restart)(); /* 100: virt addr of CPU restart routine */ 14512853Sgabeblack@google.com long rpb_restart_pv; /* 108: proc value for CPU restart routine */ 14612853Sgabeblack@google.com long rpb_software; /* 110: used to determine presence of kdebug */ 14712853Sgabeblack@google.com long rpb_hardware; /* 118: reserved for hardware */ 14812853Sgabeblack@google.com long rpb_checksum; /* 120: checksum of prior entries in rpb */ 14912853Sgabeblack@google.com long rpb_rxrdy; /* 128: receive ready bitmask */ 15012853Sgabeblack@google.com long rpb_txrdy; /* 130: transmit ready bitmask */ 15112853Sgabeblack@google.com ulong rpb_dsr_off; /* 138: Dynamic System Recog. offset */ 15212853Sgabeblack@google.com}; 15312853Sgabeblack@google.com 15412853Sgabeblack@google.com#define rpb_kdebug rpb_software 15512853Sgabeblack@google.com 15612853Sgabeblack@google.com#define OSF_HWRPB_ADDR ((vm_offset_t)(-1L << 23)) 15712853Sgabeblack@google.com 15812853Sgabeblack@google.com/* 15912853Sgabeblack@google.com * This is the format for the boot/restart HWPCB. It must match the 16012853Sgabeblack@google.com * initial fields of the pcb structure as defined in pcb.h, but must 16112853Sgabeblack@google.com * additionally contain the appropriate amount of padding to line up 16212853Sgabeblack@google.com * with formats used by other palcode types. 16312853Sgabeblack@google.com */ 16412853Sgabeblack@google.comstruct bootpcb { 16512853Sgabeblack@google.com long rpb_ksp; /* 000: kernel stack pointer */ 16612853Sgabeblack@google.com long rpb_usp; /* 008: user stack pointer */ 16712853Sgabeblack@google.com long rpb_ptbr; /* 010: page table base register */ 16812853Sgabeblack@google.com int rpb_cc; /* 018: cycle counter */ 16912853Sgabeblack@google.com int rpb_asn; /* 01C: address space number */ 17012853Sgabeblack@google.com long rpb_proc_uniq; /* 020: proc/thread unique value */ 17112853Sgabeblack@google.com long rpb_fen; /* 028: floating point enable */ 17212853Sgabeblack@google.com long rpb_palscr[2]; /* 030: pal scratch area */ 17312853Sgabeblack@google.com long rpb_pcbpad[8]; /* 040: padding for fixed size */ 17412853Sgabeblack@google.com}; 17512853Sgabeblack@google.com 17612853Sgabeblack@google.com/* 17712853Sgabeblack@google.com * Inter-Console Communications Buffer 17812853Sgabeblack@google.com * Used for the primary processor to communcate with the console 17912853Sgabeblack@google.com * of secondary processors. 18012853Sgabeblack@google.com */ 18112853Sgabeblack@google.comstruct iccb { 18212853Sgabeblack@google.com uint iccb_rxlen; /* receive length in bytes */ 18312853Sgabeblack@google.com uint iccb_txlen; /* transmit length in bytes */ 18412853Sgabeblack@google.com char iccb_rxbuf[80]; /* receive buffer */ 18512853Sgabeblack@google.com char iccb_txbuf[80]; /* transmit buffer */ 18612853Sgabeblack@google.com}; 18712853Sgabeblack@google.com 18812853Sgabeblack@google.com/* 18912853Sgabeblack@google.com * The per-cpu portion of the Alpha HWRPB. 19012853Sgabeblack@google.com * Note that the main portion of the HWRPB is of variable size, 19112853Sgabeblack@google.com * hence this must be a separate structure. 19212853Sgabeblack@google.com * 19312853Sgabeblack@google.com */ 19412853Sgabeblack@google.comstruct rpb_percpu { 19512853Sgabeblack@google.com struct bootpcb rpb_pcb; /* 000: boot/restart HWPCB */ 19612853Sgabeblack@google.com long rpb_state; /* 080: per-cpu state bits */ 19712853Sgabeblack@google.com long rpb_palmem; /* 088: palcode memory length */ 19812853Sgabeblack@google.com long rpb_palscratch; /* 090: palcode scratch length */ 19912853Sgabeblack@google.com long rpb_palmem_addr; /* 098: phys addr of palcode mem space */ 20012853Sgabeblack@google.com long rpb_palscratch_addr; /* 0A0: phys addr of palcode scratch space */ 20112853Sgabeblack@google.com long rpb_palrev; /* 0A8: PALcode rev required */ 20212853Sgabeblack@google.com long rpb_proctype; /* 0B0: processor type */ 20312853Sgabeblack@google.com long rpb_procvar; /* 0B8: processor variation */ 20412853Sgabeblack@google.com long rpb_procrev; /* 0C0: processor revision */ 20512853Sgabeblack@google.com char rpb_procsn[16]; /* 0C8: proc serial num: 10 ascii chars */ 20612853Sgabeblack@google.com long rpb_logout; /* 0D8: phys addr of logout area */ 20712853Sgabeblack@google.com long rpb_logout_len; /* 0E0: length in bytes of logout area */ 20812853Sgabeblack@google.com long rpb_haltpb; /* 0E8: halt pcb base */ 20912853Sgabeblack@google.com long rpb_haltpc; /* 0F0: halt pc */ 21012853Sgabeblack@google.com long rpb_haltps; /* 0F8: halt ps */ 21112853Sgabeblack@google.com long rpb_haltal; /* 100: halt arg list (R25) */ 21212853Sgabeblack@google.com long rpb_haltra; /* 108: halt return address (R26) */ 21312853Sgabeblack@google.com long rpb_haltpv; /* 110: halt procedure value (R27) */ 21412853Sgabeblack@google.com long rpb_haltcode; /* 118: reason for halt */ 21512853Sgabeblack@google.com long rpb_software; /* 120: for software */ 21612853Sgabeblack@google.com struct iccb rpb_iccb; /* 128: inter-console communications buffer */ 21712853Sgabeblack@google.com long rpb_palrev_avail[16]; /* 1D0: PALcode revs available */ 21812853Sgabeblack@google.com long rpb_pcrsvd[6]; /* 250: reserved for arch use */ 21912853Sgabeblack@google.com/* the dump stack grows from the end of the rpb page not to reach here */ 22012853Sgabeblack@google.com}; 22112853Sgabeblack@google.com 22212853Sgabeblack@google.com/* The firmware revision is in the (unused) first entry of palrevs available */ 22312853Sgabeblack@google.com#define rpb_firmrev rpb_palrev_avail[0] 22412853Sgabeblack@google.com 22512853Sgabeblack@google.com/* 22612853Sgabeblack@google.com * The memory cluster descriptor. 22712853Sgabeblack@google.com */ 22812853Sgabeblack@google.comstruct rpb_cluster { 22912853Sgabeblack@google.com long rpb_pfn; /* 000: starting PFN of this cluster */ 23012853Sgabeblack@google.com long rpb_pfncount; /* 008: count of PFNs in this cluster */ 23112853Sgabeblack@google.com long rpb_pfntested; /* 010: count of tested PFNs in cluster */ 23212853Sgabeblack@google.com long rpb_va; /* 018: va of bitmap */ 23312853Sgabeblack@google.com long rpb_pa; /* 020: pa of bitmap */ 23412853Sgabeblack@google.com long rpb_checksum; /* 028: checksum of bitmap */ 23512853Sgabeblack@google.com long rpb_usage; /* 030: usage of cluster */ 23612853Sgabeblack@google.com}; 23712853Sgabeblack@google.com#define CLUSTER_USAGE_OS ((long)0) 23812853Sgabeblack@google.com#define CLUSTER_USAGE_PAL ((long)1) 23912853Sgabeblack@google.com#define CLUSTER_USAGE_NVRAM ((long)2) 24012853Sgabeblack@google.com 24112853Sgabeblack@google.com/* 24212853Sgabeblack@google.com * The "memory descriptor table" portion of the HWRPB. 24312853Sgabeblack@google.com * Note that the main portion of the HWRPB is of variable size and there is a 24412853Sgabeblack@google.com * variable number of per-cpu slots, hence this must be a separate structure. 24512853Sgabeblack@google.com * Also note that the memory descriptor table contains a fixed portion plus 24612853Sgabeblack@google.com * a variable number of "memory cluster descriptors" (one for each "cluster" 24712853Sgabeblack@google.com * of memory). 24812853Sgabeblack@google.com */ 24912853Sgabeblack@google.comstruct rpb_mdt { 25012853Sgabeblack@google.com long rpb_checksum; /* 000: checksum of entire mem desc table */ 25112853Sgabeblack@google.com long rpb_impaddr; /* 008: PA of implementation dep info */ 25212853Sgabeblack@google.com long rpb_numcl; /* 010: number of clusters */ 25312853Sgabeblack@google.com struct rpb_cluster rpb_cluster[1]; /* first instance of a cluster */ 25412853Sgabeblack@google.com}; 25512853Sgabeblack@google.com 25612853Sgabeblack@google.com/* 25712853Sgabeblack@google.com * The "Console Terminal Block" portion of the HWRPB, for serial line 25812853Sgabeblack@google.com * UART console device. 25912853Sgabeblack@google.com */ 26012853Sgabeblack@google.comstruct ctb_tt { 26112853Sgabeblack@google.com long ctb_type; /* 000: console type */ 26212853Sgabeblack@google.com long ctb_unit; /* 008: console unit */ 26312853Sgabeblack@google.com long ctb_resv; /* 010: reserved */ 26412853Sgabeblack@google.com long ctb_length; /* 018: byte length of device dep portion */ 26512853Sgabeblack@google.com long ctb_csr; /* 020: CSR Address */ 26612853Sgabeblack@google.com long ctb_tivec; /* 028: <63>=tie; interrupt vector */ 26712853Sgabeblack@google.com long ctb_rivec; /* 030: <63>=rie; interrupt vector */ 26812853Sgabeblack@google.com long ctb_baud; /* 038: baud rate */ 26912853Sgabeblack@google.com long ctb_put_sts; /* 040: PUTS callback extended status */ 27012853Sgabeblack@google.com long ctb_get_sts; /* 048: GETS callback extended status */ 27112853Sgabeblack@google.com long ctb_rsvd[1]; /* 050: reserved for console use */ 27212853Sgabeblack@google.com}; 27312853Sgabeblack@google.com 27412853Sgabeblack@google.com/* 27512853Sgabeblack@google.com * The "Console Terminal Block" portion of the HWRPB. 27612853Sgabeblack@google.com */ 27712853Sgabeblack@google.comstruct rpb_ctb { 27812853Sgabeblack@google.com long rpb_type; /* 000: console type */ 27912853Sgabeblack@google.com long rpb_unit; /* 008: console unit */ 28012853Sgabeblack@google.com long rpb_resv; /* 010: reserved */ 28112853Sgabeblack@google.com long rpb_length; /* 018: byte length of device dep portion */ 28212853Sgabeblack@google.com long rpb_first; /* 000: first field of device dep portion */ 28312853Sgabeblack@google.com}; 28412853Sgabeblack@google.com 28512853Sgabeblack@google.com/* 28612853Sgabeblack@google.com * The physical/virtual map for the console routine block. 28712853Sgabeblack@google.com */ 28812853Sgabeblack@google.comstruct rpb_map { 28912853Sgabeblack@google.com long rpb_virt; /* virtual address for map entry */ 29012853Sgabeblack@google.com long rpb_phys; /* phys address for map entry */ 29112853Sgabeblack@google.com long rpb_pgcount; /* page count for map entry */ 29212853Sgabeblack@google.com}; 29312853Sgabeblack@google.com 29412853Sgabeblack@google.com/* 29512853Sgabeblack@google.com * The "Console Routine Block" portion of the HWRPB. 29612853Sgabeblack@google.com * Note: the "offsets" are all relative to the start of the HWRPB (HWRPB_ADDR). 29712853Sgabeblack@google.com */ 29812853Sgabeblack@google.comstruct rpb_crb { 29912853Sgabeblack@google.com long rpb_va_disp; /* va of call-back dispatch rtn */ 30012853Sgabeblack@google.com long rpb_pa_disp; /* pa of call-back dispatch rtn */ 30112853Sgabeblack@google.com long rpb_va_fixup; /* va of call-back fixup rtn */ 30212853Sgabeblack@google.com long rpb_pa_fixup; /* pa of call-back fixup rtn */ 30312853Sgabeblack@google.com long rpb_num; /* number of entries in phys/virt map */ 30412853Sgabeblack@google.com long rpb_mapped_pages; /* Number of pages to be mapped */ 30512853Sgabeblack@google.com struct rpb_map rpb_map[1]; /* first instance of a map entry */ 30612853Sgabeblack@google.com}; 30712853Sgabeblack@google.com 30812853Sgabeblack@google.com/* 30912853Sgabeblack@google.com * These macros define where within the HWRPB the CTB and CRB are located. 31012853Sgabeblack@google.com */ 31112853Sgabeblack@google.com#define CTB_SETUP \ 31212853Sgabeblack@google.com ((struct rpb_ctb *) ((long)hwrpb_addr + (long)(hwrpb_addr->rpb_ctb_off))) 31312853Sgabeblack@google.com 31412853Sgabeblack@google.com#define CRB_SETUP \ 31512853Sgabeblack@google.com ((struct rpb_crb *) ((long)hwrpb_addr + (long)(hwrpb_addr->rpb_crb_off))) 31612853Sgabeblack@google.com 31712853Sgabeblack@google.com/* 31812853Sgabeblack@google.com * The "Dynamic System Recognition" portion of the HWRPB. 31912853Sgabeblack@google.com * It is used to obtain the platform specific data need to allow 32012853Sgabeblack@google.com * the platform define the platform name, the platform SMM and LURT 32112853Sgabeblack@google.com * data for software licensing 32212853Sgabeblack@google.com */ 32312853Sgabeblack@google.comstruct rpb_dsr { 32412853Sgabeblack@google.com long rpb_smm; /* SMM nubber used by LMF */ 32512853Sgabeblack@google.com ulong rpb_lurt_off; /* offset to LURT table */ 32612853Sgabeblack@google.com ulong rpb_sysname_off; /* offset to sysname char count */ 32712853Sgabeblack@google.com int lurt[10]; /* XXM has one LURT entry */ 32812853Sgabeblack@google.com}; 32912853Sgabeblack@google.com