git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 2.0 rc7
[linux-2.6.git]
/
arch
/
arm
/
mach-ixp2000
/
pci.c
diff --git
a/arch/arm/mach-ixp2000/pci.c
b/arch/arm/mach-ixp2000/pci.c
index
d08cebe
..
5ff2f27
100644
(file)
--- a/
arch/arm/mach-ixp2000/pci.c
+++ b/
arch/arm/mach-ixp2000/pci.c
@@
-37,7
+37,7
@@
static int pci_master_aborts = 0;
static int clear_master_aborts(void);
static int clear_master_aborts(void);
-
static
u32 *
+u32 *
ixp2000_pci_config_addr(unsigned int bus_nr, unsigned int devfn, int where)
{
u32 *paddress;
ixp2000_pci_config_addr(unsigned int bus_nr, unsigned int devfn, int where)
{
u32 *paddress;
@@
-142,23
+142,24
@@
int ixp2000_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_re
{
volatile u32 temp;
{
volatile u32 temp;
+ unsigned long flags;
pci_master_aborts = 1;
pci_master_aborts = 1;
-
cli(
);
+
local_irq_save(flags
);
temp = *(IXP2000_PCI_CONTROL);
if (temp & ((1 << 8) | (1 << 5))) {
temp = *(IXP2000_PCI_CONTROL);
if (temp & ((1 << 8) | (1 << 5))) {
-
*(IXP2000_PCI_CONTROL) = temp
;
+
ixp2000_reg_write(IXP2000_PCI_CONTROL, temp)
;
}
temp = *(IXP2000_PCI_CMDSTAT);
if (temp & (1 << 29)) {
while (temp & (1 << 29)) {
}
temp = *(IXP2000_PCI_CMDSTAT);
if (temp & (1 << 29)) {
while (temp & (1 << 29)) {
-
*(IXP2000_PCI_CMDSTAT) = temp
;
+
ixp2000_reg_write(IXP2000_PCI_CMDSTAT, temp)
;
temp = *(IXP2000_PCI_CMDSTAT);
}
}
temp = *(IXP2000_PCI_CMDSTAT);
}
}
-
sti(
);
+
local_irq_restore(flags
);
/*
* If it was an imprecise abort, then we need to correct the
/*
* If it was an imprecise abort, then we need to correct the
@@
-174,21
+175,22
@@
int
clear_master_aborts(void)
{
volatile u32 temp;
clear_master_aborts(void)
{
volatile u32 temp;
+ unsigned long flags;
-
cli(
);
+
local_irq_save(flags
);
temp = *(IXP2000_PCI_CONTROL);
if (temp & ((1 << 8) | (1 << 5))) {
temp = *(IXP2000_PCI_CONTROL);
if (temp & ((1 << 8) | (1 << 5))) {
-
*(IXP2000_PCI_CONTROL) = temp
;
+
ixp2000_reg_write(IXP2000_PCI_CONTROL, temp)
;
}
temp = *(IXP2000_PCI_CMDSTAT);
if (temp & (1 << 29)) {
while (temp & (1 << 29)) {
}
temp = *(IXP2000_PCI_CMDSTAT);
if (temp & (1 << 29)) {
while (temp & (1 << 29)) {
-
*(IXP2000_PCI_CMDSTAT) = temp
;
+
ixp2000_reg_write(IXP2000_PCI_CMDSTAT, temp)
;
temp = *(IXP2000_PCI_CMDSTAT);
}
}
temp = *(IXP2000_PCI_CMDSTAT);
}
}
-
sti(
);
+
local_irq_restore(flags
);
return 0;
}
return 0;
}
@@
-206,15
+208,15
@@
ixp2000_pci_preinit(void)
* use our own resource space.
*/
static struct resource ixp2000_pci_mem_space = {
* use our own resource space.
*/
static struct resource ixp2000_pci_mem_space = {
- .start = 0x
0
0000000,
+ .start = 0x
e
0000000,
.end = 0xffffffff,
.flags = IORESOURCE_MEM,
.name = "PCI Mem Space"
};
static struct resource ixp2000_pci_io_space = {
.end = 0xffffffff,
.flags = IORESOURCE_MEM,
.name = "PCI Mem Space"
};
static struct resource ixp2000_pci_io_space = {
- .start = 0x000
0
0000,
- .end = 0x
ffff
ffff,
+ .start = 0x000
1
0000,
+ .end = 0x
0001
ffff,
.flags = IORESOURCE_IO,
.name = "PCI I/O Space"
};
.flags = IORESOURCE_IO,
.name = "PCI I/O Space"
};