From 08317ef3ff739b5abce2cbc0fc8bc2d9eb310b99 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 2 Oct 2015 07:30:13 +0200 Subject: powerpc: Use wrtee for e6500 multilib This reduces the code size. --- cpukit/score/cpu/powerpc/rtems/powerpc/registers.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'cpukit/score/cpu/powerpc/rtems') diff --git a/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h b/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h index 5502120d53..c982e460fd 100644 --- a/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h +++ b/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h @@ -620,6 +620,14 @@ static inline uint32_t ppc_interrupt_get_disable_mask( void ) static inline uint32_t ppc_interrupt_disable( void ) { uint32_t level; + +#if defined(__PPC_CPU_E6500__) + __asm__ volatile ( + "mfmsr %0;" + "wrteei 0" + : "=r" (level) + ); +#else uint32_t mask; __asm__ volatile ( @@ -630,17 +638,26 @@ static inline uint32_t ppc_interrupt_disable( void ) "mtmsr %1" : "=r" (level), "=r" (mask) ); +#endif return level; } static inline void ppc_interrupt_enable( uint32_t level ) { +#if defined(__PPC_CPU_E6500__) + __asm__ volatile ( + "wrtee %0" + : + : "r" (level) + ); +#else __asm__ volatile ( "mtmsr %0" : : "r" (level) ); +#endif } static inline void ppc_interrupt_flash( uint32_t level ) -- cgit v1.2.3