Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 143037
b: refs/heads/master
c: 4dbdc9a
h: refs/heads/master
i:
  143035: 7bd32b6
v: v3
  • Loading branch information
Michal Simek committed Mar 27, 2009
1 parent 9f58086 commit 00c4502
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 69b1b7817e68379aa55d4677657135a05a287785
refs/heads/master: 4dbdc9a59656d9166f9baaf8733b73e2ad0c8fa5
29 changes: 29 additions & 0 deletions trunk/arch/microblaze/include/asm/hardirq.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2006 Atmark Techno, Inc.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*/

#ifndef _ASM_MICROBLAZE_HARDIRQ_H
#define _ASM_MICROBLAZE_HARDIRQ_H

#include <linux/cache.h>
#include <linux/irq.h>
#include <asm/irq.h>
#include <asm/current.h>
#include <linux/ptrace.h>

/* should be defined in each interrupt controller driver */
extern unsigned int get_irq(struct pt_regs *regs);

typedef struct {
unsigned int __softirq_pending;
} ____cacheline_aligned irq_cpustat_t;

void ack_bad_irq(unsigned int irq);

#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */

#endif /* _ASM_MICROBLAZE_HARDIRQ_H */
Empty file.
1 change: 1 addition & 0 deletions trunk/arch/microblaze/include/asm/irq_regs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
123 changes: 123 additions & 0 deletions trunk/arch/microblaze/include/asm/irqflags.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/*
* Copyright (C) 2006 Atmark Techno, Inc.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*/

#ifndef _ASM_MICROBLAZE_IRQFLAGS_H
#define _ASM_MICROBLAZE_IRQFLAGS_H

#include <linux/irqflags.h>

# if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR

# define local_irq_save(flags) \
do { \
asm volatile ("# local_irq_save \n\t" \
"msrclr %0, %1 \n\t" \
"nop \n\t" \
: "=r"(flags) \
: "i"(MSR_IE) \
: "memory"); \
} while (0)

# define local_irq_disable() \
do { \
asm volatile ("# local_irq_disable \n\t" \
"msrclr r0, %0 \n\t" \
"nop \n\t" \
: \
: "i"(MSR_IE) \
: "memory"); \
} while (0)

# define local_irq_enable() \
do { \
asm volatile ("# local_irq_enable \n\t" \
"msrset r0, %0 \n\t" \
"nop \n\t" \
: \
: "i"(MSR_IE) \
: "memory"); \
} while (0)

# else /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 0 */

# define local_irq_save(flags) \
do { \
register unsigned tmp; \
asm volatile ("# local_irq_save \n\t" \
"mfs %0, rmsr \n\t" \
"nop \n\t" \
"andi %1, %0, %2 \n\t" \
"mts rmsr, %1 \n\t" \
"nop \n\t" \
: "=r"(flags), "=r" (tmp) \
: "i"(~MSR_IE) \
: "memory"); \
} while (0)

# define local_irq_disable() \
do { \
register unsigned tmp; \
asm volatile ("# local_irq_disable \n\t" \
"mfs %0, rmsr \n\t" \
"nop \n\t" \
"andi %0, %0, %1 \n\t" \
"mts rmsr, %0 \n\t" \
"nop \n\t" \
: "=r"(tmp) \
: "i"(~MSR_IE) \
: "memory"); \
} while (0)

# define local_irq_enable() \
do { \
register unsigned tmp; \
asm volatile ("# local_irq_enable \n\t" \
"mfs %0, rmsr \n\t" \
"nop \n\t" \
"ori %0, %0, %1 \n\t" \
"mts rmsr, %0 \n\t" \
"nop \n\t" \
: "=r"(tmp) \
: "i"(MSR_IE) \
: "memory"); \
} while (0)

# endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */

#define local_save_flags(flags) \
do { \
asm volatile ("# local_save_flags \n\t" \
"mfs %0, rmsr \n\t" \
"nop \n\t" \
: "=r"(flags) \
: \
: "memory"); \
} while (0)

#define local_irq_restore(flags) \
do { \
asm volatile ("# local_irq_restore \n\t"\
"mts rmsr, %0 \n\t" \
"nop \n\t" \
: \
: "r"(flags) \
: "memory"); \
} while (0)

static inline int irqs_disabled(void)
{
unsigned long flags;

local_save_flags(flags);
return ((flags & MSR_IE) == 0);
}

#define raw_irqs_disabled irqs_disabled
#define raw_irqs_disabled_flags(flags) ((flags) == 0)

#endif /* _ASM_MICROBLAZE_IRQFLAGS_H */

0 comments on commit 00c4502

Please sign in to comment.