lkml.org 
[lkml]   [2010]   [Aug]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/22] Fix Alpha irqflags
    Date

    ---

    arch/alpha/include/asm/irqflags.h | 65 +++++++++++++++++++++++++++++++++++++
    arch/alpha/include/asm/system.h | 28 ----------------
    2 files changed, 65 insertions(+), 28 deletions(-)
    create mode 100644 arch/alpha/include/asm/irqflags.h

    diff --git a/arch/alpha/include/asm/irqflags.h b/arch/alpha/include/asm/irqflags.h
    new file mode 100644
    index 0000000..75dfe395
    --- /dev/null
    +++ b/arch/alpha/include/asm/irqflags.h
    @@ -0,0 +1,65 @@
    +#ifndef __ALPHA_IRQFLAGS_H
    +#define __ALPHA_IRQFLAGS_H
    +
    +#define IPL_MIN 0
    +#define IPL_SW0 1
    +#define IPL_SW1 2
    +#define IPL_DEV0 3
    +#define IPL_DEV1 4
    +#define IPL_TIMER 5
    +#define IPL_PERF 6
    +#define IPL_POWERFAIL 6
    +#define IPL_MCHECK 7
    +#define IPL_MAX 7
    +
    +#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
    +#undef IPL_MIN
    +#define IPL_MIN __min_ipl
    +extern int __min_ipl;
    +#endif
    +
    +#define getipl() (rdps() & 7)
    +#define setipl(ipl) ((void) swpipl(ipl))
    +
    +static inline unsigned long arch_local_save_flags(void)
    +{
    + return rdps();
    +}
    +
    +static inline void arch_local_irq_disable(void)
    +{
    + setipl(IPL_MAX);
    + barrier();
    +}
    +
    +static inline unsigned long arch_local_irq_save(void)
    +{
    + unsigned long flags = swpipl(IPL_MAX);
    + barrier();
    + return flags;
    +}
    +
    +static inline void arch_local_irq_enable(void)
    +{
    + barrier();
    + setipl(IPL_MIN);
    +}
    +
    +static inline void arch_local_irq_restore(unsigned long flags)
    +{
    + barrier();
    + setipl(flags);
    + barrier();
    +}
    +
    +static inline bool arch_irqs_disabled_flags(unsigned long flags)
    +{
    + return flags == IPL_MAX;
    +}
    +
    +static inline bool arch_irqs_disabled(void)
    +{
    + return arch_irqs_disabled_flags(getipl());
    +}
    +
    +#endif /* __ALPHA_IRQFLAGS_H */
    diff --git a/arch/alpha/include/asm/system.h b/arch/alpha/include/asm/system.h
    index 5aa40cc..9f78e69 100644
    --- a/arch/alpha/include/asm/system.h
    +++ b/arch/alpha/include/asm/system.h
    @@ -259,34 +259,6 @@ __CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long);
    __CALL_PAL_W1(wrusp, unsigned long);
    __CALL_PAL_W1(wrvptptr, unsigned long);

    -#define IPL_MIN 0
    -#define IPL_SW0 1
    -#define IPL_SW1 2
    -#define IPL_DEV0 3
    -#define IPL_DEV1 4
    -#define IPL_TIMER 5
    -#define IPL_PERF 6
    -#define IPL_POWERFAIL 6
    -#define IPL_MCHECK 7
    -#define IPL_MAX 7
    -
    -#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
    -#undef IPL_MIN
    -#define IPL_MIN __min_ipl
    -extern int __min_ipl;
    -#endif
    -
    -#define getipl() (rdps() & 7)
    -#define setipl(ipl) ((void) swpipl(ipl))
    -
    -#define local_irq_disable() do { setipl(IPL_MAX); barrier(); } while(0)
    -#define local_irq_enable() do { barrier(); setipl(IPL_MIN); } while(0)
    -#define local_save_flags(flags) ((flags) = rdps())
    -#define local_irq_save(flags) do { (flags) = swpipl(IPL_MAX); barrier(); } while(0)
    -#define local_irq_restore(flags) do { barrier(); setipl(flags); barrier(); } while(0)
    -
    -#define irqs_disabled() (getipl() == IPL_MAX)
    -
    /*
    * TB routines..
    */


    \
     
     \ /
      Last update: 2010-08-27 04:05    [W:0.030 / U:149.400 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site