Commit 8d771b14 authored by Helge Deller's avatar Helge Deller

parisc: Add PDCE_CHECK instruction to HPMC handler

According to the programming note at page 1-31 of the PA 1.1 Firmware
Architecture document, one should use the PDC_INSTR firmware function to
get the instruction that invokes a PDCE_CHECK in the HPMC handler.  This
patch follows this note and sets the instruction which has been a nop up
until now.
Testing on a C3000 and C8000 showed that this firmware call isn't
implemented on those machines, so maybe it's only needed on older ones.
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 77089c52
...@@ -817,7 +817,7 @@ void __init initialize_ivt(const void *iva) ...@@ -817,7 +817,7 @@ void __init initialize_ivt(const void *iva)
u32 check = 0; u32 check = 0;
u32 *ivap; u32 *ivap;
u32 *hpmcp; u32 *hpmcp;
u32 length; u32 length, instr;
if (strcmp((const char *)iva, "cows can fly")) if (strcmp((const char *)iva, "cows can fly"))
panic("IVT invalid"); panic("IVT invalid");
...@@ -827,6 +827,14 @@ void __init initialize_ivt(const void *iva) ...@@ -827,6 +827,14 @@ void __init initialize_ivt(const void *iva)
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
*ivap++ = 0; *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 */ /* Compute Checksum for HPMC handler */
length = os_hpmc_size; length = os_hpmc_size;
ivap[7] = length; ivap[7] = length;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment