|
@@ -223,8 +223,7 @@ void apic_deliver_pic_intr(DeviceState *d, int level)
|
|
|
}
|
|
|
|
|
|
static void apic_bus_deliver(const uint32_t *deliver_bitmask,
|
|
|
- uint8_t delivery_mode,
|
|
|
- uint8_t vector_num, uint8_t polarity,
|
|
|
+ uint8_t delivery_mode, uint8_t vector_num,
|
|
|
uint8_t trigger_mode)
|
|
|
{
|
|
|
APICState *apic_iter;
|
|
@@ -281,18 +280,16 @@ static void apic_bus_deliver(const uint32_t *deliver_bitmask,
|
|
|
apic_set_irq(apic_iter, vector_num, trigger_mode) );
|
|
|
}
|
|
|
|
|
|
-void 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)
|
|
|
+void apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode,
|
|
|
+ uint8_t vector_num, uint8_t trigger_mode)
|
|
|
{
|
|
|
uint32_t deliver_bitmask[MAX_APIC_WORDS];
|
|
|
|
|
|
trace_apic_deliver_irq(dest, dest_mode, delivery_mode, vector_num,
|
|
|
- polarity, trigger_mode);
|
|
|
+ trigger_mode);
|
|
|
|
|
|
apic_get_delivery_bitmask(deliver_bitmask, dest, dest_mode);
|
|
|
- apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, polarity,
|
|
|
- trigger_mode);
|
|
|
+ apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
|
|
|
}
|
|
|
|
|
|
void cpu_set_apic_base(DeviceState *d, uint64_t val)
|
|
@@ -549,7 +546,7 @@ void apic_sipi(DeviceState *d)
|
|
|
|
|
|
static void apic_deliver(DeviceState *d, uint8_t dest, uint8_t dest_mode,
|
|
|
uint8_t delivery_mode, uint8_t vector_num,
|
|
|
- uint8_t polarity, uint8_t trigger_mode)
|
|
|
+ uint8_t trigger_mode)
|
|
|
{
|
|
|
APICState *s = DO_UPCAST(APICState, busdev.qdev, d);
|
|
|
uint32_t deliver_bitmask[MAX_APIC_WORDS];
|
|
@@ -592,8 +589,7 @@ static void apic_deliver(DeviceState *d, uint8_t dest, uint8_t dest_mode,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, polarity,
|
|
|
- trigger_mode);
|
|
|
+ apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
|
|
|
}
|
|
|
|
|
|
int apic_get_interrupt(DeviceState *d)
|
|
@@ -795,7 +791,7 @@ static void apic_send_msi(target_phys_addr_t addr, uint32_t data)
|
|
|
uint8_t trigger_mode = (data >> MSI_DATA_TRIGGER_SHIFT) & 0x1;
|
|
|
uint8_t delivery = (data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x7;
|
|
|
/* XXX: Ignore redirection hint. */
|
|
|
- apic_deliver_irq(dest, dest_mode, delivery, vector, 0, trigger_mode);
|
|
|
+ apic_deliver_irq(dest, dest_mode, delivery, vector, trigger_mode);
|
|
|
}
|
|
|
|
|
|
static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
@@ -856,7 +852,7 @@ static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
|
s->icr[0] = val;
|
|
|
apic_deliver(d, (s->icr[1] >> 24) & 0xff, (s->icr[0] >> 11) & 1,
|
|
|
(s->icr[0] >> 8) & 7, (s->icr[0] & 0xff),
|
|
|
- (s->icr[0] >> 14) & 1, (s->icr[0] >> 15) & 1);
|
|
|
+ (s->icr[0] >> 15) & 1);
|
|
|
break;
|
|
|
case 0x31:
|
|
|
s->icr[1] = val;
|