27 #include <linux/kernel.h>
28 #include <linux/types.h>
30 #include <linux/sched.h>
31 #include <linux/pci.h>
33 #include <linux/reboot.h>
35 #include <linux/bitops.h>
37 #include <asm/ptrace.h>
40 #include <asm/mmu_context.h>
43 #include <asm/pgtable.h>
46 #include <asm/tlbflush.h>
56 nautilus_init_irq(
void)
58 if (alpha_using_srm) {
75 if (slot == 1 && pin == 2 &&
76 dev->
bus->self && dev->
bus->self->device == 0x700f)
91 if (! alpha_using_srm) {
93 pci_bus_read_config_byte(bus, 0x38, 0x43, &t8);
94 pci_bus_write_config_byte(bus, 0x38, 0x43, t8 | 0x80);
104 pci_bus_read_config_dword(bus, 0x88, 0x10, &pmuport);
108 pci_bus_read_config_dword(bus, 0x88, 0xe0, &pmuport);
111 outw(0xffff, pmuport);
112 outw(off, pmuport + 4);
121 naut_sys_machine_check(
unsigned long vector,
unsigned long la_ptr,
141 && ((
IRONGATE0->dramms & 0x300) == 0x300)) {
142 unsigned long nmi_ctl;
168 mchk_class =
"Correctable";
170 mchk_class =
"Fatal";
177 "[%s System Machine Check (NMI)]\n",
191 static struct resource irongate_mem = {
192 .name =
"Irongate PCI MEM",
202 unsigned long bus_align, bus_size, pci_mem;
211 bus->
self = irongate;
222 bus_align = bus->
resource[1]->start;
223 bus_size = bus->
resource[1]->end + 1 - bus_align;
224 if (bus_align < 0x1000000UL)
225 bus_align = 0x1000000
UL;
227 pci_mem = (0x100000000
UL - bus_size) & -bus_align;
234 if (pci_mem < memtop)
236 if (memtop > alpha_mv.min_mem_address) {
239 printk(
"nautilus_init_pci: %ldk freed\n",
240 (memtop - alpha_mv.min_mem_address) >> 10);
243 if ((
IRONGATE0->dev_vendor >> 16) > 0x7006)
258 struct alpha_machine_vector nautilus_mv
__initmv = {
259 .vector_name =
"Nautilus",
272 .init_irq = nautilus_init_irq,
276 .pci_map_irq = nautilus_map_irq,