/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_PARISC_PDC_H #define _UAPI_PARISC_PDC_H
/* * PDC return values ... * All PDC calls return a subset of these errors.
*/
#define PDC_WARN 3/* Call completed with a warning */ #define PDC_REQ_ERR_1 2/* See above */ #define PDC_REQ_ERR_0 1/* Call would generate a requestor error */ #define PDC_OK 0/* Call completed successfully */ #define PDC_BAD_PROC -1/* Called non-existent procedure*/ #define PDC_BAD_OPTION -2/* Called with non-existent option */ #define PDC_ERROR -3/* Call could not complete without an error */ #define PDC_NE_MOD -5/* Module not found */ #define PDC_NE_CELL_MOD -7/* Cell module not found */ #define PDC_NE_BOOTDEV -9/* Cannot locate a console device or boot device */ #define PDC_INVALID_ARG -10/* Called with an invalid argument */ #define PDC_BUS_POW_WARN -12/* Call could not complete in allowed power budget */ #define PDC_NOT_NARROW -17/* Narrow mode not supported */
/* * PDC entry points...
*/
#define PDC_POW_FAIL 1/* perform a power-fail */ #define PDC_POW_FAIL_PREPARE 0/* prepare for powerfail */
#define PDC_PIM 3/* Get PIM data */ #define PDC_PIM_HPMC 0/* Transfer HPMC data */ #define PDC_PIM_RETURN_SIZE 1/* Get Max buffer needed for PIM*/ #define PDC_PIM_LPMC 2/* Transfer HPMC data */ #define PDC_PIM_SOFT_BOOT 3/* Transfer Soft Boot data */ #define PDC_PIM_TOC 4/* Transfer TOC data */
#define PDC_MODEL 4/* PDC model information call */ #define PDC_MODEL_INFO 0/* returns information */ #define PDC_MODEL_BOOTID 1/* set the BOOT_ID */ #define PDC_MODEL_VERSIONS 2/* returns cpu-internal versions*/ #define PDC_MODEL_SYSMODEL 3/* return system model info */ #define PDC_MODEL_ENSPEC 4/* enable specific option */ #define PDC_MODEL_DISPEC 5/* disable specific option */ #define PDC_MODEL_CPU_ID 6/* returns cpu-id (only newer machines!) */ #define PDC_MODEL_CAPABILITIES 7/* returns OS32/OS64-flags */ /* Values for PDC_MODEL_CAPABILITIES non-equivalent virtual aliasing support */ #define PDC_MODEL_OS64 (1 << 0) #define PDC_MODEL_OS32 (1 << 1) #define PDC_MODEL_IOPDIR_FDC (1 << 2) #define PDC_MODEL_NVA_MASK (3 << 4) #define PDC_MODEL_NVA_SUPPORTED (0 << 4) #define PDC_MODEL_NVA_SLOW (1 << 4) #define PDC_MODEL_NVA_UNSUPPORTED (3 << 4) #define PDC_MODEL_FIRM_TEST_GET 8/* returns boot test options */ #define PDC_MODEL_FIRM_TEST_SET 9/* set boot test options */ #define PDC_MODEL_GET_PLATFORM_INFO 10/* returns platform info */ #define PDC_MODEL_GET_INSTALL_KERNEL 11/* returns kernel for installation */
#define PA89_INSTRUCTION_SET 0x4 /* capabilities returned */ #define PA90_INSTRUCTION_SET 0x8
#define PDC_CACHE 5/* return/set cache (& TLB) info*/ #define PDC_CACHE_INFO 0/* returns information */ #define PDC_CACHE_SET_COH 1/* set coherence state */ #define PDC_CACHE_RET_SPID 2/* returns space-ID bits */
#define PDC_SOFT_POWER 23/* soft power switch */ #define PDC_SOFT_POWER_INFO 0/* return info about the soft power switch */ #define PDC_SOFT_POWER_ENABLE 1/* enable/disable soft power switch */
#define PDC_CRASH_PREP 25/* Prepare system for crash dump */ #define PDC_CRASH_DUMP 0/* Do platform specific preparations for dump */ #define PDC_CRASH_LOG_CEC_ERROR 1/* Dump hardware registers */
#define PDC_SCSI_PARMS 26/* Get and set SCSI parameters */ #define PDC_SCSI_GET_PARMS 0/* Get SCSI parameters for I/O device */ #define PDC_SCSI_SET_PARMS 1/* Set SCSI parameters for I/O device */
/* HVERSION dependent */
/* The PDC_MEM_MAP calls */ #define PDC_MEM_MAP 128/* on s700: return page info */ #define PDC_MEM_MAP_HPA 0/* returns hpa of a module */
/* constants for OS (NVM...) */ #define OS_ID_NONE 0/* Undefined OS ID */ #define OS_ID_HPUX 1/* HP-UX OS */ #define OS_ID_MPEXL 2/* MPE XL OS */ #define OS_ID_OSF 3/* OSF OS */ #define OS_ID_HPRT 4/* HP-RT OS */ #define OS_ID_NOVEL 5/* NOVELL OS */ #define OS_ID_LINUX 6/* Linux */
/* Page Zero constant offsets used by the HPMC handler */ #define BOOT_CONSOLE_HPA_OFFSET 0x3c0 #define BOOT_CONSOLE_SPA_OFFSET 0x3c4 #define BOOT_CONSOLE_PATH_OFFSET 0x3a8
/* size of the pdc_result buffer for firmware.c */ #define NUM_PDC_RESULT 32
struct hardware_path { unsignedchar flags; /* see bit definitions below */ signedchar bc[6]; /* Bus Converter routing info to a specific */ /* I/O adaptor (< 0 means none, > 63 resvd) */ signedchar mod; /* fixed field of specified module */
};
struct pz_device { struct pdc_module_path dp; /* see above */ /* struct iomod *hpa; */ unsignedint hpa; /* HPA base address */ /* char *spa; */ unsignedint spa; /* SPA base address */ /* int (*iodc_io)(struct iomod*, ...); */ unsignedint iodc_io; /* device entry point */ short pad; /* reserved */ unsignedshort cl_class;/* see below */
} __attribute__((aligned(8))) ;
struct zeropage { /* [0x000] initialize vectors (VEC) */ unsignedint vec_special; /* must be zero */ /* int (*vec_pow_fail)(void);*/ unsignedint vec_pow_fail; /* power failure handler */ /* int (*vec_toc)(void); */ unsignedint vec_toc; unsignedint vec_toclen; /* int (*vec_rendz)(void); */ unsignedint vec_rendz; int vec_pow_fail_flen; int vec_pad0[3]; unsignedint vec_toc_hi; int vec_pad1[6];
/* [0x040] reserved processor dependent */ int pad0[112]; /* in QEMU pad0[0] holds "SeaBIOS\0" */
/* [0x200] reserved */ int pad1[84];
/* [0x350] memory configuration (MC) */ int memc_cont; /* contiguous mem size (bytes) */ int memc_phsize; /* physical memory size */ int memc_adsize; /* additional mem size, bytes of SPA space used by PDC */ unsignedint mem_pdc_hi; /* used for 64-bit */
/* [0x360] various parameters for the boot-CPU */ /* unsigned int *mem_booterr[8]; */ unsignedint mem_booterr[8]; /* ptr to boot errors */ unsignedint mem_free; /* first location, where OS can be loaded */ /* struct iomod *mem_hpa; */ unsignedint mem_hpa; /* HPA of the boot-CPU */ /* int (*mem_pdc)(int, ...); */ unsignedint mem_pdc; /* PDC entry point */ unsignedint mem_10msec; /* number of clock ticks in 10msec */
/* [0x390] initial memory module (IMM) */ /* struct iomod *imm_hpa; */ unsignedint imm_hpa; /* HPA of the IMM */ int imm_soft_boot; /* 0 = was hard boot, 1 = was soft boot */ unsignedint imm_spa_size; /* SPA size of the IMM in bytes */ unsignedint imm_max_mem; /* bytes of mem in IMM */
/* [0x3A0] boot console, display device and keyboard */ struct pz_device mem_cons; /* description of console device */ struct pz_device mem_boot; /* description of boot device */ struct pz_device mem_kbd; /* description of keyboard device */
/* [0x430] reserved */ int pad430[116];
/* [0x600] processor dependent */ unsignedint pad600[1]; unsignedint proc_sti; /* pointer to STI ROM */ unsignedint pad608[126];
};
struct pdc_chassis_info { /* for PDC_CHASSIS_INFO */ unsignedlong actcnt; /* actual number of bytes returned */ unsignedlong maxcnt; /* maximum number of bytes that could be returned */
};
struct pdc_initiator { /* PDC_INITIATOR */ int host_id; int factor; int width; int mode;
};
/* Only used on some pre-PA2.0 boxes */ struct pdc_memory_map { /* PDC_MEMORY_MAP */ unsignedlong hpa; /* mod's register set address */ unsignedlong more_pgs; /* number of additional I/O pgs */
};
/* * architected results from PDC_PIM/transfer hpmc on a PA2.0 machine * * Note that PDC_PIM doesn't care whether or not wide mode was enabled * so the results are different on PA1.1 vs. PA2.0 when in narrow mode. * * Note also that there are unarchitected results available, which * are hversion dependent. Do a "ser pim 0 hpmc" after rebooting, since * the firmware is probably the best way of printing hversion dependent * data.
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.