{
volatile u32 temp;
+ unsigned long flags;
pci_master_aborts = 1;
- cli();
+ local_irq_save(flags);
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)) {
- *(IXP2000_PCI_CMDSTAT) = temp;
+ ixp2000_reg_write(IXP2000_PCI_CMDSTAT, temp);
temp = *(IXP2000_PCI_CMDSTAT);
}
}
- sti();
+ local_irq_restore(flags);
/*
* If it was an imprecise abort, then we need to correct the
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))) {
- *(IXP2000_PCI_CONTROL) = temp;
+ ixp2000_reg_write(IXP2000_PCI_CONTROL, temp);
}
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);
}
}
- sti();
+ local_irq_restore(flags);
return 0;
}