summaryrefslogtreecommitdiff
path: root/cpukit/score/cpu/arm/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/arm/cpu.c')
-rw-r--r--cpukit/score/cpu/arm/cpu.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/cpu.c b/cpukit/score/cpu/arm/cpu.c
index ddfc37d243..42c9eacfff 100644
--- a/cpukit/score/cpu/arm/cpu.c
+++ b/cpukit/score/cpu/arm/cpu.c
@@ -127,9 +127,15 @@ void _CPU_ISR_Set_level( uint32_t level )
__asm__ volatile (
ARM_SWITCH_TO_ARM
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #4\n"
+#endif
"mrs %[arm_switch_reg], cpsr\n"
"bic %[arm_switch_reg], #" _CPU_ISR_LEVEL_STRINGOF( ARM_PSR_I ) "\n"
"orr %[arm_switch_reg], %[level]\n"
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #5\n"
+#endif
"msr cpsr, %0\n"
ARM_SWITCH_BACK
: [arm_switch_reg] "=&r" (arm_switch_reg)
@@ -144,6 +150,9 @@ uint32_t _CPU_ISR_Get_level( void )
__asm__ volatile (
ARM_SWITCH_TO_ARM
+#ifdef RTEMS_PARAVIRT_XTRATUM
+ "udf #4\n"
+#endif
"mrs %[level], cpsr\n"
"and %[level], #" _CPU_ISR_LEVEL_STRINGOF( ARM_PSR_I ) "\n"
ARM_SWITCH_BACK