diff options
| -rw-r--r-- | arch/parisc/kernel/traps.c | 11 |
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) | |||
| 837 | if (pdc_instr(&instr) == PDC_OK) | 837 | if (pdc_instr(&instr) == PDC_OK) |
| 838 | ivap[0] = instr; | 838 | ivap[0] = instr; |
| 839 | 839 | ||
| 840 | /* | ||
| 841 | * Rules for the checksum of the HPMC handler: | ||
| 842 | * 1. The IVA does not point to PDC/PDH space (ie: the OS has installed | ||
| 843 | * its own IVA). | ||
| 844 | * 2. The word at IVA + 32 is nonzero. | ||
| 845 | * 3. If Length (IVA + 60) is not zero, then Length (IVA + 60) and | ||
| 846 | * Address (IVA + 56) are word-aligned. | ||
| 847 | * 4. The checksum of the 8 words starting at IVA + 32 plus the sum of | ||
| 848 | * the Length/4 words starting at Address is zero. | ||
| 849 | */ | ||
| 850 | |||
| 840 | /* Compute Checksum for HPMC handler */ | 851 | /* Compute Checksum for HPMC handler */ |
| 841 | length = os_hpmc_size; | 852 | length = os_hpmc_size; |
| 842 | ivap[7] = length; | 853 | ivap[7] = length; |
