diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/head_40x.S | 47 | ||||
-rw-r--r-- | arch/powerpc/kernel/traps.c | 2 |
2 files changed, 30 insertions, 19 deletions
diff --git a/arch/powerpc/kernel/head_40x.S b/arch/powerpc/kernel/head_40x.S index 4989661b710b..8a9b6f59822d 100644 --- a/arch/powerpc/kernel/head_40x.S +++ b/arch/powerpc/kernel/head_40x.S | |||
@@ -430,30 +430,18 @@ label: | |||
430 | EXCEPTION(0x0F00, Trap_0F, unknown_exception, EXC_XFER_EE) | 430 | EXCEPTION(0x0F00, Trap_0F, unknown_exception, EXC_XFER_EE) |
431 | 431 | ||
432 | /* 0x1000 - Programmable Interval Timer (PIT) Exception */ | 432 | /* 0x1000 - Programmable Interval Timer (PIT) Exception */ |
433 | START_EXCEPTION(0x1000, Decrementer) | 433 | . = 0x1000 |
434 | NORMAL_EXCEPTION_PROLOG | 434 | b Decrementer |
435 | lis r0,TSR_PIS@h | ||
436 | mtspr SPRN_TSR,r0 /* Clear the PIT exception */ | ||
437 | addi r3,r1,STACK_FRAME_OVERHEAD | ||
438 | EXC_XFER_LITE(0x1000, timer_interrupt) | ||
439 | |||
440 | #if 0 | ||
441 | /* NOTE: | ||
442 | * FIT and WDT handlers are not implemented yet. | ||
443 | */ | ||
444 | 435 | ||
445 | /* 0x1010 - Fixed Interval Timer (FIT) Exception | 436 | /* 0x1010 - Fixed Interval Timer (FIT) Exception |
446 | */ | 437 | */ |
447 | STND_EXCEPTION(0x1010, FITException, unknown_exception) | 438 | . = 0x1010 |
439 | b FITException | ||
448 | 440 | ||
449 | /* 0x1020 - Watchdog Timer (WDT) Exception | 441 | /* 0x1020 - Watchdog Timer (WDT) Exception |
450 | */ | 442 | */ |
451 | #ifdef CONFIG_BOOKE_WDT | 443 | . = 0x1020 |
452 | CRITICAL_EXCEPTION(0x1020, WDTException, WatchdogException) | 444 | b WDTException |
453 | #else | ||
454 | CRITICAL_EXCEPTION(0x1020, WDTException, unknown_exception) | ||
455 | #endif | ||
456 | #endif | ||
457 | 445 | ||
458 | /* 0x1100 - Data TLB Miss Exception | 446 | /* 0x1100 - Data TLB Miss Exception |
459 | * As the name implies, translation is not in the MMU, so search the | 447 | * As the name implies, translation is not in the MMU, so search the |
@@ -738,6 +726,29 @@ label: | |||
738 | (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \ | 726 | (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \ |
739 | NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) | 727 | NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) |
740 | 728 | ||
729 | /* Programmable Interval Timer (PIT) Exception. (from 0x1000) */ | ||
730 | Decrementer: | ||
731 | NORMAL_EXCEPTION_PROLOG | ||
732 | lis r0,TSR_PIS@h | ||
733 | mtspr SPRN_TSR,r0 /* Clear the PIT exception */ | ||
734 | addi r3,r1,STACK_FRAME_OVERHEAD | ||
735 | EXC_XFER_LITE(0x1000, timer_interrupt) | ||
736 | |||
737 | /* Fixed Interval Timer (FIT) Exception. (from 0x1010) */ | ||
738 | FITException: | ||
739 | NORMAL_EXCEPTION_PROLOG | ||
740 | addi r3,r1,STACK_FRAME_OVERHEAD; | ||
741 | EXC_XFER_EE(0x1010, unknown_exception) | ||
742 | |||
743 | /* Watchdog Timer (WDT) Exception. (from 0x1020) */ | ||
744 | WDTException: | ||
745 | CRITICAL_EXCEPTION_PROLOG; | ||
746 | addi r3,r1,STACK_FRAME_OVERHEAD; | ||
747 | EXC_XFER_TEMPLATE(WatchdogException, 0x1020+2, | ||
748 | (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), | ||
749 | NOCOPY, crit_transfer_to_handler, | ||
750 | ret_from_crit_exc) | ||
751 | |||
741 | /* | 752 | /* |
742 | * The other Data TLB exceptions bail out to this point | 753 | * The other Data TLB exceptions bail out to this point |
743 | * if they can't resolve the lightweight TLB fault. | 754 | * if they can't resolve the lightweight TLB fault. |
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 32518401af68..114ea241916f 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -1515,7 +1515,7 @@ void unrecoverable_exception(struct pt_regs *regs) | |||
1515 | die("Unrecoverable exception", regs, SIGABRT); | 1515 | die("Unrecoverable exception", regs, SIGABRT); |
1516 | } | 1516 | } |
1517 | 1517 | ||
1518 | #ifdef CONFIG_BOOKE_WDT | 1518 | #if defined(CONFIG_BOOKE_WDT) || defined(CONFIG_40x) |
1519 | /* | 1519 | /* |
1520 | * Default handler for a Watchdog exception, | 1520 | * Default handler for a Watchdog exception, |
1521 | * spins until a reboot occurs | 1521 | * spins until a reboot occurs |