Revision 1f6f408c

b/hw/apic.c
223 223
}
224 224

  
225 225
static void apic_bus_deliver(const uint32_t *deliver_bitmask,
226
                             uint8_t delivery_mode,
227
                             uint8_t vector_num, uint8_t polarity,
226
                             uint8_t delivery_mode, uint8_t vector_num,
228 227
                             uint8_t trigger_mode)
229 228
{
230 229
    APICState *apic_iter;
......
281 280
                 apic_set_irq(apic_iter, vector_num, trigger_mode) );
282 281
}
283 282

  
284
void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
285
                      uint8_t delivery_mode, uint8_t vector_num,
286
                      uint8_t polarity, uint8_t trigger_mode)
283
void apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode,
284
                      uint8_t vector_num, uint8_t trigger_mode)
287 285
{
288 286
    uint32_t deliver_bitmask[MAX_APIC_WORDS];
289 287

  
290 288
    trace_apic_deliver_irq(dest, dest_mode, delivery_mode, vector_num,
291
                           polarity, trigger_mode);
289
                           trigger_mode);
292 290

  
293 291
    apic_get_delivery_bitmask(deliver_bitmask, dest, dest_mode);
294
    apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, polarity,
295
                     trigger_mode);
292
    apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
296 293
}
297 294

  
298 295
void cpu_set_apic_base(DeviceState *d, uint64_t val)
......
549 546

  
550 547
static void apic_deliver(DeviceState *d, uint8_t dest, uint8_t dest_mode,
551 548
                         uint8_t delivery_mode, uint8_t vector_num,
552
                         uint8_t polarity, uint8_t trigger_mode)
549
                         uint8_t trigger_mode)
553 550
{
554 551
    APICState *s = DO_UPCAST(APICState, busdev.qdev, d);
555 552
    uint32_t deliver_bitmask[MAX_APIC_WORDS];
......
592 589
            return;
593 590
    }
594 591

  
595
    apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, polarity,
596
                     trigger_mode);
592
    apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
597 593
}
598 594

  
599 595
int apic_get_interrupt(DeviceState *d)
......
795 791
    uint8_t trigger_mode = (data >> MSI_DATA_TRIGGER_SHIFT) & 0x1;
796 792
    uint8_t delivery = (data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x7;
797 793
    /* XXX: Ignore redirection hint. */
798
    apic_deliver_irq(dest, dest_mode, delivery, vector, 0, trigger_mode);
794
    apic_deliver_irq(dest, dest_mode, delivery, vector, trigger_mode);
799 795
}
800 796

  
801 797
static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
......
856 852
        s->icr[0] = val;
857 853
        apic_deliver(d, (s->icr[1] >> 24) & 0xff, (s->icr[0] >> 11) & 1,
858 854
                     (s->icr[0] >> 8) & 7, (s->icr[0] & 0xff),
859
                     (s->icr[0] >> 14) & 1, (s->icr[0] >> 15) & 1);
855
                     (s->icr[0] >> 15) & 1);
860 856
        break;
861 857
    case 0x31:
862 858
        s->icr[1] = val;
b/hw/apic.h
4 4
#include "qemu-common.h"
5 5

  
6 6
/* apic.c */
7
void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
8
                             uint8_t delivery_mode,
9
                             uint8_t vector_num, uint8_t polarity,
10
                             uint8_t trigger_mode);
7
void apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode,
8
                      uint8_t vector_num, uint8_t trigger_mode);
11 9
int apic_accept_pic_intr(DeviceState *s);
12 10
void apic_deliver_pic_intr(DeviceState *s, int level);
13 11
int apic_get_interrupt(DeviceState *s);
b/hw/ioapic.c
104 104
    uint64_t entry;
105 105
    uint8_t dest;
106 106
    uint8_t dest_mode;
107
    uint8_t polarity;
108 107

  
109 108
    for (i = 0; i < IOAPIC_NUM_PINS; i++) {
110 109
        mask = 1 << i;
......
116 115
                dest_mode = (entry >> IOAPIC_LVT_DEST_MODE_SHIFT) & 1;
117 116
                delivery_mode =
118 117
                    (entry >> IOAPIC_LVT_DELIV_MODE_SHIFT) & IOAPIC_DM_MASK;
119
                polarity = (entry >> IOAPIC_LVT_POLARITY_SHIFT) & 1;
120 118
                if (trig_mode == IOAPIC_TRIGGER_EDGE) {
121 119
                    s->irr &= ~mask;
122 120
                } else {
......
128 126
                    vector = entry & IOAPIC_VECTOR_MASK;
129 127
                }
130 128
                apic_deliver_irq(dest, dest_mode, delivery_mode,
131
                                 vector, polarity, trig_mode);
129
                                 vector, trig_mode);
132 130
            }
133 131
        }
134 132
    }
b/trace-events
90 90

  
91 91
# hw/apic.c
92 92
disable apic_local_deliver(int vector, uint32_t lvt) "vector %d delivery mode %d"
93
disable apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode, uint8_t vector_num, uint8_t polarity, uint8_t trigger_mode) "dest %d dest_mode %d delivery_mode %d vector %d polarity %d trigger_mode %d"
93
disable apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode, uint8_t vector_num, uint8_t trigger_mode) "dest %d dest_mode %d delivery_mode %d vector %d trigger_mode %d"
94 94
disable cpu_set_apic_base(uint64_t val) "%016"PRIx64""
95 95
disable cpu_get_apic_base(uint64_t val) "%016"PRIx64""
96 96
disable apic_mem_readl(uint64_t addr, uint32_t val)  "%"PRIx64" = %08x"

Also available in: Unified diff