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 1.9.5.x5
[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
..
831f8ff
100644
(file)
--- a/
arch/arm/mach-ixp2000/pci.c
+++ b/
arch/arm/mach-ixp2000/pci.c
@@
-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;
}