]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/powerpc/kernel/head_40x.S
powerpc: Enable the Watchdog vector for 405
[mirror_ubuntu-bionic-kernel.git] / arch / powerpc / kernel / head_40x.S
index 4989661b710b4a0643d39ab9b2c238c6cf01d786..8a9b6f59822d666edf25ebc77326f2a5acbc8482 100644 (file)
@@ -430,30 +430,18 @@ label:
        EXCEPTION(0x0F00, Trap_0F, unknown_exception, EXC_XFER_EE)
 
 /* 0x1000 - Programmable Interval Timer (PIT) Exception */
-       START_EXCEPTION(0x1000, Decrementer)
-       NORMAL_EXCEPTION_PROLOG
-       lis     r0,TSR_PIS@h
-       mtspr   SPRN_TSR,r0             /* Clear the PIT exception */
-       addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_LITE(0x1000, timer_interrupt)
-
-#if 0
-/* NOTE:
- * FIT and WDT handlers are not implemented yet.
- */
+       . = 0x1000
+       b Decrementer
 
 /* 0x1010 - Fixed Interval Timer (FIT) Exception
 */
-       STND_EXCEPTION(0x1010,  FITException,           unknown_exception)
+       . = 0x1010
+       b FITException
 
 /* 0x1020 - Watchdog Timer (WDT) Exception
 */
-#ifdef CONFIG_BOOKE_WDT
-       CRITICAL_EXCEPTION(0x1020, WDTException, WatchdogException)
-#else
-       CRITICAL_EXCEPTION(0x1020, WDTException, unknown_exception)
-#endif
-#endif
+       . = 0x1020
+       b WDTException
 
 /* 0x1100 - Data TLB Miss Exception
  * As the name implies, translation is not in the MMU, so search the
@@ -738,6 +726,29 @@ label:
                (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \
                NOCOPY, crit_transfer_to_handler, ret_from_crit_exc)
 
+       /* Programmable Interval Timer (PIT) Exception. (from 0x1000) */
+Decrementer:
+       NORMAL_EXCEPTION_PROLOG
+       lis     r0,TSR_PIS@h
+       mtspr   SPRN_TSR,r0             /* Clear the PIT exception */
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       EXC_XFER_LITE(0x1000, timer_interrupt)
+
+       /* Fixed Interval Timer (FIT) Exception. (from 0x1010) */
+FITException:
+       NORMAL_EXCEPTION_PROLOG
+       addi    r3,r1,STACK_FRAME_OVERHEAD;
+       EXC_XFER_EE(0x1010, unknown_exception)
+
+       /* Watchdog Timer (WDT) Exception. (from 0x1020) */
+WDTException:
+       CRITICAL_EXCEPTION_PROLOG;
+       addi    r3,r1,STACK_FRAME_OVERHEAD;
+       EXC_XFER_TEMPLATE(WatchdogException, 0x1020+2,
+                         (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)),
+                         NOCOPY, crit_transfer_to_handler,
+                         ret_from_crit_exc)
+
 /*
  * The other Data TLB exceptions bail out to this point
  * if they can't resolve the lightweight TLB fault.