diff options
Diffstat (limited to 'cpukit/score/cpu/arm/rtems/score/cpu.h')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/cpu.h | 18 |
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 69838c5bf8..67d6b16c6d 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -333,8 +333,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) @@ -362,6 +368,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 @@ -383,8 +392,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) |