Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 212355
b: refs/heads/master
c: df9ee29
h: refs/heads/master
i:
  212353: 13a6bbb
  212351: 522d3db
v: v3
  • Loading branch information
David Howells committed Oct 7, 2010
1 parent 337d761 commit 53ac71d
Show file tree
Hide file tree
Showing 64 changed files with 1,483 additions and 1,159 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ca4d3e6746bdcfccb517349bce2d2c5b5614fb6f
refs/heads/master: df9ee29270c11dba7d0fe0b83ce47a4d8e8d2101
67 changes: 67 additions & 0 deletions trunk/arch/alpha/include/asm/irqflags.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#ifndef __ALPHA_IRQFLAGS_H
#define __ALPHA_IRQFLAGS_H

#include <asm/system.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 */
28 changes: 0 additions & 28 deletions trunk/arch/alpha/include/asm/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -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..
*/
Expand Down
145 changes: 84 additions & 61 deletions trunk/arch/arm/include/asm/irqflags.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,66 +10,85 @@
*/
#if __LINUX_ARM_ARCH__ >= 6

#define raw_local_irq_save(x) \
({ \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_save\n" \
"cpsid i" \
: "=r" (x) : : "memory", "cc"); \
})
static inline unsigned long arch_local_irq_save(void)
{
unsigned long flags;

asm volatile(
" mrs %0, cpsr @ arch_local_irq_save\n"
" cpsid i"
: "=r" (flags) : : "memory", "cc");
return flags;
}

static inline void arch_local_irq_enable(void)
{
asm volatile(
" cpsie i @ arch_local_irq_enable"
:
:
: "memory", "cc");
}

static inline void arch_local_irq_disable(void)
{
asm volatile(
" cpsid i @ arch_local_irq_disable"
:
:
: "memory", "cc");
}

#define raw_local_irq_enable() __asm__("cpsie i @ __sti" : : : "memory", "cc")
#define raw_local_irq_disable() __asm__("cpsid i @ __cli" : : : "memory", "cc")
#define local_fiq_enable() __asm__("cpsie f @ __stf" : : : "memory", "cc")
#define local_fiq_disable() __asm__("cpsid f @ __clf" : : : "memory", "cc")

#else

/*
* Save the current interrupt enable state & disable IRQs
*/
#define raw_local_irq_save(x) \
({ \
unsigned long temp; \
(void) (&temp == &x); \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_save\n" \
" orr %1, %0, #128\n" \
" msr cpsr_c, %1" \
: "=r" (x), "=r" (temp) \
: \
: "memory", "cc"); \
})

static inline unsigned long arch_local_irq_save(void)
{
unsigned long flags, temp;

asm volatile(
" mrs %0, cpsr @ arch_local_irq_save\n"
" orr %1, %0, #128\n"
" msr cpsr_c, %1"
: "=r" (flags), "=r" (temp)
:
: "memory", "cc");
return flags;
}

/*
* Enable IRQs
*/
#define raw_local_irq_enable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_enable\n" \
" bic %0, %0, #128\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
static inline void arch_local_irq_enable(void)
{
unsigned long temp;
asm volatile(
" mrs %0, cpsr @ arch_local_irq_enable\n"
" bic %0, %0, #128\n"
" msr cpsr_c, %0"
: "=r" (temp)
:
: "memory", "cc");
}

/*
* Disable IRQs
*/
#define raw_local_irq_disable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_disable\n" \
" orr %0, %0, #128\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
static inline void arch_local_irq_disable(void)
{
unsigned long temp;
asm volatile(
" mrs %0, cpsr @ arch_local_irq_disable\n"
" orr %0, %0, #128\n"
" msr cpsr_c, %0"
: "=r" (temp)
:
: "memory", "cc");
}

/*
* Enable FIQs
Expand Down Expand Up @@ -106,27 +125,31 @@
/*
* Save the current interrupt enable state.
*/
#define raw_local_save_flags(x) \
({ \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_save_flags" \
: "=r" (x) : : "memory", "cc"); \
})
static inline unsigned long arch_local_save_flags(void)
{
unsigned long flags;
asm volatile(
" mrs %0, cpsr @ local_save_flags"
: "=r" (flags) : : "memory", "cc");
return flags;
}

/*
* restore saved IRQ & FIQ state
*/
#define raw_local_irq_restore(x) \
__asm__ __volatile__( \
"msr cpsr_c, %0 @ local_irq_restore\n" \
: \
: "r" (x) \
: "memory", "cc")
static inline void arch_local_irq_restore(unsigned long flags)
{
asm volatile(
" msr cpsr_c, %0 @ local_irq_restore"
:
: "r" (flags)
: "memory", "cc");
}

#define raw_irqs_disabled_flags(flags) \
({ \
(int)((flags) & PSR_I_BIT); \
})
static inline int arch_irqs_disabled_flags(unsigned long flags)
{
return flags & PSR_I_BIT;
}

#endif
#endif
29 changes: 11 additions & 18 deletions trunk/arch/avr32/include/asm/irqflags.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,61 +8,54 @@
#ifndef __ASM_AVR32_IRQFLAGS_H
#define __ASM_AVR32_IRQFLAGS_H

#include <linux/types.h>
#include <asm/sysreg.h>

static inline unsigned long __raw_local_save_flags(void)
static inline unsigned long arch_local_save_flags(void)
{
return sysreg_read(SR);
}

#define raw_local_save_flags(x) \
do { (x) = __raw_local_save_flags(); } while (0)

/*
* This will restore ALL status register flags, not only the interrupt
* mask flag.
*
* The empty asm statement informs the compiler of this fact while
* also serving as a barrier.
*/
static inline void raw_local_irq_restore(unsigned long flags)
static inline void arch_local_irq_restore(unsigned long flags)
{
sysreg_write(SR, flags);
asm volatile("" : : : "memory", "cc");
}

static inline void raw_local_irq_disable(void)
static inline void arch_local_irq_disable(void)
{
asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");
}

static inline void raw_local_irq_enable(void)
static inline void arch_local_irq_enable(void)
{
asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");
}

static inline int raw_irqs_disabled_flags(unsigned long flags)
static inline bool arch_irqs_disabled_flags(unsigned long flags)
{
return (flags & SYSREG_BIT(GM)) != 0;
}

static inline int raw_irqs_disabled(void)
static inline bool arch_irqs_disabled(void)
{
unsigned long flags = __raw_local_save_flags();

return raw_irqs_disabled_flags(flags);
return arch_irqs_disabled_flags(arch_local_save_flags());
}

static inline unsigned long __raw_local_irq_save(void)
static inline unsigned long arch_local_irq_save(void)
{
unsigned long flags = __raw_local_save_flags();
unsigned long flags = arch_local_save_flags();

raw_local_irq_disable();
arch_local_irq_disable();

return flags;
}

#define raw_local_irq_save(flags) \
do { (flags) = __raw_local_irq_save(); } while (0)

#endif /* __ASM_AVR32_IRQFLAGS_H */
12 changes: 0 additions & 12 deletions trunk/arch/blackfin/include/asm/irqflags.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,16 +218,4 @@ static inline void hard_local_irq_restore(unsigned long flags)


#endif /* !CONFIG_IPIPE */

/*
* Raw interface to linux/irqflags.h.
*/
#define raw_local_save_flags(flags) do { (flags) = arch_local_save_flags(); } while (0)
#define raw_local_irq_save(flags) do { (flags) = arch_local_irq_save(); } while (0)
#define raw_local_irq_restore(flags) arch_local_irq_restore(flags)
#define raw_local_irq_enable() arch_local_irq_enable()
#define raw_local_irq_disable() arch_local_irq_disable()
#define raw_irqs_disabled_flags(flags) arch_irqs_disabled_flags(flags)
#define raw_irqs_disabled() arch_irqs_disabled()

#endif
1 change: 1 addition & 0 deletions trunk/arch/blackfin/kernel/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <linux/kallsyms.h>
#include <linux/err.h>
#include <linux/fs.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/trace.h>
#include <asm/fixed_code.h>
Expand Down
Loading

0 comments on commit 53ac71d

Please sign in to comment.