diff options
Diffstat (limited to 'arch/parisc/kernel/traps.c')
| -rw-r--r-- | arch/parisc/kernel/traps.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 991654c88eec..8453724b8009 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/arch/parisc/traps.c   * @@ -817,7 +818,7 @@ void __init initialize_ivt(const void *iva)  	u32 check = 0;  	u32 *ivap;  	u32 *hpmcp; -	u32 length; +	u32 length, instr;  	if (strcmp((const char *)iva, "cows can fly"))  		panic("IVT invalid"); @@ -827,6 +828,14 @@ void __init initialize_ivt(const void *iva)  	for (i = 0; i < 8; i++)  	    *ivap++ = 0; +	/* +	 * Use PDC_INSTR firmware function to get instruction that invokes +	 * PDCE_CHECK in HPMC handler.  See programming note at page 1-31 of +	 * the PA 1.1 Firmware Architecture document. +	 */ +	if (pdc_instr(&instr) == PDC_OK) +		ivap[0] = instr; +  	/* Compute Checksum for HPMC handler */  	length = os_hpmc_size;  	ivap[7] = length; |