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 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) |