-
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.
yaml --- r: 25950 b: refs/heads/master c: d35d473 h: refs/heads/master v: v3
- Loading branch information
Ralf Baechle
committed
Apr 19, 2006
1 parent
a9b564a
commit 7f4cadb
Showing
10 changed files
with
261 additions
and
68 deletions.
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: fde3505c695e0de8ae7504b58d373db2d0ba498a | ||
refs/heads/master: d35d473c25d43d7db3e5e18b66d558d2a631cca8 |
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
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
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
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 |
---|---|---|
|
@@ -19,4 +19,4 @@ | |
# under Linux. | ||
# | ||
|
||
obj-y := malta_int.o malta_setup.o | ||
obj-y := malta_int.o malta-irq.o malta_setup.o |
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,122 @@ | ||
/* | ||
* Carsten Langgaard, carstenl@mips.com | ||
* Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved. | ||
* | ||
* ######################################################################## | ||
* | ||
* This program is free software; you can distribute it and/or modify it | ||
* under the terms of the GNU General Public License (Version 2) as | ||
* published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License along | ||
* with this program; if not, write to the Free Software Foundation, Inc., | ||
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. | ||
* | ||
* ######################################################################## | ||
* | ||
* Interrupt exception dispatch code. | ||
* | ||
*/ | ||
#include <linux/config.h> | ||
|
||
#include <asm/asm.h> | ||
#include <asm/mipsregs.h> | ||
#include <asm/regdef.h> | ||
#include <asm/stackframe.h> | ||
#include <asm/mips-boards/maltaint.h> | ||
|
||
/* | ||
* IRQs on the Malta board look basically (barring software IRQs which we | ||
* don't use at all and all external interrupt sources are combined together | ||
* on hardware interrupt 0 (MIPS IRQ 2)) like: | ||
* | ||
* MIPS IRQ Source | ||
* -------- ------ | ||
* 0 Software (ignored) | ||
* 1 Software (ignored) | ||
* 2 Combined hardware interrupt (hw0) | ||
* 3 Hardware (ignored) | ||
* 4 Hardware (ignored) | ||
* 5 Hardware (ignored) | ||
* 6 Hardware (ignored) | ||
* 7 R4k timer (what we use) | ||
* | ||
* We handle the IRQ according to _our_ priority which is: | ||
* | ||
* Highest ---- R4k Timer | ||
* Lowest ---- Combined hardware interrupt | ||
* | ||
* then we just return, if multiple IRQs are pending then we will just take | ||
* another exception, big deal. | ||
*/ | ||
|
||
.text | ||
.set noreorder | ||
.set noat | ||
.align 5 | ||
NESTED(mipsIRQ, PT_SIZE, sp) | ||
SAVE_ALL | ||
CLI | ||
.set at | ||
|
||
mfc0 s0, CP0_CAUSE # get irq bits | ||
mfc0 s1, CP0_STATUS # get irq mask | ||
andi s0, ST0_IM # CAUSE.CE may be non-zero! | ||
and s0, s1 | ||
|
||
#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64) | ||
.set mips32 | ||
clz a0, s0 | ||
.set mips0 | ||
negu a0 | ||
addu a0, 31-CAUSEB_IP | ||
bltz a0, spurious | ||
#else | ||
beqz s0, spurious | ||
li a0, 7 | ||
|
||
and t0, s0, 0xf000 | ||
sltiu t0, t0, 1 | ||
sll t0, 2 | ||
subu a0, t0 | ||
sll s0, t0 | ||
|
||
and t0, s0, 0xc000 | ||
sltiu t0, t0, 1 | ||
sll t0, 1 | ||
subu a0, t0 | ||
sll s0, t0 | ||
|
||
and t0, s0, 0x8000 | ||
sltiu t0, t0, 1 | ||
# sll t0, 0 | ||
subu a0, t0 | ||
# sll s0, t0 | ||
#endif | ||
|
||
li a1, MIPSCPU_INT_I8259A | ||
bne a0, a1, 1f | ||
addu a0, MIPSCPU_INT_BASE | ||
|
||
jal malta_hw0_irqdispatch | ||
move a0, sp | ||
|
||
j ret_from_irq | ||
nop | ||
1: | ||
|
||
jal do_IRQ | ||
move a1, sp | ||
|
||
j ret_from_irq | ||
nop | ||
|
||
spurious: | ||
j spurious_interrupt | ||
nop | ||
END(mipsIRQ) |
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 |
---|---|---|
|
@@ -23,4 +23,4 @@ | |
# under Linux. | ||
# | ||
|
||
obj-y := sead_int.o sead_setup.o | ||
obj-y := sead_int.o sead-irq.o sead_setup.o |
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,111 @@ | ||
/* | ||
* Carsten Langgaard, carstenl@mips.com | ||
* Copyright (C) 1999, 2000 MIPS Technologies, Inc. All rights reserved. | ||
* | ||
* ######################################################################## | ||
* | ||
* This program is free software; you can distribute it and/or modify it | ||
* under the terms of the GNU General Public License (Version 2) as | ||
* published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License along | ||
* with this program; if not, write to the Free Software Foundation, Inc., | ||
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. | ||
* | ||
* ######################################################################## | ||
* | ||
* Interrupt exception dispatch code. | ||
* | ||
*/ | ||
#include <linux/config.h> | ||
|
||
#include <asm/asm.h> | ||
#include <asm/mipsregs.h> | ||
#include <asm/regdef.h> | ||
#include <asm/stackframe.h> | ||
#include <asm/mips-boards/seadint.h> | ||
|
||
/* | ||
* IRQs on the SEAD board look basically are combined together on hardware | ||
* interrupt 0 (MIPS IRQ 2)) like: | ||
* | ||
* MIPS IRQ Source | ||
* -------- ------ | ||
* 0 Software (ignored) | ||
* 1 Software (ignored) | ||
* 2 UART0 (hw0) | ||
* 3 UART1 (hw1) | ||
* 4 Hardware (ignored) | ||
* 5 Hardware (ignored) | ||
* 6 Hardware (ignored) | ||
* 7 R4k timer (what we use) | ||
* | ||
* We handle the IRQ according to _our_ priority which is: | ||
* | ||
* Highest ---- R4k Timer | ||
* Lowest ---- Combined hardware interrupt | ||
* | ||
* then we just return, if multiple IRQs are pending then we will just take | ||
* another exception, big deal. | ||
*/ | ||
|
||
.text | ||
.set noreorder | ||
.set noat | ||
.align 5 | ||
NESTED(mipsIRQ, PT_SIZE, sp) | ||
SAVE_ALL | ||
CLI | ||
.set at | ||
|
||
mfc0 s0, CP0_CAUSE # get irq bits | ||
mfc0 s1, CP0_STATUS # get irq mask | ||
andi s0, ST0_IM # CAUSE.CE may be non-zero! | ||
and s0, s1 | ||
|
||
#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64) | ||
.set mips32 | ||
clz a0, s0 | ||
.set mips0 | ||
negu a0 | ||
addu a0, 31-CAUSEB_IP | ||
bltz a0, spurious | ||
#else | ||
beqz s0, spurious | ||
li a0, 7 | ||
|
||
and t0, s0, 0xf000 | ||
sltiu t0, t0, 1 | ||
sll t0, 2 | ||
subu a0, t0 | ||
sll s0, t0 | ||
|
||
and t0, s0, 0xc000 | ||
sltiu t0, t0, 1 | ||
sll t0, 1 | ||
subu a0, t0 | ||
sll s0, t0 | ||
|
||
and t0, s0, 0x8000 | ||
sltiu t0, t0, 1 | ||
# sll t0, 0 | ||
subu a0, t0 | ||
# sll s0, t0 | ||
#endif | ||
|
||
addu a0, MIPSCPU_INT_BASE | ||
jal do_IRQ | ||
move a1, sp | ||
|
||
j ret_from_irq | ||
nop | ||
|
||
spurious: | ||
j spurious_interrupt | ||
nop | ||
END(mipsIRQ) |
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
Oops, something went wrong.