RTEMS: Processor Dependent Interrupt Management

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Typedefs
Processor Dependent Interrupt Management
Internal » SuperCore » CPU Architecture Support » i386 Specific Support

i386 Interrupt Management More...

## Typedefs
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__ *)

## Interrupt Level Macros
#define | i386_disable_interrupts(_level)
#define | i386_enable_interrupts(_level)
#define | i386_flash_interrupts(_level)
#define | i386_get_interrupt_level(_level)

## Detailed Description

i386 Interrupt Management

## Macro Definition Documentation

## ◆ 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 { \
uint32_t _eflags; \
\
__asm__ volatile ( "pushf ; \ pop %0" \
: "=rm" ((_eflags)) \
); \
\
_level = (_eflags & EFLAGS_INTR_ENABLE) ? 0 : 1; \
} while (0)