summaryrefslogtreecommitdiff
path: root/cpukit/score/cpu/arm/rtems/score/cpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/arm/rtems/score/cpu.h')
-rw-r--r--cpukit/score/cpu/arm/rtems/score/cpu.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h
index 05e236c75a..2938954682 100644
--- a/cpukit/score/cpu/arm/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
@@ -320,8 +320,14 @@ static inline uint32_t arm_interrupt_disable( void )
*/
__asm__ volatile (
ARM_SWITCH_TO_ARM
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #4\n"
+#endif
"mrs %[level], cpsr\n"
"orr %[arm_switch_reg], %[level], #0x80\n"
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #5\n"
+#endif
"msr cpsr, %[arm_switch_reg]\n"
ARM_SWITCH_BACK
: [arm_switch_reg] "=&r" (arm_switch_reg), [level] "=&r" (level)
@@ -347,6 +353,9 @@ static inline void arm_interrupt_enable( uint32_t level )
__asm__ volatile (
ARM_SWITCH_TO_ARM
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #5\n"
+#endif
"msr cpsr, %[level]\n"
ARM_SWITCH_BACK
: ARM_SWITCH_OUTPUT
@@ -368,8 +377,17 @@ static inline void arm_interrupt_flash( uint32_t level )
__asm__ volatile (
ARM_SWITCH_TO_ARM
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #4\n"
+#endif
"mrs %[arm_switch_reg], cpsr\n"
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #5\n"
+#endif
"msr cpsr, %[level]\n"
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #5\n"
+#endif
"msr cpsr, %[arm_switch_reg]\n"
ARM_SWITCH_BACK
: [arm_switch_reg] "=&r" (arm_switch_reg)