diff options
| -rw-r--r-- | arch/arm/include/asm/system.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-integrator/pci_v3.c | 8 | ||||
| -rw-r--r-- | arch/arm/mach-iop13xx/pci.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ixp2000/pci.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ixp23xx/pci.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/common-pci.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-ks8695/pci.c | 4 | ||||
| -rw-r--r-- | arch/arm/mm/alignment.c | 6 | ||||
| -rw-r--r-- | arch/arm/mm/fault.c | 14 | ||||
| -rw-r--r-- | arch/arm/plat-iop/pci.c | 2 |
10 files changed, 25 insertions, 20 deletions
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 5f4f4800273..8ba1ccf82a0 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h | |||
| @@ -83,7 +83,7 @@ void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, | |||
| 83 | 83 | ||
| 84 | void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, | 84 | void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, |
| 85 | struct pt_regs *), | 85 | struct pt_regs *), |
| 86 | int sig, const char *name); | 86 | int sig, int code, const char *name); |
| 87 | 87 | ||
| 88 | #define xchg(ptr,x) \ | 88 | #define xchg(ptr,x) \ |
| 89 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | 89 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index 9cef0590d5a..6467d99fa2e 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
| @@ -505,10 +505,10 @@ void __init pci_v3_preinit(void) | |||
| 505 | /* | 505 | /* |
| 506 | * Hook in our fault handler for PCI errors | 506 | * Hook in our fault handler for PCI errors |
| 507 | */ | 507 | */ |
| 508 | hook_fault_code(4, v3_pci_fault, SIGBUS, "external abort on linefetch"); | 508 | hook_fault_code(4, v3_pci_fault, SIGBUS, 0, "external abort on linefetch"); |
| 509 | hook_fault_code(6, v3_pci_fault, SIGBUS, "external abort on linefetch"); | 509 | hook_fault_code(6, v3_pci_fault, SIGBUS, 0, "external abort on linefetch"); |
| 510 | hook_fault_code(8, v3_pci_fault, SIGBUS, "external abort on non-linefetch"); | 510 | hook_fault_code(8, v3_pci_fault, SIGBUS, 0, "external abort on non-linefetch"); |
| 511 | hook_fault_code(10, v3_pci_fault, SIGBUS, "external abort on non-linefetch"); | 511 | hook_fault_code(10, v3_pci_fault, SIGBUS, 0, "external abort on non-linefetch"); |
| 512 | 512 | ||
| 513 | spin_lock_irqsave(&v3_lock, flags); | 513 | spin_lock_irqsave(&v3_lock, flags); |
| 514 | 514 | ||
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c index 6d5a90813d3..773ea0c95b9 100644 --- a/arch/arm/mach-iop13xx/pci.c +++ b/arch/arm/mach-iop13xx/pci.c | |||
| @@ -987,7 +987,7 @@ void __init iop13xx_pci_init(void) | |||
| 987 | iop13xx_atux_setup(); | 987 | iop13xx_atux_setup(); |
| 988 | } | 988 | } |
| 989 | 989 | ||
| 990 | hook_fault_code(16+6, iop13xx_pci_abort, SIGBUS, | 990 | hook_fault_code(16+6, iop13xx_pci_abort, SIGBUS, 0, |
| 991 | "imprecise external abort"); | 991 | "imprecise external abort"); |
| 992 | } | 992 | } |
| 993 | 993 | ||
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c index 90771cad06f..f797c5f538b 100644 --- a/arch/arm/mach-ixp2000/pci.c +++ b/arch/arm/mach-ixp2000/pci.c | |||
| @@ -209,7 +209,7 @@ ixp2000_pci_preinit(void) | |||
| 209 | "the needed workaround has not been configured in"); | 209 | "the needed workaround has not been configured in"); |
| 210 | #endif | 210 | #endif |
| 211 | 211 | ||
| 212 | hook_fault_code(16+6, ixp2000_pci_abort_handler, SIGBUS, | 212 | hook_fault_code(16+6, ixp2000_pci_abort_handler, SIGBUS, 0, |
| 213 | "PCI config cycle to non-existent device"); | 213 | "PCI config cycle to non-existent device"); |
| 214 | } | 214 | } |
| 215 | 215 | ||
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c index 4b0e598a91c..563819a8329 100644 --- a/arch/arm/mach-ixp23xx/pci.c +++ b/arch/arm/mach-ixp23xx/pci.c | |||
| @@ -229,7 +229,7 @@ void __init ixp23xx_pci_preinit(void) | |||
| 229 | { | 229 | { |
| 230 | ixp23xx_pci_common_init(); | 230 | ixp23xx_pci_common_init(); |
| 231 | 231 | ||
| 232 | hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS, | 232 | hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS, 0, |
| 233 | "PCI config cycle to non-existent device"); | 233 | "PCI config cycle to non-existent device"); |
| 234 | 234 | ||
| 235 | *IXP23XX_PCI_ADDR_EXT = 0x0000e000; | 235 | *IXP23XX_PCI_ADDR_EXT = 0x0000e000; |
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index e3181534c7f..f4fbb5ec645 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
| @@ -382,7 +382,8 @@ void __init ixp4xx_pci_preinit(void) | |||
| 382 | 382 | ||
| 383 | 383 | ||
| 384 | /* hook in our fault handler for PCI errors */ | 384 | /* hook in our fault handler for PCI errors */ |
| 385 | hook_fault_code(16+6, abort_handler, SIGBUS, "imprecise external abort"); | 385 | hook_fault_code(16+6, abort_handler, SIGBUS, 0, |
| 386 | "imprecise external abort"); | ||
| 386 | 387 | ||
| 387 | pr_debug("setup PCI-AHB(inbound) and AHB-PCI(outbound) address mappings\n"); | 388 | pr_debug("setup PCI-AHB(inbound) and AHB-PCI(outbound) address mappings\n"); |
| 388 | 389 | ||
diff --git a/arch/arm/mach-ks8695/pci.c b/arch/arm/mach-ks8695/pci.c index 78499667eb7..5fcd082a17f 100644 --- a/arch/arm/mach-ks8695/pci.c +++ b/arch/arm/mach-ks8695/pci.c | |||
| @@ -268,8 +268,8 @@ static void __init ks8695_pci_preinit(void) | |||
| 268 | __raw_writel(0, KS8695_PCI_VA + KS8695_PIOBAC); | 268 | __raw_writel(0, KS8695_PCI_VA + KS8695_PIOBAC); |
| 269 | 269 | ||
| 270 | /* hook in fault handlers */ | 270 | /* hook in fault handlers */ |
| 271 | hook_fault_code(8, ks8695_pci_fault, SIGBUS, "external abort on non-linefetch"); | 271 | hook_fault_code(8, ks8695_pci_fault, SIGBUS, 0, "external abort on non-linefetch"); |
| 272 | hook_fault_code(10, ks8695_pci_fault, SIGBUS, "external abort on non-linefetch"); | 272 | hook_fault_code(10, ks8695_pci_fault, SIGBUS, 0, "external abort on non-linefetch"); |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | static void ks8695_show_pciregs(void) | 275 | static void ks8695_show_pciregs(void) |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 53a609680c1..77cfdbed950 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
| @@ -924,8 +924,10 @@ static int __init alignment_init(void) | |||
| 924 | ai_usermode = UM_FIXUP; | 924 | ai_usermode = UM_FIXUP; |
| 925 | } | 925 | } |
| 926 | 926 | ||
| 927 | hook_fault_code(1, do_alignment, SIGBUS, "alignment exception"); | 927 | hook_fault_code(1, do_alignment, SIGBUS, BUS_ADRALN, |
| 928 | hook_fault_code(3, do_alignment, SIGBUS, "alignment exception"); | 928 | "alignment exception"); |
| 929 | hook_fault_code(3, do_alignment, SIGBUS, BUS_ADRALN, | ||
| 930 | "alignment exception"); | ||
| 929 | 931 | ||
| 930 | return 0; | 932 | return 0; |
| 931 | } | 933 | } |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index ce6f3a422c8..84131c83243 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
| @@ -508,13 +508,15 @@ static struct fsr_info { | |||
| 508 | 508 | ||
| 509 | void __init | 509 | void __init |
| 510 | hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *), | 510 | hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *), |
| 511 | int sig, const char *name) | 511 | int sig, int code, const char *name) |
| 512 | { | 512 | { |
| 513 | if (nr >= 0 && nr < ARRAY_SIZE(fsr_info)) { | 513 | if (nr < 0 || nr >= ARRAY_SIZE(fsr_info)) |
| 514 | fsr_info[nr].fn = fn; | 514 | BUG(); |
| 515 | fsr_info[nr].sig = sig; | 515 | |
| 516 | fsr_info[nr].name = name; | 516 | fsr_info[nr].fn = fn; |
| 517 | } | 517 | fsr_info[nr].sig = sig; |
| 518 | fsr_info[nr].code = code; | ||
| 519 | fsr_info[nr].name = name; | ||
| 518 | } | 520 | } |
| 519 | 521 | ||
| 520 | /* | 522 | /* |
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c index ce31f316ac7..43f2b158237 100644 --- a/arch/arm/plat-iop/pci.c +++ b/arch/arm/plat-iop/pci.c | |||
| @@ -359,7 +359,7 @@ static void __init iop3xx_atu_debug(void) | |||
| 359 | DBG("ATU: IOP3XX_ATUCMD=0x%04x\n", *IOP3XX_ATUCMD); | 359 | DBG("ATU: IOP3XX_ATUCMD=0x%04x\n", *IOP3XX_ATUCMD); |
| 360 | DBG("ATU: IOP3XX_ATUCR=0x%08x\n", *IOP3XX_ATUCR); | 360 | DBG("ATU: IOP3XX_ATUCR=0x%08x\n", *IOP3XX_ATUCR); |
| 361 | 361 | ||
| 362 | hook_fault_code(16+6, iop3xx_pci_abort, SIGBUS, "imprecise external abort"); | 362 | hook_fault_code(16+6, iop3xx_pci_abort, SIGBUS, 0, "imprecise external abort"); |
| 363 | } | 363 | } |
| 364 | 364 | ||
| 365 | /* for platforms that might be host-bus-adapters */ | 365 | /* for platforms that might be host-bus-adapters */ |
