• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/i386/kernel/

Lines Matching refs:apic

57 static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
92 int apic, pin, next;
107 static inline unsigned int io_apic_read(unsigned int apic, unsigned int reg)
109 struct io_apic __iomem *io_apic = io_apic_base(apic);
114 static inline void io_apic_write(unsigned int apic, unsigned int reg, unsigned int value)
116 struct io_apic __iomem *io_apic = io_apic_base(apic);
127 static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value)
129 volatile struct io_apic __iomem *io_apic = io_apic_base(apic);
140 static struct IO_APIC_route_entry ioapic_read_entry(int apic, int pin)
145 eu.w1 = io_apic_read(apic, 0x10 + 2 * pin);
146 eu.w2 = io_apic_read(apic, 0x11 + 2 * pin);
158 __ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e)
162 io_apic_write(apic, 0x11 + 2*pin, eu.w2);
163 io_apic_write(apic, 0x10 + 2*pin, eu.w1);
166 static void ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e)
170 __ioapic_write_entry(apic, pin, e);
179 static void ioapic_mask_entry(int apic, int pin)
185 io_apic_write(apic, 0x10 + 2*pin, eu.w1);
186 io_apic_write(apic, 0x11 + 2*pin, eu.w2);
195 static void add_pin_to_irq(unsigned int irq, int apic, int pin)
209 entry->apic = apic;
223 if (entry->apic == oldapic && entry->pin == oldpin) {
224 entry->apic = newapic;
242 reg = io_apic_read(entry->apic, 0x10 + pin*2);
245 io_apic_modify(entry->apic, 0x10 + pin*2, reg);
294 static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin)
299 entry = ioapic_read_entry(apic, pin);
306 ioapic_mask_entry(apic, pin);
311 int apic, pin;
313 for (apic = 0; apic < nr_ioapics; apic++)
314 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++)
315 clear_IO_APIC_pin(apic, pin);
341 io_apic_write(entry->apic, 0x10 + 1 + pin*2, apicid_value);
817 static int find_irq_entry(int apic, int pin, int type)
823 (mp_irqs[i].mpc_dstapic == mp_ioapics[apic].mpc_apicid ||
869 int apic;
870 for(apic = 0; apic < nr_ioapics; apic++) {
871 if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic)
872 return apic;
883 static int pin_2_irq(int idx, int apic, int pin);
887 int apic, i, best_guess = -1;
898 for (apic = 0; apic < nr_ioapics; apic++)
899 if (mp_ioapics[apic].mpc_apicid == mp_irqs[i].mpc_dstapic ||
907 int irq = pin_2_irq(i,apic,mp_irqs[i].mpc_dstirq);
909 if (!(apic || IO_APIC_IRQ(irq)))
1140 static int pin_2_irq(int idx, int apic, int pin)
1166 while (i < apic)
1174 irq = ioapic_renumber_irq(apic, irq);
1207 int apic, idx, pin;
1209 for (apic = 0; apic < nr_ioapics; apic++) {
1210 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
1211 idx = find_irq_entry(apic,pin,mp_INT);
1212 if ((idx != -1) && (irq == pin_2_irq(idx,apic,pin)))
1290 int apic, pin, idx, irq, first_notcon = 1, vector;
1295 for (apic = 0; apic < nr_ioapics; apic++) {
1296 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
1309 idx = find_irq_entry(apic,pin,mp_INT);
1314 mp_ioapics[apic].mpc_apicid,
1319 mp_ioapics[apic].mpc_apicid, pin);
1331 irq = pin_2_irq(idx, apic, pin);
1336 if (multi_timer_check(apic, irq))
1339 add_pin_to_irq(irq, apic, pin);
1341 if (!apic && !IO_APIC_IRQ(irq))
1349 if (!apic && (irq < 16))
1353 __ioapic_write_entry(apic, pin, entry);
1365 static void __init setup_ExtINT_IRQ0_pin(unsigned int apic, unsigned int pin, int vector)
1398 ioapic_write_entry(apic, pin, entry);
1405 int apic, i;
1426 for (apic = 0; apic < nr_ioapics; apic++) {
1429 reg_00.raw = io_apic_read(apic, 0);
1430 reg_01.raw = io_apic_read(apic, 1);
1432 reg_02.raw = io_apic_read(apic, 2);
1434 reg_03.raw = io_apic_read(apic, 3);
1437 printk(KERN_DEBUG "IO APIC #%d......\n", mp_ioapics[apic].mpc_apicid);
1478 entry = ioapic_read_entry(apic, i);
1505 printk("-> %d:%d", entry->apic, entry->pin);
1523 int i, apic;
1537 for (apic = 0; apic < nr_ioapics; apic++) {
1539 reg_01.raw = io_apic_read(apic, 1);
1541 nr_ioapic_registers[apic] = reg_01.bits.entries+1;
1543 for(apic = 0; apic < nr_ioapics; apic++) {
1546 for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
1548 entry = ioapic_read_entry(apic, pin);
1555 ioapic_i8259.apic = apic;
1573 ioapic_i8259.apic = i8259_apic;
1576 if (((ioapic_i8259.apic != i8259_apic) || (ioapic_i8259.pin != i8259_pin)) &&
1621 ioapic_write_entry(ioapic_i8259.apic, ioapic_i8259.pin, entry);
1638 int apic;
1659 for (apic = 0; apic < nr_ioapics; apic++) {
1663 reg_00.raw = io_apic_read(apic, 0);
1666 old_id = mp_ioapics[apic].mpc_apicid;
1668 if (mp_ioapics[apic].mpc_apicid >= get_physical_broadcast()) {
1670 apic, mp_ioapics[apic].mpc_apicid);
1673 mp_ioapics[apic].mpc_apicid = reg_00.bits.ID;
1682 mp_ioapics[apic].mpc_apicid)) {
1684 apic, mp_ioapics[apic].mpc_apicid);
1693 mp_ioapics[apic].mpc_apicid = i;
1696 tmp = apicid_to_cpu_present(mp_ioapics[apic].mpc_apicid);
1699 mp_ioapics[apic].mpc_apicid);
1708 if (old_id != mp_ioapics[apic].mpc_apicid)
1712 = mp_ioapics[apic].mpc_apicid;
1720 mp_ioapics[apic].mpc_apicid);
1722 reg_00.bits.ID = mp_ioapics[apic].mpc_apicid;
1724 io_apic_write(apic, 0, reg_00.raw);
1731 reg_00.raw = io_apic_read(apic, 0);
1733 if (reg_00.bits.ID != mp_ioapics[apic].mpc_apicid)
1958 int apic, pin, i;
1967 apic = find_isa_irq_apic(8, mp_INT);
1968 if (apic == -1) {
1973 entry0 = ioapic_read_entry(apic, pin);
1974 clear_IO_APIC_pin(apic, pin);
1986 ioapic_write_entry(apic, pin, entry1);
2003 clear_IO_APIC_pin(apic, pin);
2005 ioapic_write_entry(apic, pin, entry0);
2044 apic2 = ioapic_i8259.apic;
2131 panic("IO-APIC + timer doesn't work! Boot with apic=debug and send a "
2138 * - IRQ2 is the cascade IRQ, and cannot be a io-apic IRQ.