X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-x86_64%2Fmach-xen%2Fasm%2Firqflags.h;fp=include%2Fasm-x86_64%2Fmach-xen%2Fasm%2Firqflags.h;h=7b03e7a732e1ef767f16ba47e992b1dee056553a;hb=f05f9504c50ed069377d37f02f22e7a16b5921de;hp=0000000000000000000000000000000000000000;hpb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;p=linux-2.6.git diff --git a/include/asm-x86_64/mach-xen/asm/irqflags.h b/include/asm-x86_64/mach-xen/asm/irqflags.h new file mode 100644 index 000000000..7b03e7a73 --- /dev/null +++ b/include/asm-x86_64/mach-xen/asm/irqflags.h @@ -0,0 +1,65 @@ +/* + * include/asm-x86_64/irqflags.h + * + * IRQ flags handling + * + * This file gets included from lowlevel asm headers too, to provide + * wrapped versions of the local_irq_*() APIs, based on the + * raw_local_irq_*() functions from the lowlevel headers. + */ +#ifndef _ASM_IRQFLAGS_H +#define _ASM_IRQFLAGS_H + +#ifndef __ASSEMBLY__ +/* + * Interrupt control: + */ + +unsigned long __raw_local_save_flags(void); +#define raw_local_save_flags(flags) \ + do { (flags) = __raw_local_save_flags(); } while (0) + +void raw_local_irq_restore(unsigned long flags); +void raw_local_irq_disable(void); +void raw_local_irq_enable(void); + +static inline int raw_irqs_disabled_flags(unsigned long flags) +{ + return flags != 0; +} + +/* + * For spinlocks, etc.: + */ + +unsigned long __raw_local_irq_save(void); + +#define raw_local_irq_save(flags) \ + do { (flags) = __raw_local_irq_save(); } while (0) + +int raw_irqs_disabled(void); + +/* + * Used in the idle loop; sti takes one instruction cycle + * to complete: + */ +void raw_safe_halt(void); + + +/* + * Used when interrupts are already enabled or to + * shutdown the processor: + */ +void halt(void); + +#else /* __ASSEMBLY__: */ +# ifdef CONFIG_TRACE_IRQFLAGS +# define TRACE_IRQS_ON call trace_hardirqs_on_thunk +# define TRACE_IRQS_OFF call trace_hardirqs_off_thunk +# else +# define TRACE_IRQS_ON +# define TRACE_IRQS_OFF +# endif +#endif + +#endif