summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2018-04-18 15:46:41 +0200
committerHelge Deller <deller@gmx.de>2018-04-18 16:17:13 +0200
commit41dbee81c875300072f6154d6722f6e8e1353cca (patch)
tree016abcaa3e51fa83f1b6eb6a725793ccc1f7f191 /arch
parent89e050c87dab3e933dcb90677947752d19aeafa4 (diff)
downloadlinux-41dbee81c875300072f6154d6722f6e8e1353cca.tar.gz
linux-41dbee81c875300072f6154d6722f6e8e1353cca.tar.bz2
linux-41dbee81c875300072f6154d6722f6e8e1353cca.zip
parisc: Document rules regarding checksum of HPMC handler
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/parisc/kernel/traps.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 68e671a11987..71d31274d782 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -837,6 +837,17 @@ void __init initialize_ivt(const void *iva)
if (pdc_instr(&instr) == PDC_OK)
ivap[0] = instr;
+ /*
+ * Rules for the checksum of the HPMC handler:
+ * 1. The IVA does not point to PDC/PDH space (ie: the OS has installed
+ * its own IVA).
+ * 2. The word at IVA + 32 is nonzero.
+ * 3. If Length (IVA + 60) is not zero, then Length (IVA + 60) and
+ * Address (IVA + 56) are word-aligned.
+ * 4. The checksum of the 8 words starting at IVA + 32 plus the sum of
+ * the Length/4 words starting at Address is zero.
+ */
+
/* Compute Checksum for HPMC handler */
length = os_hpmc_size;
ivap[7] = length;