-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Michal Simek
committed
Mar 27, 2009
1 parent
9f58086
commit 00c4502
Showing
5 changed files
with
154 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 69b1b7817e68379aa55d4677657135a05a287785 | ||
refs/heads/master: 4dbdc9a59656d9166f9baaf8733b73e2ad0c8fa5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#include <asm-generic/irq_regs.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 */ |