Intel I386 Interrupt Macros.
More...
Go to the source code of this file.
|
|
#define | i386_disable_interrupts(_level) |
|
#define | i386_enable_interrupts(_level) |
|
#define | i386_flash_interrupts(_level) |
|
#define | i386_get_interrupt_level(_level) |
|
#define | _CPU_ISR_Disable(_level) i386_disable_interrupts( _level ) |
|
#define | _CPU_ISR_Enable(_level) i386_enable_interrupts( _level ) |
|
|
typedef void(* | rtems_raw_irq_hdl) (void) |
|
typedef void(* | rtems_raw_irq_enable) (const struct __rtems_raw_irq_connect_data__ *) |
|
typedef void(* | rtems_raw_irq_disable) (const struct __rtems_raw_irq_connect_data__ *) |
|
typedef int(* | rtems_raw_irq_is_enabled) (const struct __rtems_raw_irq_connect_data__ *) |
|
Intel I386 Interrupt Macros.
Formerly contained in and extracted from libcpu/i386/cpu.h
◆ i386_disable_interrupts
#define i386_disable_interrupts |
( |
|
_level | ) |
|
Value:{ \
__asm__ volatile ( "pushf ; \ cli ; \ pop %0" \
: "=rm" ((_level)) \
); \
}
◆ i386_enable_interrupts
#define i386_enable_interrupts |
( |
|
_level | ) |
|
Value:{ \
__asm__ volatile ( "push %0 ; \ popf" \
: : "rm" ((_level)) : "cc" \
); \
}
◆ i386_flash_interrupts
#define i386_flash_interrupts |
( |
|
_level | ) |
|
Value:{ \
__asm__ volatile ( "push %0 ; \ popf ; \ cli" \
: : "rm" ((_level)) : "cc" \
); \
}
◆ i386_get_interrupt_level
#define i386_get_interrupt_level |
( |
|
_level | ) |
|
Value:do { \
register uint32_t _eflags; \
\
__asm__ volatile ( "pushf ; \ pop %0" \
: "=rm" ((_eflags)) \
); \
\
_level = (_eflags & EFLAGS_INTR_ENABLE) ? 0 : 1; \
} while (0)