summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/score/cpu/powerpc/rtems/powerpc/registers.h17
1 files changed, 17 insertions, 0 deletions
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 )