diff options
Diffstat (limited to 'c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c')
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c index 1b9dcafefe..6b3d218e60 100644 --- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c +++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq.c @@ -38,6 +38,7 @@ static rtems_irq_connect_data* rtems_hdl_tbl; SPR_RW(BOOKE_TSR) +SPR_RW(PPC405_TSR) /* legacy mode for bookE DEC exception; * to avoid the double layer of function calls @@ -52,8 +53,12 @@ int C_dispatch_dec_handler_bookE (BSP_Exception_frame *frame, unsigned int excNu /* clear interrupt; we must do this * before C_dispatch_irq_handler() * re-enables MSR_EE. + * Note that PPC405 uses a different SPR# for TSR */ - _write_BOOKE_TSR( BOOKE_TSR_DIS ); + if ( ppc_cpu_is_bookE()==PPC_BOOKE_405) + _write_PPC405_TSR( BOOKE_TSR_DIS ); + else + _write_BOOKE_TSR( BOOKE_TSR_DIS ); return C_dispatch_irq_handler(frame, ASM_DEC_VECTOR); } |