diff options
Diffstat (limited to 'cpukit/score/cpu/i386/rtems')
-rw-r--r-- | cpukit/score/cpu/i386/rtems/score/cpu.h | 7 | ||||
-rw-r--r-- | cpukit/score/cpu/i386/rtems/score/interrupts.h | 9 |
2 files changed, 15 insertions, 1 deletions
diff --git a/cpukit/score/cpu/i386/rtems/score/cpu.h b/cpukit/score/cpu/i386/rtems/score/cpu.h index 84a8c97038..ce703aec49 100644 --- a/cpukit/score/cpu/i386/rtems/score/cpu.h +++ b/cpukit/score/cpu/i386/rtems/score/cpu.h @@ -395,6 +395,7 @@ extern Context_Control_fp _CPU_Null_fp_context; * + set a particular level */ +#if !defined(RTEMS_PARAVIRT) #define _CPU_ISR_Disable( _level ) i386_disable_interrupts( _level ) #define _CPU_ISR_Enable( _level ) i386_enable_interrupts( _level ) @@ -406,6 +407,12 @@ extern Context_Control_fp _CPU_Null_fp_context; if ( _new_level ) __asm__ volatile ( "cli" ); \ else __asm__ volatile ( "sti" ); \ } +#else +#define _CPU_ISR_Disable( _level ) _level = i386_disable_interrupts( ) +#define _CPU_ISR_Enable( _level ) i386_enable_interrupts( _level ) +#define _CPU_ISR_Flash( _level ) i386_flash_interrupts( _level ) +#define _CPU_ISR_Set_level( _new_level ) i386_set_interrupt_level( _new_level) +#endif uint32_t _CPU_ISR_Get_level( void ); diff --git a/cpukit/score/cpu/i386/rtems/score/interrupts.h b/cpukit/score/cpu/i386/rtems/score/interrupts.h index 9cf0c99028..3a7971c1ff 100644 --- a/cpukit/score/cpu/i386/rtems/score/interrupts.h +++ b/cpukit/score/cpu/i386/rtems/score/interrupts.h @@ -33,7 +33,7 @@ typedef int (*rtems_raw_irq_is_enabled) (const struct __rtems_raw_irq_connect_d * */ /**@{**/ - +#if !defined(RTEMS_PARAVIRT) #define i386_disable_interrupts( _level ) \ { \ __asm__ volatile ( "pushf ; \ @@ -71,6 +71,13 @@ typedef int (*rtems_raw_irq_is_enabled) (const struct __rtems_raw_irq_connect_d \ _level = (_eflags & EFLAGS_INTR_ENABLE) ? 0 : 1; \ } while (0) +#else +uint32_t i386_disable_interrupts( void ); +void i386_enable_interrupts(uint32_t level); +void i386_flash_interrupts(uint32_t level); +void i386_set_interrupt_level(uint32_t new_level); +uint32_t i386_get_interrupt_level( void ); +#endif /* PARAVIRT */ /** @} */ |