/* 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_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 */
/* 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.