11 #include <linux/kernel.h>
12 #include <linux/types.h>
14 #include <linux/sched.h>
15 #include <linux/pci.h>
17 #include <linux/reboot.h>
18 #include <linux/bitops.h>
20 #include <asm/ptrace.h>
23 #include <asm/mmu_context.h>
25 #include <asm/pgtable.h>
27 #include <asm/tlbflush.h>
36 static unsigned long cached_irq_mask;
39 alcor_update_irq_hw(
unsigned long mask)
48 alcor_update_irq_hw(cached_irq_mask |= 1
UL << (d->
irq - 16));
52 alcor_disable_irq(
struct irq_data *d)
54 alcor_update_irq_hw(cached_irq_mask &= ~(1
UL << (d->
irq - 16)));
58 alcor_mask_and_ack_irq(
struct irq_data *d)
68 alcor_isa_mask_and_ack_irq(
struct irq_data *d)
77 static struct irq_chip alcor_irq_type = {
79 .irq_unmask = alcor_enable_irq,
80 .irq_mask = alcor_disable_irq,
81 .irq_mask_ack = alcor_mask_and_ack_irq,
85 alcor_device_interrupt(
unsigned long vector)
121 for (i = 16; i < 48; ++
i) {
125 if (i >= 16+20 && i <= 16+30)
190 {16+13, 16+13, 16+13, 16+13, 16+13},
191 { 16+8, 16+8, 16+9, 16+10, 16+11},
192 {16+16, 16+16, 16+17, 16+18, 16+19},
193 {16+12, 16+12, 16+13, 16+14, 16+15},
194 { -1, -1, -1, -1, -1},
195 { 16+0, 16+0, 16+1, 16+2, 16+3},
196 { 16+4, 16+4, 16+5, 16+6, 16+7},
198 const long min_idsel = 6, max_idsel = 12, irqs_per_slot = 5;
203 alcor_kill_arch(
int mode)
207 #ifndef ALPHA_RESTORE_SRM_SETUP
211 if (alpha_using_srm) {
255 .vector_name =
"Alcor",
265 .device_interrupt = alcor_device_interrupt,
268 .init_irq = alcor_init_irq,
270 .init_pci = alcor_init_pci,
271 .kill_arch = alcor_kill_arch,
272 .pci_map_irq = alcor_map_irq,
281 struct alpha_machine_vector xlt_mv __initmv = {
282 .vector_name =
"XLT",
292 .device_interrupt = alcor_device_interrupt,
295 .init_irq = alcor_init_irq,
297 .init_pci = alcor_init_pci,
298 .kill_arch = alcor_kill_arch,
299 .pci_map_irq = alcor_map_irq,