/* Declaration required for gcc < 4.9 to prevent -Werror=missing-prototypes */ externinlineunsignedlong native_save_fl(void); extern __always_inline unsignedlong native_save_fl(void)
{ unsignedlong flags;
/* * "=rm" is safe here, because "pop" adjusts the stack before * it evaluates its effective address -- this is part of the * documented behavior of the "pop" instruction.
*/ asmvolatile("# __raw_save_flags\n\t" "pushf ; pop %0"
: "=rm" (flags)
: /* no input */
: "memory");
static __always_inline void native_local_irq_restore(unsignedlong flags)
{ if (!native_irqs_disabled_flags(flags))
native_irq_enable();
}
#endif
#ifndef CONFIG_PARAVIRT #ifndef __ASSEMBLY__ /* * Used in the idle loop; sti takes one instruction cycle * to complete:
*/ static __always_inline void arch_safe_halt(void)
{
native_safe_halt();
}
/* * Used when interrupts are already enabled or to * shutdown the processor:
*/ static __always_inline void halt(void)
{
native_halt();
} #endif/* __ASSEMBLY__ */ #endif/* CONFIG_PARAVIRT */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.