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 19/22] Fix PA-RISC irqflags
    Date

    ---

    arch/parisc/include/asm/irqflags.h | 46 ++++++++++++++++++++++++++++++++++++
    arch/parisc/include/asm/system.h | 19 +--------------
    2 files changed, 47 insertions(+), 18 deletions(-)
    create mode 100644 arch/parisc/include/asm/irqflags.h

    diff --git a/arch/parisc/include/asm/irqflags.h b/arch/parisc/include/asm/irqflags.h
    new file mode 100644
    index 0000000..40442a1
    --- /dev/null
    +++ b/arch/parisc/include/asm/irqflags.h
    @@ -0,0 +1,46 @@
    +#ifndef __PARISC_IRQFLAGS_H
    +#define __PARISC_IRQFLAGS_H
    +
    +#include <linux/types.h>
    +#include <asm/psw.h>
    +
    +static inline unsigned long arch_local_save_flags(void)
    +{
    + unsigned long flags;
    + asm volatile("ssm 0, %0" : "=r" (flags) : : "memory");
    + return flags;
    +}
    +
    +static inline void arch_local_irq_disable(void)
    +{
    + asm volatile("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory");
    +}
    +
    +static inline void arch_local_irq_enable(void)
    +{
    + asm volatile("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory");
    +}
    +
    +static inline unsigned long arch_local_irq_save(void)
    +{
    + unsigned long flags;
    + asm volatile ("rsm %1,%0" : "=r" (flags) :"i" (PSW_I) : "memory");
    + return flags;
    +}
    +
    +static inline void arch_local_irq_restore(unsigned long flags)
    +{
    + asm volatile ("mtsm %0" : : "r" (flags) : "memory");
    +}
    +
    +static inline bool arch_irqs_disabled_flags(unsigned long flags)
    +{
    + return (flags & PSW_I) == 0;
    +}
    +
    +static inline bool arch_irqs_disabled(void)
    +{
    + return arch_irqs_disabled_flags(arch_local_save_flags());
    +}
    +
    +#endif /* __PARISC_IRQFLAGS_H */
    diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h
    index 2ab4af5..b19e63a 100644
    --- a/arch/parisc/include/asm/system.h
    +++ b/arch/parisc/include/asm/system.h
    @@ -1,7 +1,7 @@
    #ifndef __PARISC_SYSTEM_H
    #define __PARISC_SYSTEM_H

    -#include <asm/psw.h>
    +#include <linux/irqflags.h>

    /* The program status word as bitfields. */
    struct pa_psw {
    @@ -48,23 +48,6 @@ extern struct task_struct *_switch_to(struct task_struct *, struct task_struct *
    (last) = _switch_to(prev, next); \
    } while(0)

    -/* interrupt control */
    -#define local_save_flags(x) __asm__ __volatile__("ssm 0, %0" : "=r" (x) : : "memory")
    -#define local_irq_disable() __asm__ __volatile__("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory" )
    -#define local_irq_enable() __asm__ __volatile__("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory" )
    -
    -#define local_irq_save(x) \
    - __asm__ __volatile__("rsm %1,%0" : "=r" (x) :"i" (PSW_I) : "memory" )
    -#define local_irq_restore(x) \
    - __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory" )
    -
    -#define irqs_disabled() \
    -({ \
    - unsigned long flags; \
    - local_save_flags(flags); \
    - (flags & PSW_I) == 0; \
    -})
    -
    #define mfctl(reg) ({ \
    unsigned long cr; \
    __asm__ __volatile__( \


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