* [Qemu-devel] [PULL 00/30] target-arm queue @ 2016-06-14 14:13 Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 01/30] target-arm: kvm64: set guest PMUv3 feature bit if supported Peter Maydell ` (29 more replies) 0 siblings, 30 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel target-arm queue; quite a lot of patches but nothing earthshaking. thanks -- PMM The following changes since commit d32490ca74c700edc74f0b2f6b7536b52a644739: Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20160614' into staging (2016-06-14 13:14:55 +0100) are available in the git repository at: git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20160614 for you to fetch changes up to ea924f729b7703c9d81f62b54bcaa75f9d9f314e: target-arm: Don't permit ARMv8-only Neon insns on ARMv7 (2016-06-14 15:02:30 +0100) ---------------------------------------------------------------- target-arm queue: * add PMU support for virt machine under KVM * fix reset and migration of TTBCR(S) * add virt-2.7 machine type * QOMify various ARM devices * implement xilinx DisplayPort device * don't permit ARMv8-only Neon insns to work on ARMv7 ---------------------------------------------------------------- Andrew Jones (4): hw/arm/virt: separate versioned type-init code hw/arm/virt: introduce DEFINE_VIRT_MACHINE hw/arm/virt: introduce DEFINE_VIRT_MACHINE_AS_LATEST hw/arm/virt: create the 2.7 machine type KONRAD Frederic (7): i2cbus: remove unused dev field i2c: implement broadcast write introduce aux-bus introduce dpcd module introduce xlnx-dpdma introduce xlnx-dp arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma Peter Crosthwaite (1): i2c: Factor our send() and recv() common logic Peter Maydell (3): target-arm: Fix reset and migration of TTBCR(S) hw/i2c-ddc.c: Implement DDC I2C slave target-arm: Don't permit ARMv8-only Neon insns on ARMv7 Shannon Zhao (3): target-arm: kvm64: set guest PMUv3 feature bit if supported hw/arm/virt: Add PMU node for virt machine hw/arm/virt-acpi-build: Add PMU IRQ number in ACPI table xiaoqiang zhao (12): hw/i2c: QOM'ify bitbang_i2c.c hw/i2c: QOM'ify exynos4210_i2c.c hw/i2c: QOM'ify omap_i2c.c hw/i2c: QOM'ify versatile_i2c.c hw/gpio: QOM'ify omap_gpio.c hw/gpio: QOM'ify pl061.c hw/gpio: QOM'ify zaurus.c hw/misc: QOM'ify arm_l2x0.c hw/misc: QOM'ify exynos4210_pmu.c hw/misc: QOM'ify mst_fpga.c hw/dma: QOM'ify pxa2xx_dma.c hw/sd: QOM'ify pl181.c default-configs/aarch64-softmmu.mak | 3 + hw/arm/virt-acpi-build.c | 4 + hw/arm/virt.c | 99 ++- hw/arm/xlnx-zynqmp.c | 32 +- hw/display/Makefile.objs | 2 + hw/display/dpcd.c | 173 +++++ hw/display/xlnx_dp.c | 1336 +++++++++++++++++++++++++++++++++++ hw/dma/Makefile.objs | 1 + hw/dma/pxa2xx_dma.c | 38 +- hw/dma/xlnx_dpdma.c | 794 +++++++++++++++++++++ hw/gpio/omap_gpio.c | 61 +- hw/gpio/pl061.c | 24 +- hw/gpio/zaurus.c | 14 +- hw/i2c/Makefile.objs | 1 + hw/i2c/bitbang_i2c.c | 14 +- hw/i2c/core.c | 161 +++-- hw/i2c/exynos4210_i2c.c | 13 +- hw/i2c/i2c-ddc.c | 307 ++++++++ hw/i2c/omap_i2c.c | 42 +- hw/i2c/versatile_i2c.c | 19 +- hw/misc/Makefile.objs | 1 + hw/misc/arm_l2x0.c | 11 +- hw/misc/aux.c | 292 ++++++++ hw/misc/exynos4210_pmu.c | 11 +- hw/misc/mst_fpga.c | 13 +- hw/sd/pl181.c | 26 +- include/hw/arm/virt.h | 4 + include/hw/arm/xlnx-zynqmp.h | 4 + include/hw/display/dpcd.h | 105 +++ include/hw/display/xlnx_dp.h | 109 +++ include/hw/dma/xlnx_dpdma.h | 85 +++ include/hw/i2c/i2c-ddc.h | 38 + include/hw/i2c/i2c.h | 1 + include/hw/misc/aux.h | 128 ++++ target-arm/cpu.h | 2 + target-arm/helper.c | 5 +- target-arm/kvm32.c | 6 + target-arm/kvm64.c | 46 ++ target-arm/kvm_arm.h | 7 + target-arm/translate.c | 28 + 40 files changed, 3837 insertions(+), 223 deletions(-) create mode 100644 hw/display/dpcd.c create mode 100644 hw/display/xlnx_dp.c create mode 100644 hw/dma/xlnx_dpdma.c create mode 100644 hw/i2c/i2c-ddc.c create mode 100644 hw/misc/aux.c create mode 100644 include/hw/display/dpcd.h create mode 100644 include/hw/display/xlnx_dp.h create mode 100644 include/hw/dma/xlnx_dpdma.h create mode 100644 include/hw/i2c/i2c-ddc.h create mode 100644 include/hw/misc/aux.h ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 01/30] target-arm: kvm64: set guest PMUv3 feature bit if supported 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 02/30] hw/arm/virt: Add PMU node for virt machine Peter Maydell ` (28 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Shannon Zhao <shannon.zhao@linaro.org> Check if kvm supports guest PMUv3. If so, set the corresponding feature bit for vcpu. Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> Reviewed-by: Andrew Jones <drjones@redhat.com> Message-id: 1465267577-1808-2-git-send-email-zhaoshenglong@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target-arm/cpu.h | 2 ++ target-arm/kvm64.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/target-arm/cpu.h b/target-arm/cpu.h index 17d8051..942aa36 100644 --- a/target-arm/cpu.h +++ b/target-arm/cpu.h @@ -572,6 +572,8 @@ struct ARMCPU { bool powered_off; /* CPU has security extension */ bool has_el3; + /* CPU has PMU (Performance Monitor Unit) */ + bool has_pmu; /* CPU has memory protection unit */ bool has_mpu; diff --git a/target-arm/kvm64.c b/target-arm/kvm64.c index e2a34f6..75383c8 100644 --- a/target-arm/kvm64.c +++ b/target-arm/kvm64.c @@ -461,6 +461,11 @@ int kvm_arch_init_vcpu(CPUState *cs) if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_EL1_32BIT; } + if (kvm_irqchip_in_kernel() && + kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PMU_V3)) { + cpu->has_pmu = true; + cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PMU_V3; + } /* Do KVM_ARM_VCPU_INIT ioctl */ ret = kvm_arm_vcpu_init(cs); -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 02/30] hw/arm/virt: Add PMU node for virt machine 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 01/30] target-arm: kvm64: set guest PMUv3 feature bit if supported Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 03/30] hw/arm/virt-acpi-build: Add PMU IRQ number in ACPI table Peter Maydell ` (27 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Shannon Zhao <shannon.zhao@linaro.org> Add a virtual PMU device for virt machine while use PPI 7 for PMU overflow interrupt number. Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> Reviewed-by: Andrew Jones <drjones@redhat.com> Message-id: 1465267577-1808-3-git-send-email-zhaoshenglong@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt.c | 33 +++++++++++++++++++++++++++++++++ include/hw/arm/virt.h | 4 ++++ target-arm/kvm32.c | 6 ++++++ target-arm/kvm64.c | 41 +++++++++++++++++++++++++++++++++++++++++ target-arm/kvm_arm.h | 7 +++++++ 5 files changed, 91 insertions(+) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 73113cf..0f830a3 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -436,6 +436,37 @@ static void fdt_add_gic_node(VirtBoardInfo *vbi, int type) qemu_fdt_setprop_cell(vbi->fdt, "/intc", "phandle", vbi->gic_phandle); } +static void fdt_add_pmu_nodes(const VirtBoardInfo *vbi, int gictype) +{ + CPUState *cpu; + ARMCPU *armcpu; + uint32_t irqflags = GIC_FDT_IRQ_FLAGS_LEVEL_HI; + + CPU_FOREACH(cpu) { + armcpu = ARM_CPU(cpu); + if (!armcpu->has_pmu || + !kvm_arm_pmu_create(cpu, PPI(VIRTUAL_PMU_IRQ))) { + return; + } + } + + if (gictype == 2) { + irqflags = deposit32(irqflags, GIC_FDT_IRQ_PPI_CPU_START, + GIC_FDT_IRQ_PPI_CPU_WIDTH, + (1 << vbi->smp_cpus) - 1); + } + + armcpu = ARM_CPU(qemu_get_cpu(0)); + qemu_fdt_add_subnode(vbi->fdt, "/pmu"); + if (arm_feature(&armcpu->env, ARM_FEATURE_V8)) { + const char compat[] = "arm,armv8-pmuv3"; + qemu_fdt_setprop(vbi->fdt, "/pmu", "compatible", + compat, sizeof(compat)); + qemu_fdt_setprop_cells(vbi->fdt, "/pmu", "interrupts", + GIC_FDT_IRQ_TYPE_PPI, VIRTUAL_PMU_IRQ, irqflags); + } +} + static void create_v2m(VirtBoardInfo *vbi, qemu_irq *pic) { int i; @@ -1259,6 +1290,8 @@ static void machvirt_init(MachineState *machine) create_gic(vbi, pic, gic_version, vms->secure); + fdt_add_pmu_nodes(vbi, gic_version); + create_uart(vbi, pic, VIRT_UART, sysmem, serial_hds[0]); if (vms->secure) { diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 82703d2..9650193 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -41,6 +41,10 @@ #define ARCH_TIMER_NS_EL1_IRQ 14 #define ARCH_TIMER_NS_EL2_IRQ 10 +#define VIRTUAL_PMU_IRQ 7 + +#define PPI(irq) ((irq) + 16) + enum { VIRT_FLASH, VIRT_MEM, diff --git a/target-arm/kvm32.c b/target-arm/kvm32.c index c03e3e5..c35c676 100644 --- a/target-arm/kvm32.c +++ b/target-arm/kvm32.c @@ -522,3 +522,9 @@ bool kvm_arm_hw_debug_active(CPUState *cs) { return false; } + +int kvm_arm_pmu_create(CPUState *cs, int irq) +{ + qemu_log_mask(LOG_UNIMP, "%s: not implemented\n", __func__); + return 0; +} diff --git a/target-arm/kvm64.c b/target-arm/kvm64.c index 75383c8..2d6a310 100644 --- a/target-arm/kvm64.c +++ b/target-arm/kvm64.c @@ -382,6 +382,47 @@ static CPUWatchpoint *find_hw_watchpoint(CPUState *cpu, target_ulong addr) return NULL; } +static bool kvm_arm_pmu_support_ctrl(CPUState *cs, struct kvm_device_attr *attr) +{ + return kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, attr) == 0; +} + +int kvm_arm_pmu_create(CPUState *cs, int irq) +{ + int err; + + struct kvm_device_attr attr = { + .group = KVM_ARM_VCPU_PMU_V3_CTRL, + .addr = (intptr_t)&irq, + .attr = KVM_ARM_VCPU_PMU_V3_IRQ, + .flags = 0, + }; + + if (!kvm_arm_pmu_support_ctrl(cs, &attr)) { + return 0; + } + + err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, &attr); + if (err < 0) { + fprintf(stderr, "KVM_SET_DEVICE_ATTR failed: %s\n", + strerror(-err)); + abort(); + } + + attr.group = KVM_ARM_VCPU_PMU_V3_CTRL; + attr.attr = KVM_ARM_VCPU_PMU_V3_INIT; + attr.addr = 0; + attr.flags = 0; + + err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, &attr); + if (err < 0) { + fprintf(stderr, "KVM_SET_DEVICE_ATTR failed: %s\n", + strerror(-err)); + abort(); + } + + return 1; +} static inline void set_feature(uint64_t *features, int feature) { diff --git a/target-arm/kvm_arm.h b/target-arm/kvm_arm.h index 345233c..a419368 100644 --- a/target-arm/kvm_arm.h +++ b/target-arm/kvm_arm.h @@ -194,6 +194,8 @@ int kvm_arm_sync_mpstate_to_qemu(ARMCPU *cpu); int kvm_arm_vgic_probe(void); +int kvm_arm_pmu_create(CPUState *cs, int irq); + #else static inline int kvm_arm_vgic_probe(void) @@ -201,6 +203,11 @@ static inline int kvm_arm_vgic_probe(void) return 0; } +static inline int kvm_arm_pmu_create(CPUState *cs, int irq) +{ + return 0; +} + #endif static inline const char *gic_class_name(void) -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 03/30] hw/arm/virt-acpi-build: Add PMU IRQ number in ACPI table 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 01/30] target-arm: kvm64: set guest PMUv3 feature bit if supported Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 02/30] hw/arm/virt: Add PMU node for virt machine Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 04/30] target-arm: Fix reset and migration of TTBCR(S) Peter Maydell ` (26 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Shannon Zhao <shannon.zhao@linaro.org> Add PMU IRQ number in ACPI table, then we can use PMU in guest through ACPI. Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> Reviewed-by: Andrew Jones <drjones@redhat.com> Message-id: 1465267577-1808-4-git-send-email-zhaoshenglong@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt-acpi-build.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 735ab86..1fa0581 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -538,6 +538,10 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtGuestInfo *guest_info) gicc->arm_mpidr = armcpu->mp_affinity; gicc->uid = i; gicc->flags = cpu_to_le32(ACPI_GICC_ENABLED); + + if (armcpu->has_pmu) { + gicc->performance_interrupt = cpu_to_le32(PPI(VIRTUAL_PMU_IRQ)); + } } if (guest_info->gic_version == 3) { -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 04/30] target-arm: Fix reset and migration of TTBCR(S) 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (2 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 03/30] hw/arm/virt-acpi-build: Add PMU IRQ number in ACPI table Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 05/30] hw/arm/virt: separate versioned type-init code Peter Maydell ` (25 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel Commit 6459b94c26dd666badb3 broke reset and migration of the AArch32 TTBCR(S) register if the guest used non-LPAE page tables. This is because the AArch32 TTBCR register definition is marked as ARM_CP_ALIAS, meaning that the AArch64 variant has to handle migration and reset. Although AArch64 TCR_EL3 doesn't need to care about the mask and base_mask fields, AArch32 may do so, and so we must use the special TTBCR reset and raw write functions to ensure they are set correctly. This doesn't affect TCR_EL2, because the AArch32 equivalent of that is HTCR, which never uses the non-LPAE page table variant. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reported-by: Pranith Kumar <bobby.prani+qemu@gmail.com> Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org> Message-id: 1465488181-31977-1-git-send-email-peter.maydell@linaro.org --- target-arm/helper.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index 862e780..c9730d6 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -3765,8 +3765,11 @@ static const ARMCPRegInfo el3_cp_reginfo[] = { .opc0 = 3, .opc1 = 6, .crn = 2, .crm = 0, .opc2 = 2, .access = PL3_RW, /* no .writefn needed as this can't cause an ASID change; - * no .raw_writefn or .resetfn needed as we never use mask/base_mask + * we must provide a .raw_writefn and .resetfn because we handle + * reset and migration for the AArch32 TTBCR(S), which might be + * using mask and base_mask. */ + .resetfn = vmsa_ttbcr_reset, .raw_writefn = vmsa_ttbcr_raw_write, .fieldoffset = offsetof(CPUARMState, cp15.tcr_el[3]) }, { .name = "ELR_EL3", .state = ARM_CP_STATE_AA64, .type = ARM_CP_ALIAS, -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 05/30] hw/arm/virt: separate versioned type-init code 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (3 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 04/30] target-arm: Fix reset and migration of TTBCR(S) Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 06/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE Peter Maydell ` (24 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Andrew Jones <drjones@redhat.com> Rename machvirt_info (which is specifically for 2.6 TypeInfo) to machvirt_2_6_info, and separate the type registration of the abstract machine type from the versioned type. Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1465746713-30414-2-git-send-email-drjones@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 0f830a3..84c7c36 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1420,6 +1420,12 @@ static const TypeInfo virt_machine_info = { .class_init = virt_machine_class_init, }; +static void machvirt_machine_init(void) +{ + type_register_static(&virt_machine_info); +} +type_init(machvirt_machine_init); + static void virt_2_6_instance_init(Object *obj) { VirtMachineState *vms = VIRT_MACHINE(obj); @@ -1461,17 +1467,15 @@ static void virt_2_6_class_init(ObjectClass *oc, void *data) mc->alias = "virt"; } -static const TypeInfo machvirt_info = { +static const TypeInfo machvirt_2_6_info = { .name = MACHINE_TYPE_NAME("virt-2.6"), .parent = TYPE_VIRT_MACHINE, .instance_init = virt_2_6_instance_init, .class_init = virt_2_6_class_init, }; -static void machvirt_machine_init(void) +static void machvirt_machine_2_6_init(void) { - type_register_static(&virt_machine_info); - type_register_static(&machvirt_info); + type_register_static(&machvirt_2_6_info); } - -type_init(machvirt_machine_init); +type_init(machvirt_machine_2_6_init); -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 06/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (4 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 05/30] hw/arm/virt: separate versioned type-init code Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 07/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE_AS_LATEST Peter Maydell ` (23 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Andrew Jones <drjones@redhat.com> Use DEFINE_VIRT_MACHINE to generate versioned machine type info. Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1465746713-30414-3-git-send-email-drjones@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 84c7c36..86a1a51 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -98,6 +98,28 @@ typedef struct { #define VIRT_MACHINE_CLASS(klass) \ OBJECT_CLASS_CHECK(VirtMachineClass, klass, TYPE_VIRT_MACHINE) + +#define DEFINE_VIRT_MACHINE(major, minor) \ + static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ + void *data) \ + { \ + MachineClass *mc = MACHINE_CLASS(oc); \ + virt_machine_##major##_##minor##_options(mc); \ + mc->desc = "QEMU " # major "." # minor " ARM Virtual Machine"; \ + } \ + static const TypeInfo machvirt_##major##_##minor##_info = { \ + .name = MACHINE_TYPE_NAME("virt-" # major "." # minor), \ + .parent = TYPE_VIRT_MACHINE, \ + .instance_init = virt_##major##_##minor##_instance_init, \ + .class_init = virt_##major##_##minor##_class_init, \ + }; \ + static void machvirt_machine_##major##_##minor##_init(void) \ + { \ + type_register_static(&machvirt_##major##_##minor##_info); \ + } \ + type_init(machvirt_machine_##major##_##minor##_init); + + /* RAM limit in GB. Since VIRT_MEM starts at the 1GB mark, this means * RAM can go up to the 256GB mark, leaving 256GB of the physical * address space unallocated and free for future use between 256G and 512G. @@ -1459,23 +1481,8 @@ static void virt_2_6_instance_init(Object *obj) "Valid values are 2, 3 and host", NULL); } -static void virt_2_6_class_init(ObjectClass *oc, void *data) +static void virt_machine_2_6_options(MachineClass *mc) { - MachineClass *mc = MACHINE_CLASS(oc); - - mc->desc = "QEMU 2.6 ARM Virtual Machine"; mc->alias = "virt"; } - -static const TypeInfo machvirt_2_6_info = { - .name = MACHINE_TYPE_NAME("virt-2.6"), - .parent = TYPE_VIRT_MACHINE, - .instance_init = virt_2_6_instance_init, - .class_init = virt_2_6_class_init, -}; - -static void machvirt_machine_2_6_init(void) -{ - type_register_static(&machvirt_2_6_info); -} -type_init(machvirt_machine_2_6_init); +DEFINE_VIRT_MACHINE(2, 6) -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 07/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE_AS_LATEST 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (5 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 06/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 08/30] hw/arm/virt: create the 2.7 machine type Peter Maydell ` (22 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Andrew Jones <drjones@redhat.com> Create two variants of DEFINE_VIRT_MACHINE. One, just called DEFINE_VIRT_MACHINE, that does not set properties that only the latest machine type should have, and another that does. This will hopefully reduce potential for errors when adding new versions. Signed-off-by: Andrew Jones <drjones@redhat.com> Message-id: 1465746713-30414-4-git-send-email-drjones@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 86a1a51..fb032e8 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -99,13 +99,16 @@ typedef struct { OBJECT_CLASS_CHECK(VirtMachineClass, klass, TYPE_VIRT_MACHINE) -#define DEFINE_VIRT_MACHINE(major, minor) \ +#define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \ static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ void *data) \ { \ MachineClass *mc = MACHINE_CLASS(oc); \ virt_machine_##major##_##minor##_options(mc); \ mc->desc = "QEMU " # major "." # minor " ARM Virtual Machine"; \ + if (latest) { \ + mc->alias = "virt"; \ + } \ } \ static const TypeInfo machvirt_##major##_##minor##_info = { \ .name = MACHINE_TYPE_NAME("virt-" # major "." # minor), \ @@ -119,6 +122,11 @@ typedef struct { } \ type_init(machvirt_machine_##major##_##minor##_init); +#define DEFINE_VIRT_MACHINE_AS_LATEST(major, minor) \ + DEFINE_VIRT_MACHINE_LATEST(major, minor, true) +#define DEFINE_VIRT_MACHINE(major, minor) \ + DEFINE_VIRT_MACHINE_LATEST(major, minor, false) + /* RAM limit in GB. Since VIRT_MEM starts at the 1GB mark, this means * RAM can go up to the 256GB mark, leaving 256GB of the physical @@ -1483,6 +1491,5 @@ static void virt_2_6_instance_init(Object *obj) static void virt_machine_2_6_options(MachineClass *mc) { - mc->alias = "virt"; } -DEFINE_VIRT_MACHINE(2, 6) +DEFINE_VIRT_MACHINE_AS_LATEST(2, 6) -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 08/30] hw/arm/virt: create the 2.7 machine type 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (6 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 07/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE_AS_LATEST Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 09/30] hw/i2c: QOM'ify bitbang_i2c.c Peter Maydell ` (21 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Andrew Jones <drjones@redhat.com> Signed-off-by: Andrew Jones <drjones@redhat.com> Message-id: 1465746713-30414-5-git-send-email-drjones@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/virt.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index fb032e8..c5c125e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -42,6 +42,7 @@ #include "sysemu/sysemu.h" #include "sysemu/kvm.h" #include "hw/boards.h" +#include "hw/compat.h" #include "hw/loader.h" #include "exec/address-spaces.h" #include "qemu/bitops.h" @@ -1456,7 +1457,7 @@ static void machvirt_machine_init(void) } type_init(machvirt_machine_init); -static void virt_2_6_instance_init(Object *obj) +static void virt_2_7_instance_init(Object *obj) { VirtMachineState *vms = VIRT_MACHINE(obj); @@ -1489,7 +1490,22 @@ static void virt_2_6_instance_init(Object *obj) "Valid values are 2, 3 and host", NULL); } +static void virt_machine_2_7_options(MachineClass *mc) +{ +} +DEFINE_VIRT_MACHINE_AS_LATEST(2, 7) + +#define VIRT_COMPAT_2_6 \ + HW_COMPAT_2_6 + +static void virt_2_6_instance_init(Object *obj) +{ + virt_2_7_instance_init(obj); +} + static void virt_machine_2_6_options(MachineClass *mc) { + virt_machine_2_7_options(mc); + SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_6); } -DEFINE_VIRT_MACHINE_AS_LATEST(2, 6) +DEFINE_VIRT_MACHINE(2, 6) -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 09/30] hw/i2c: QOM'ify bitbang_i2c.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (7 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 08/30] hw/arm/virt: create the 2.7 machine type Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 10/30] hw/i2c: QOM'ify exynos4210_i2c.c Peter Maydell ` (20 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-2-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/bitbang_i2c.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/i2c/bitbang_i2c.c b/hw/i2c/bitbang_i2c.c index 6ed2060..d3a2989 100644 --- a/hw/i2c/bitbang_i2c.c +++ b/hw/i2c/bitbang_i2c.c @@ -210,13 +210,14 @@ static void bitbang_i2c_gpio_set(void *opaque, int irq, int level) } } -static int gpio_i2c_init(SysBusDevice *sbd) +static void gpio_i2c_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - GPIOI2CState *s = GPIO_I2C(dev); + DeviceState *dev = DEVICE(obj); + GPIOI2CState *s = GPIO_I2C(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); I2CBus *bus; - memory_region_init(&s->dummy_iomem, OBJECT(s), "gpio_i2c", 0); + memory_region_init(&s->dummy_iomem, obj, "gpio_i2c", 0); sysbus_init_mmio(sbd, &s->dummy_iomem); bus = i2c_init_bus(dev, "i2c"); @@ -224,16 +225,12 @@ static int gpio_i2c_init(SysBusDevice *sbd) qdev_init_gpio_in(dev, bitbang_i2c_gpio_set, 2); qdev_init_gpio_out(dev, &s->out, 1); - - return 0; } static void gpio_i2c_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = gpio_i2c_init; set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->desc = "Virtual GPIO to I2C bridge"; } @@ -242,6 +239,7 @@ static const TypeInfo gpio_i2c_info = { .name = TYPE_GPIO_I2C, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(GPIOI2CState), + .instance_init = gpio_i2c_init, .class_init = gpio_i2c_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 10/30] hw/i2c: QOM'ify exynos4210_i2c.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (8 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 09/30] hw/i2c: QOM'ify bitbang_i2c.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 11/30] hw/i2c: QOM'ify omap_i2c.c Peter Maydell ` (19 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> * Rename the exynos4210_i2c_realize to exynos4210_i2c_init * Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-3-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/exynos4210_i2c.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hw/i2c/exynos4210_i2c.c b/hw/i2c/exynos4210_i2c.c index 8c2a2c1..c96fa7d 100644 --- a/hw/i2c/exynos4210_i2c.c +++ b/hw/i2c/exynos4210_i2c.c @@ -299,33 +299,32 @@ static void exynos4210_i2c_reset(DeviceState *d) s->scl_free = true; } -static int exynos4210_i2c_realize(SysBusDevice *sbd) +static void exynos4210_i2c_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - Exynos4210I2CState *s = EXYNOS4_I2C(dev); + DeviceState *dev = DEVICE(obj); + Exynos4210I2CState *s = EXYNOS4_I2C(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); - memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_i2c_ops, s, + memory_region_init_io(&s->iomem, obj, &exynos4210_i2c_ops, s, TYPE_EXYNOS4_I2C, EXYNOS4_I2C_MEM_SIZE); sysbus_init_mmio(sbd, &s->iomem); sysbus_init_irq(sbd, &s->irq); s->bus = i2c_init_bus(dev, "i2c"); - return 0; } static void exynos4210_i2c_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *sbdc = SYS_BUS_DEVICE_CLASS(klass); dc->vmsd = &exynos4210_i2c_vmstate; dc->reset = exynos4210_i2c_reset; - sbdc->init = exynos4210_i2c_realize; } static const TypeInfo exynos4210_i2c_type_info = { .name = TYPE_EXYNOS4_I2C, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(Exynos4210I2CState), + .instance_init = exynos4210_i2c_init, .class_init = exynos4210_i2c_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 11/30] hw/i2c: QOM'ify omap_i2c.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (9 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 10/30] hw/i2c: QOM'ify exynos4210_i2c.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 12/30] hw/i2c: QOM'ify versatile_i2c.c Peter Maydell ` (18 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> * Split the omap_i2c_init into an instance_init and realize function * Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-4-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/omap_i2c.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index 67fbbff..f7c92ea 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -22,6 +22,7 @@ #include "hw/arm/omap.h" #include "hw/sysbus.h" #include "qemu/error-report.h" +#include "qapi/error.h" #define TYPE_OMAP_I2C "omap_i2c" #define OMAP_I2C(obj) OBJECT_CHECK(OMAPI2CState, (obj), TYPE_OMAP_I2C) @@ -445,29 +446,35 @@ static const MemoryRegionOps omap_i2c_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int omap_i2c_init(SysBusDevice *sbd) +static void omap_i2c_init(Object *obj) +{ + DeviceState *dev = DEVICE(obj); + OMAPI2CState *s = OMAP_I2C(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + + sysbus_init_irq(sbd, &s->irq); + sysbus_init_irq(sbd, &s->drq[0]); + sysbus_init_irq(sbd, &s->drq[1]); + sysbus_init_mmio(sbd, &s->iomem); + s->bus = i2c_init_bus(dev, NULL); +} + +static void omap_i2c_realize(DeviceState *dev, Error **errp) { - DeviceState *dev = DEVICE(sbd); OMAPI2CState *s = OMAP_I2C(dev); + memory_region_init_io(&s->iomem, OBJECT(dev), &omap_i2c_ops, s, "omap.i2c", + (s->revision < OMAP2_INTR_REV) ? 0x800 : 0x1000); + if (!s->fclk) { - error_report("omap_i2c: fclk not connected"); - return -1; + error_setg(errp, "omap_i2c: fclk not connected"); + return; } if (s->revision >= OMAP2_INTR_REV && !s->iclk) { /* Note that OMAP1 doesn't have a separate interface clock */ - error_report("omap_i2c: iclk not connected"); - return -1; + error_setg(errp, "omap_i2c: iclk not connected"); + return; } - - sysbus_init_irq(sbd, &s->irq); - sysbus_init_irq(sbd, &s->drq[0]); - sysbus_init_irq(sbd, &s->drq[1]); - memory_region_init_io(&s->iomem, OBJECT(s), &omap_i2c_ops, s, "omap.i2c", - (s->revision < OMAP2_INTR_REV) ? 0x800 : 0x1000); - sysbus_init_mmio(sbd, &s->iomem); - s->bus = i2c_init_bus(dev, NULL); - return 0; } static Property omap_i2c_properties[] = { @@ -480,18 +487,19 @@ static Property omap_i2c_properties[] = { static void omap_i2c_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = omap_i2c_init; + dc->props = omap_i2c_properties; dc->reset = omap_i2c_reset; /* Reason: pointer properties "iclk", "fclk" */ dc->cannot_instantiate_with_device_add_yet = true; + dc->realize = omap_i2c_realize; } static const TypeInfo omap_i2c_info = { .name = TYPE_OMAP_I2C, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(OMAPI2CState), + .instance_init = omap_i2c_init, .class_init = omap_i2c_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 12/30] hw/i2c: QOM'ify versatile_i2c.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (10 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 11/30] hw/i2c: QOM'ify omap_i2c.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 13/30] hw/gpio: QOM'ify omap_gpio.c Peter Maydell ` (17 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-5-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/versatile_i2c.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/hw/i2c/versatile_i2c.c b/hw/i2c/versatile_i2c.c index 0bce524..da9f298 100644 --- a/hw/i2c/versatile_i2c.c +++ b/hw/i2c/versatile_i2c.c @@ -79,32 +79,25 @@ static const MemoryRegionOps versatile_i2c_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int versatile_i2c_init(SysBusDevice *sbd) +static void versatile_i2c_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - VersatileI2CState *s = VERSATILE_I2C(dev); + DeviceState *dev = DEVICE(obj); + VersatileI2CState *s = VERSATILE_I2C(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); I2CBus *bus; bus = i2c_init_bus(dev, "i2c"); s->bitbang = bitbang_i2c_init(bus); - memory_region_init_io(&s->iomem, OBJECT(s), &versatile_i2c_ops, s, + memory_region_init_io(&s->iomem, obj, &versatile_i2c_ops, s, "versatile_i2c", 0x1000); sysbus_init_mmio(sbd, &s->iomem); - return 0; -} - -static void versatile_i2c_class_init(ObjectClass *klass, void *data) -{ - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - - k->init = versatile_i2c_init; } static const TypeInfo versatile_i2c_info = { .name = TYPE_VERSATILE_I2C, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(VersatileI2CState), - .class_init = versatile_i2c_class_init, + .instance_init = versatile_i2c_init, }; static void versatile_i2c_register_types(void) -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 13/30] hw/gpio: QOM'ify omap_gpio.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (11 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 12/30] hw/i2c: QOM'ify versatile_i2c.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 14/30] hw/gpio: QOM'ify pl061.c Peter Maydell ` (16 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> * Split the old SysBus init into an instance_init and DeviceClass::realize function * Drop the SysBus init function Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-6-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/gpio/omap_gpio.c | 61 +++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c index 9b1b004..dabef4a 100644 --- a/hw/gpio/omap_gpio.c +++ b/hw/gpio/omap_gpio.c @@ -23,6 +23,7 @@ #include "hw/arm/omap.h" #include "hw/sysbus.h" #include "qemu/error-report.h" +#include "qapi/error.h" struct omap_gpio_s { qemu_irq irq; @@ -678,48 +679,46 @@ static const MemoryRegionOps omap2_gpif_top_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int omap_gpio_init(SysBusDevice *sbd) +static void omap_gpio_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - struct omap_gpif_s *s = OMAP1_GPIO(dev); + DeviceState *dev = DEVICE(obj); + struct omap_gpif_s *s = OMAP1_GPIO(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); - if (!s->clk) { - error_report("omap-gpio: clk not connected"); - return -1; - } qdev_init_gpio_in(dev, omap_gpio_set, 16); qdev_init_gpio_out(dev, s->omap1.handler, 16); sysbus_init_irq(sbd, &s->omap1.irq); - memory_region_init_io(&s->iomem, OBJECT(s), &omap_gpio_ops, &s->omap1, + memory_region_init_io(&s->iomem, obj, &omap_gpio_ops, &s->omap1, "omap.gpio", 0x1000); sysbus_init_mmio(sbd, &s->iomem); - return 0; } -static int omap2_gpio_init(SysBusDevice *sbd) +static void omap_gpio_realize(DeviceState *dev, Error **errp) +{ + struct omap_gpif_s *s = OMAP1_GPIO(dev); + + if (!s->clk) { + error_setg(errp, "omap-gpio: clk not connected"); + } +} + +static void omap2_gpio_realize(DeviceState *dev, Error **errp) { - DeviceState *dev = DEVICE(sbd); struct omap2_gpif_s *s = OMAP2_GPIO(dev); + SysBusDevice *sbd = SYS_BUS_DEVICE(dev); int i; if (!s->iclk) { - error_report("omap2-gpio: iclk not connected"); - return -1; + error_setg(errp, "omap2-gpio: iclk not connected"); + return; } s->modulecount = s->mpu_model < omap2430 ? 4 - : s->mpu_model < omap3430 ? 5 - : 6; - - for (i = 0; i < s->modulecount; i++) { - if (!s->fclk[i]) { - error_report("omap2-gpio: fclk%d not connected", i); - return -1; - } - } + : s->mpu_model < omap3430 ? 5 + : 6; if (s->mpu_model < omap3430) { - memory_region_init_io(&s->iomem, OBJECT(s), &omap2_gpif_top_ops, s, + memory_region_init_io(&s->iomem, OBJECT(dev), &omap2_gpif_top_ops, s, "omap2.gpio", 0x1000); sysbus_init_mmio(sbd, &s->iomem); } @@ -732,17 +731,20 @@ static int omap2_gpio_init(SysBusDevice *sbd) for (i = 0; i < s->modulecount; i++) { struct omap2_gpio_s *m = &s->modules[i]; + if (!s->fclk[i]) { + error_setg(errp, "omap2-gpio: fclk%d not connected", i); + return; + } + m->revision = (s->mpu_model < omap3430) ? 0x18 : 0x25; m->handler = &s->handler[i * 32]; sysbus_init_irq(sbd, &m->irq[0]); /* mpu irq */ sysbus_init_irq(sbd, &m->irq[1]); /* dsp irq */ sysbus_init_irq(sbd, &m->wkup); - memory_region_init_io(&m->iomem, OBJECT(s), &omap2_gpio_module_ops, m, + memory_region_init_io(&m->iomem, OBJECT(dev), &omap2_gpio_module_ops, m, "omap.gpio-module", 0x1000); sysbus_init_mmio(sbd, &m->iomem); } - - return 0; } /* Using qdev pointer properties for the clocks is not ideal. @@ -766,9 +768,8 @@ static Property omap_gpio_properties[] = { static void omap_gpio_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = omap_gpio_init; + dc->realize = omap_gpio_realize; dc->reset = omap_gpif_reset; dc->props = omap_gpio_properties; /* Reason: pointer property "clk" */ @@ -779,6 +780,7 @@ static const TypeInfo omap_gpio_info = { .name = TYPE_OMAP1_GPIO, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(struct omap_gpif_s), + .instance_init = omap_gpio_init, .class_init = omap_gpio_class_init, }; @@ -797,9 +799,8 @@ static Property omap2_gpio_properties[] = { static void omap2_gpio_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = omap2_gpio_init; + dc->realize = omap2_gpio_realize; dc->reset = omap2_gpif_reset; dc->props = omap2_gpio_properties; /* Reason: pointer properties "iclk", "fclk0", ..., "fclk5" */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 14/30] hw/gpio: QOM'ify pl061.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (12 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 13/30] hw/gpio: QOM'ify omap_gpio.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 15/30] hw/gpio: QOM'ify zaurus.c Peter Maydell ` (15 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> * Merge the pl061_initfn into pl061_init * Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-7-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/gpio/pl061.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c index 44faeb2..4ae2aa1 100644 --- a/hw/gpio/pl061.c +++ b/hw/gpio/pl061.c @@ -341,20 +341,6 @@ static const MemoryRegionOps pl061_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int pl061_initfn(SysBusDevice *sbd) -{ - DeviceState *dev = DEVICE(sbd); - PL061State *s = PL061(dev); - - memory_region_init_io(&s->iomem, OBJECT(s), &pl061_ops, s, "pl061", 0x1000); - sysbus_init_mmio(sbd, &s->iomem); - sysbus_init_irq(sbd, &s->irq); - qdev_init_gpio_in(dev, pl061_set_irq, 8); - qdev_init_gpio_out(dev, s->out, 8); - - return 0; -} - static void pl061_luminary_init(Object *obj) { PL061State *s = PL061(obj); @@ -366,17 +352,23 @@ static void pl061_luminary_init(Object *obj) static void pl061_init(Object *obj) { PL061State *s = PL061(obj); + DeviceState *dev = DEVICE(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); s->id = pl061_id; s->rsvd_start = 0x424; + + memory_region_init_io(&s->iomem, obj, &pl061_ops, s, "pl061", 0x1000); + sysbus_init_mmio(sbd, &s->iomem); + sysbus_init_irq(sbd, &s->irq); + qdev_init_gpio_in(dev, pl061_set_irq, 8); + qdev_init_gpio_out(dev, s->out, 8); } static void pl061_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = pl061_initfn; dc->vmsd = &vmstate_pl061; dc->reset = &pl061_reset; } -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 15/30] hw/gpio: QOM'ify zaurus.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (13 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 14/30] hw/gpio: QOM'ify pl061.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 16/30] hw/misc: QOM'ify arm_l2x0.c Peter Maydell ` (14 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-8-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/gpio/zaurus.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c index 555da28..15865e1 100644 --- a/hw/gpio/zaurus.c +++ b/hw/gpio/zaurus.c @@ -167,19 +167,18 @@ static void scoop_gpio_set(void *opaque, int line, int level) s->gpio_level &= ~(1 << line); } -static int scoop_init(SysBusDevice *sbd) +static void scoop_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - ScoopInfo *s = SCOOP(dev); + DeviceState *dev = DEVICE(obj); + ScoopInfo *s = SCOOP(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); s->status = 0x02; qdev_init_gpio_out(dev, s->handler, 16); qdev_init_gpio_in(dev, scoop_gpio_set, 16); - memory_region_init_io(&s->iomem, OBJECT(s), &scoop_ops, s, "scoop", 0x1000); + memory_region_init_io(&s->iomem, obj, &scoop_ops, s, "scoop", 0x1000); sysbus_init_mmio(sbd, &s->iomem); - - return 0; } static int scoop_post_load(void *opaque, int version_id) @@ -239,9 +238,7 @@ static const VMStateDescription vmstate_scoop_regs = { static void scoop_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = scoop_init; dc->desc = "Scoop2 Sharp custom ASIC"; dc->vmsd = &vmstate_scoop_regs; } @@ -250,6 +247,7 @@ static const TypeInfo scoop_sysbus_info = { .name = TYPE_SCOOP, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(ScoopInfo), + .instance_init = scoop_init, .class_init = scoop_sysbus_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 16/30] hw/misc: QOM'ify arm_l2x0.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (14 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 15/30] hw/gpio: QOM'ify zaurus.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 17/30] hw/misc: QOM'ify exynos4210_pmu.c Peter Maydell ` (13 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-9-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/misc/arm_l2x0.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/misc/arm_l2x0.c b/hw/misc/arm_l2x0.c index 4442227..66a0787 100644 --- a/hw/misc/arm_l2x0.c +++ b/hw/misc/arm_l2x0.c @@ -159,14 +159,14 @@ static const MemoryRegionOps l2x0_mem_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int l2x0_priv_init(SysBusDevice *dev) +static void l2x0_priv_init(Object *obj) { - L2x0State *s = ARM_L2X0(dev); + L2x0State *s = ARM_L2X0(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); - memory_region_init_io(&s->iomem, OBJECT(dev), &l2x0_mem_ops, s, + memory_region_init_io(&s->iomem, obj, &l2x0_mem_ops, s, "l2x0_cc", 0x1000); sysbus_init_mmio(dev, &s->iomem); - return 0; } static Property l2x0_properties[] = { @@ -176,10 +176,8 @@ static Property l2x0_properties[] = { static void l2x0_class_init(ObjectClass *klass, void *data) { - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass); - k->init = l2x0_priv_init; dc->vmsd = &vmstate_l2x0; dc->props = l2x0_properties; dc->reset = l2x0_priv_reset; @@ -189,6 +187,7 @@ static const TypeInfo l2x0_info = { .name = TYPE_ARM_L2X0, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(L2x0State), + .instance_init = l2x0_priv_init, .class_init = l2x0_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 17/30] hw/misc: QOM'ify exynos4210_pmu.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (15 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 16/30] hw/misc: QOM'ify arm_l2x0.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 18/30] hw/misc: QOM'ify mst_fpga.c Peter Maydell ` (12 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-10-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/misc/exynos4210_pmu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/misc/exynos4210_pmu.c b/hw/misc/exynos4210_pmu.c index 889abad..e30dbc7 100644 --- a/hw/misc/exynos4210_pmu.c +++ b/hw/misc/exynos4210_pmu.c @@ -457,15 +457,15 @@ static void exynos4210_pmu_reset(DeviceState *dev) } } -static int exynos4210_pmu_init(SysBusDevice *dev) +static void exynos4210_pmu_init(Object *obj) { - Exynos4210PmuState *s = EXYNOS4210_PMU(dev); + Exynos4210PmuState *s = EXYNOS4210_PMU(obj); + SysBusDevice *dev = SYS_BUS_DEVICE(obj); /* memory mapping */ - memory_region_init_io(&s->iomem, OBJECT(dev), &exynos4210_pmu_ops, s, + memory_region_init_io(&s->iomem, obj, &exynos4210_pmu_ops, s, "exynos4210.pmu", EXYNOS4210_PMU_REGS_MEM_SIZE); sysbus_init_mmio(dev, &s->iomem); - return 0; } static const VMStateDescription exynos4210_pmu_vmstate = { @@ -481,9 +481,7 @@ static const VMStateDescription exynos4210_pmu_vmstate = { static void exynos4210_pmu_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = exynos4210_pmu_init; dc->reset = exynos4210_pmu_reset; dc->vmsd = &exynos4210_pmu_vmstate; } @@ -492,6 +490,7 @@ static const TypeInfo exynos4210_pmu_info = { .name = TYPE_EXYNOS4210_PMU, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(Exynos4210PmuState), + .instance_init = exynos4210_pmu_init, .class_init = exynos4210_pmu_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 18/30] hw/misc: QOM'ify mst_fpga.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (16 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 17/30] hw/misc: QOM'ify exynos4210_pmu.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 19/30] hw/dma: QOM'ify pxa2xx_dma.c Peter Maydell ` (11 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> Drop the old SysBus init function and use instance_init Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-11-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/misc/mst_fpga.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hw/misc/mst_fpga.c b/hw/misc/mst_fpga.c index 48d7dfb..a10f049 100644 --- a/hw/misc/mst_fpga.c +++ b/hw/misc/mst_fpga.c @@ -200,10 +200,11 @@ static int mst_fpga_post_load(void *opaque, int version_id) return 0; } -static int mst_fpga_init(SysBusDevice *sbd) +static void mst_fpga_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - mst_irq_state *s = MAINSTONE_FPGA(dev); + DeviceState *dev = DEVICE(obj); + mst_irq_state *s = MAINSTONE_FPGA(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); s->pcmcia0 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD; s->pcmcia1 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD; @@ -213,10 +214,9 @@ static int mst_fpga_init(SysBusDevice *sbd) /* alloc the external 16 irqs */ qdev_init_gpio_in(dev, mst_fpga_set_irq, MST_NUM_IRQS); - memory_region_init_io(&s->iomem, OBJECT(s), &mst_fpga_ops, s, + memory_region_init_io(&s->iomem, obj, &mst_fpga_ops, s, "fpga", 0x00100000); sysbus_init_mmio(sbd, &s->iomem); - return 0; } static VMStateDescription vmstate_mst_fpga_regs = { @@ -245,9 +245,7 @@ static VMStateDescription vmstate_mst_fpga_regs = { static void mst_fpga_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = mst_fpga_init; dc->desc = "Mainstone II FPGA"; dc->vmsd = &vmstate_mst_fpga_regs; } @@ -256,6 +254,7 @@ static const TypeInfo mst_fpga_info = { .name = TYPE_MAINSTONE_FPGA, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(mst_irq_state), + .instance_init = mst_fpga_init, .class_init = mst_fpga_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 19/30] hw/dma: QOM'ify pxa2xx_dma.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (17 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 18/30] hw/misc: QOM'ify mst_fpga.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 20/30] hw/sd: QOM'ify pl181.c Peter Maydell ` (10 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> split the old SysBus init function into an instance_init and a Device realize function Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-12-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/dma/pxa2xx_dma.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c index 2306abc..634a432 100644 --- a/hw/dma/pxa2xx_dma.c +++ b/hw/dma/pxa2xx_dma.c @@ -12,6 +12,7 @@ #include "hw/hw.h" #include "hw/arm/pxa.h" #include "hw/sysbus.h" +#include "qapi/error.h" #define PXA255_DMA_NUM_CHANNELS 16 #define PXA27X_DMA_NUM_CHANNELS 32 @@ -450,31 +451,36 @@ static void pxa2xx_dma_request(void *opaque, int req_num, int on) } } -static int pxa2xx_dma_init(SysBusDevice *sbd) +static void pxa2xx_dma_init(Object *obj) +{ + DeviceState *dev = DEVICE(obj); + PXA2xxDMAState *s = PXA2XX_DMA(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + + memset(s->req, 0, sizeof(uint8_t) * PXA2XX_DMA_NUM_REQUESTS); + + qdev_init_gpio_in(dev, pxa2xx_dma_request, PXA2XX_DMA_NUM_REQUESTS); + + memory_region_init_io(&s->iomem, obj, &pxa2xx_dma_ops, s, + "pxa2xx.dma", 0x00010000); + sysbus_init_mmio(sbd, &s->iomem); + sysbus_init_irq(sbd, &s->irq); +} + +static void pxa2xx_dma_realize(DeviceState *dev, Error **errp) { - DeviceState *dev = DEVICE(sbd); PXA2xxDMAState *s = PXA2XX_DMA(dev); int i; if (s->channels <= 0) { - return -1; + error_setg(errp, "channels value invalid"); + return; } s->chan = g_new0(PXA2xxDMAChannel, s->channels); for (i = 0; i < s->channels; i ++) s->chan[i].state = DCSR_STOPINTR; - - memset(s->req, 0, sizeof(uint8_t) * PXA2XX_DMA_NUM_REQUESTS); - - qdev_init_gpio_in(dev, pxa2xx_dma_request, PXA2XX_DMA_NUM_REQUESTS); - - memory_region_init_io(&s->iomem, OBJECT(s), &pxa2xx_dma_ops, s, - "pxa2xx.dma", 0x00010000); - sysbus_init_mmio(sbd, &s->iomem); - sysbus_init_irq(sbd, &s->irq); - - return 0; } DeviceState *pxa27x_dma_init(hwaddr base, qemu_irq irq) @@ -553,18 +559,18 @@ static Property pxa2xx_dma_properties[] = { static void pxa2xx_dma_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); - k->init = pxa2xx_dma_init; dc->desc = "PXA2xx DMA controller"; dc->vmsd = &vmstate_pxa2xx_dma; dc->props = pxa2xx_dma_properties; + dc->realize = pxa2xx_dma_realize; } static const TypeInfo pxa2xx_dma_info = { .name = TYPE_PXA2XX_DMA, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(PXA2xxDMAState), + .instance_init = pxa2xx_dma_init, .class_init = pxa2xx_dma_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 20/30] hw/sd: QOM'ify pl181.c 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (18 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 19/30] hw/dma: QOM'ify pxa2xx_dma.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 21/30] i2cbus: remove unused dev field Peter Maydell ` (9 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: xiaoqiang zhao <zxq_yx_007@163.com> split the old SysBus init function into an instance_init and a Device realize function Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Message-id: 1465815255-21776-13-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/sd/pl181.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index eb783c6..82c63a4 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -13,6 +13,7 @@ #include "hw/sysbus.h" #include "hw/sd/sd.h" #include "qemu/log.h" +#include "qapi/error.h" //#define DEBUG_PL181 1 @@ -481,43 +482,48 @@ static void pl181_reset(DeviceState *d) sd_set_cb(s->card, s->cardstatus[0], s->cardstatus[1]); } -static int pl181_init(SysBusDevice *sbd) +static void pl181_init(Object *obj) { - DeviceState *dev = DEVICE(sbd); - PL181State *s = PL181(dev); - DriveInfo *dinfo; + DeviceState *dev = DEVICE(obj); + PL181State *s = PL181(obj); + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); - memory_region_init_io(&s->iomem, OBJECT(s), &pl181_ops, s, "pl181", 0x1000); + memory_region_init_io(&s->iomem, obj, &pl181_ops, s, "pl181", 0x1000); sysbus_init_mmio(sbd, &s->iomem); sysbus_init_irq(sbd, &s->irq[0]); sysbus_init_irq(sbd, &s->irq[1]); qdev_init_gpio_out(dev, s->cardstatus, 2); +} + +static void pl181_realize(DeviceState *dev, Error **errp) +{ + PL181State *s = PL181(dev); + DriveInfo *dinfo; + /* FIXME use a qdev drive property instead of drive_get_next() */ dinfo = drive_get_next(IF_SD); s->card = sd_init(dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, false); if (s->card == NULL) { - return -1; + error_setg(errp, "sd_init failed"); } - - return 0; } static void pl181_class_init(ObjectClass *klass, void *data) { - SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass); DeviceClass *k = DEVICE_CLASS(klass); - sdc->init = pl181_init; k->vmsd = &vmstate_pl181; k->reset = pl181_reset; /* Reason: init() method uses drive_get_next() */ k->cannot_instantiate_with_device_add_yet = true; + k->realize = pl181_realize; } static const TypeInfo pl181_info = { .name = TYPE_PL181, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(PL181State), + .instance_init = pl181_init, .class_init = pl181_class_init, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 21/30] i2cbus: remove unused dev field 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (19 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 20/30] hw/sd: QOM'ify pl181.c Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 22/30] i2c: implement broadcast write Peter Maydell ` (8 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> The dev field in i2cbus is not used. So just drop it. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Message-id: 1465833014-21982-2-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/i2c/core.c b/hw/i2c/core.c index ba22104..013ff68 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -14,7 +14,6 @@ struct I2CBus { BusState qbus; I2CSlave *current_dev; - I2CSlave *dev; uint8_t saved_address; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 22/30] i2c: implement broadcast write 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (20 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 21/30] i2cbus: remove unused dev field Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 23/30] i2c: Factor our send() and recv() common logic Peter Maydell ` (7 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This does a write to every slaves when the I2C bus get a write to address 0. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Message-id: 1465833014-21982-3-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/core.c | 134 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 013ff68..1fa8268 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -10,11 +10,19 @@ #include "qemu/osdep.h" #include "hw/i2c/i2c.h" +typedef struct I2CNode I2CNode; + +struct I2CNode { + I2CSlave *elt; + QLIST_ENTRY(I2CNode) next; +}; + struct I2CBus { BusState qbus; - I2CSlave *current_dev; + QLIST_HEAD(, I2CNode) current_devs; uint8_t saved_address; + bool broadcast; }; static Property i2c_props[] = { @@ -35,17 +43,12 @@ static void i2c_bus_pre_save(void *opaque) { I2CBus *bus = opaque; - bus->saved_address = bus->current_dev ? bus->current_dev->address : -1; -} - -static int i2c_bus_post_load(void *opaque, int version_id) -{ - I2CBus *bus = opaque; - - /* The bus is loaded before attached devices, so load and save the - current device id. Devices will check themselves as loaded. */ - bus->current_dev = NULL; - return 0; + bus->saved_address = -1; + if (!QLIST_EMPTY(&bus->current_devs)) { + if (!bus->broadcast) { + bus->saved_address = QLIST_FIRST(&bus->current_devs)->elt->address; + } + } } static const VMStateDescription vmstate_i2c_bus = { @@ -53,9 +56,9 @@ static const VMStateDescription vmstate_i2c_bus = { .version_id = 1, .minimum_version_id = 1, .pre_save = i2c_bus_pre_save, - .post_load = i2c_bus_post_load, .fields = (VMStateField[]) { VMSTATE_UINT8(saved_address, I2CBus), + VMSTATE_BOOL(broadcast, I2CBus), VMSTATE_END_OF_LIST() } }; @@ -66,6 +69,7 @@ I2CBus *i2c_init_bus(DeviceState *parent, const char *name) I2CBus *bus; bus = I2C_BUS(qbus_create(TYPE_I2C_BUS, parent, name)); + QLIST_INIT(&bus->current_devs); vmstate_register(NULL, -1, &vmstate_i2c_bus, bus); return bus; } @@ -78,7 +82,7 @@ void i2c_set_slave_address(I2CSlave *dev, uint8_t address) /* Return nonzero if bus is busy. */ int i2c_bus_busy(I2CBus *bus) { - return bus->current_dev != NULL; + return !QLIST_EMPTY(&bus->current_devs); } /* Returns non-zero if the address is not valid. */ @@ -86,95 +90,111 @@ int i2c_bus_busy(I2CBus *bus) int i2c_start_transfer(I2CBus *bus, uint8_t address, int recv) { BusChild *kid; - I2CSlave *slave = NULL; I2CSlaveClass *sc; + I2CNode *node; + + if (address == 0x00) { + /* + * This is a broadcast, the current_devs will be all the devices of the + * bus. + */ + bus->broadcast = true; + } QTAILQ_FOREACH(kid, &bus->qbus.children, sibling) { DeviceState *qdev = kid->child; I2CSlave *candidate = I2C_SLAVE(qdev); - if (candidate->address == address) { - slave = candidate; - break; + if ((candidate->address == address) || (bus->broadcast)) { + node = g_malloc(sizeof(struct I2CNode)); + node->elt = candidate; + QLIST_INSERT_HEAD(&bus->current_devs, node, next); + if (!bus->broadcast) { + break; + } } } - if (!slave) { + if (QLIST_EMPTY(&bus->current_devs)) { return 1; } - sc = I2C_SLAVE_GET_CLASS(slave); - /* If the bus is already busy, assume this is a repeated - start condition. */ - bus->current_dev = slave; - if (sc->event) { - sc->event(slave, recv ? I2C_START_RECV : I2C_START_SEND); + QLIST_FOREACH(node, &bus->current_devs, next) { + sc = I2C_SLAVE_GET_CLASS(node->elt); + /* If the bus is already busy, assume this is a repeated + start condition. */ + if (sc->event) { + sc->event(node->elt, recv ? I2C_START_RECV : I2C_START_SEND); + } } return 0; } void i2c_end_transfer(I2CBus *bus) { - I2CSlave *dev = bus->current_dev; I2CSlaveClass *sc; + I2CNode *node, *next; - if (!dev) { + if (QLIST_EMPTY(&bus->current_devs)) { return; } - sc = I2C_SLAVE_GET_CLASS(dev); - if (sc->event) { - sc->event(dev, I2C_FINISH); + QLIST_FOREACH_SAFE(node, &bus->current_devs, next, next) { + sc = I2C_SLAVE_GET_CLASS(node->elt); + if (sc->event) { + sc->event(node->elt, I2C_FINISH); + } + QLIST_REMOVE(node, next); + g_free(node); } - - bus->current_dev = NULL; + bus->broadcast = false; } int i2c_send(I2CBus *bus, uint8_t data) { - I2CSlave *dev = bus->current_dev; I2CSlaveClass *sc; - - if (!dev) { - return -1; - } - - sc = I2C_SLAVE_GET_CLASS(dev); - if (sc->send) { - return sc->send(dev, data); + I2CNode *node; + int ret = 0; + + QLIST_FOREACH(node, &bus->current_devs, next) { + sc = I2C_SLAVE_GET_CLASS(node->elt); + if (sc->send) { + ret = ret || sc->send(node->elt, data); + } else { + ret = -1; + } } - - return -1; + return ret ? -1 : 0; } int i2c_recv(I2CBus *bus) { - I2CSlave *dev = bus->current_dev; I2CSlaveClass *sc; - if (!dev) { + if ((QLIST_EMPTY(&bus->current_devs)) || (bus->broadcast)) { return -1; } - sc = I2C_SLAVE_GET_CLASS(dev); + sc = I2C_SLAVE_GET_CLASS(QLIST_FIRST(&bus->current_devs)->elt); if (sc->recv) { - return sc->recv(dev); + return sc->recv(QLIST_FIRST(&bus->current_devs)->elt); } - return -1; } void i2c_nack(I2CBus *bus) { - I2CSlave *dev = bus->current_dev; I2CSlaveClass *sc; + I2CNode *node; - if (!dev) { + if (QLIST_EMPTY(&bus->current_devs)) { return; } - sc = I2C_SLAVE_GET_CLASS(dev); - if (sc->event) { - sc->event(dev, I2C_NACK); + QLIST_FOREACH(node, &bus->current_devs, next) { + sc = I2C_SLAVE_GET_CLASS(node->elt); + if (sc->event) { + sc->event(node->elt, I2C_NACK); + } } } @@ -182,9 +202,13 @@ static int i2c_slave_post_load(void *opaque, int version_id) { I2CSlave *dev = opaque; I2CBus *bus; + I2CNode *node; + bus = I2C_BUS(qdev_get_parent_bus(DEVICE(dev))); - if (bus->saved_address == dev->address) { - bus->current_dev = dev; + if ((bus->saved_address == dev->address) || (bus->broadcast)) { + node = g_malloc(sizeof(struct I2CNode)); + node->elt = dev; + QLIST_INSERT_HEAD(&bus->current_devs, node, next); } return 0; } -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 23/30] i2c: Factor our send() and recv() common logic 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (21 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 22/30] i2c: implement broadcast write Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 24/30] introduce aux-bus Peter Maydell ` (6 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: Peter Crosthwaite <crosthwaitepeter@gmail.com> Most of the control flow logic between send and recv (error checking etc) is the same. Factor this out into a common send_recv() API. This is then usable by clients, where the control logic for send and receive differs only by a boolean. E.g. if (send) i2c_send(...): else i2c_recv(...); becomes: i2c_send_recv(... , send); Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Message-id: 1465833014-21982-4-git-send-email-fred.konrad@greensocs.com Changes from FK: * Rebased on master. * Rebased on my i2c broadcast patch. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/i2c/core.c | 52 ++++++++++++++++++++++++++++++++++------------------ include/hw/i2c/i2c.h | 1 + 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 1fa8268..abb3efb 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -149,36 +149,52 @@ void i2c_end_transfer(I2CBus *bus) bus->broadcast = false; } -int i2c_send(I2CBus *bus, uint8_t data) +int i2c_send_recv(I2CBus *bus, uint8_t *data, bool send) { I2CSlaveClass *sc; I2CNode *node; int ret = 0; - QLIST_FOREACH(node, &bus->current_devs, next) { - sc = I2C_SLAVE_GET_CLASS(node->elt); - if (sc->send) { - ret = ret || sc->send(node->elt, data); - } else { - ret = -1; + if (send) { + QLIST_FOREACH(node, &bus->current_devs, next) { + sc = I2C_SLAVE_GET_CLASS(node->elt); + if (sc->send) { + ret = ret || sc->send(node->elt, *data); + } else { + ret = -1; + } + } + return ret ? -1 : 0; + } else { + if ((QLIST_EMPTY(&bus->current_devs)) || (bus->broadcast)) { + return -1; } + + sc = I2C_SLAVE_GET_CLASS(QLIST_FIRST(&bus->current_devs)->elt); + if (sc->recv) { + ret = sc->recv(QLIST_FIRST(&bus->current_devs)->elt); + if (ret < 0) { + return ret; + } else { + *data = ret; + return 0; + } + } + return -1; } - return ret ? -1 : 0; } -int i2c_recv(I2CBus *bus) +int i2c_send(I2CBus *bus, uint8_t data) { - I2CSlaveClass *sc; + return i2c_send_recv(bus, &data, true); +} - if ((QLIST_EMPTY(&bus->current_devs)) || (bus->broadcast)) { - return -1; - } +int i2c_recv(I2CBus *bus) +{ + uint8_t data; + int ret = i2c_send_recv(bus, &data, false); - sc = I2C_SLAVE_GET_CLASS(QLIST_FIRST(&bus->current_devs)->elt); - if (sc->recv) { - return sc->recv(QLIST_FIRST(&bus->current_devs)->elt); - } - return -1; + return ret < 0 ? ret : data; } void i2c_nack(I2CBus *bus) diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index 4986ebc..c4085aa 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -56,6 +56,7 @@ int i2c_bus_busy(I2CBus *bus); int i2c_start_transfer(I2CBus *bus, uint8_t address, int recv); void i2c_end_transfer(I2CBus *bus); void i2c_nack(I2CBus *bus); +int i2c_send_recv(I2CBus *bus, uint8_t *data, bool send); int i2c_send(I2CBus *bus, uint8_t data); int i2c_recv(I2CBus *bus); -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 24/30] introduce aux-bus 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (22 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 23/30] i2c: Factor our send() and recv() common logic Peter Maydell @ 2016-06-14 14:13 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 25/30] introduce dpcd module Peter Maydell ` (5 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:13 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This introduces a new bus: aux-bus. It contains an address space for aux slaves devices and a bridge to an I2C bus for I2C through AUX transactions. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Message-id: 1465833014-21982-5-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- default-configs/aarch64-softmmu.mak | 1 + hw/misc/Makefile.objs | 1 + hw/misc/aux.c | 292 ++++++++++++++++++++++++++++++++++++ include/hw/misc/aux.h | 128 ++++++++++++++++ 4 files changed, 422 insertions(+) create mode 100644 hw/misc/aux.c create mode 100644 include/hw/misc/aux.h diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak index 96dd994..d3a2665 100644 --- a/default-configs/aarch64-softmmu.mak +++ b/default-configs/aarch64-softmmu.mak @@ -3,4 +3,5 @@ # We support all the 32 bit boards so need all their config include arm-softmmu.mak +CONFIG_AUX=y CONFIG_XLNX_ZYNQMP=y diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs index bc0dd2c..ffb49c1 100644 --- a/hw/misc/Makefile.objs +++ b/hw/misc/Makefile.objs @@ -51,3 +51,4 @@ obj-$(CONFIG_MIPS_ITU) += mips_itu.o obj-$(CONFIG_PVPANIC) += pvpanic.o obj-$(CONFIG_EDU) += edu.o obj-$(CONFIG_HYPERV_TESTDEV) += hyperv_testdev.o +obj-$(CONFIG_AUX) += aux.o diff --git a/hw/misc/aux.c b/hw/misc/aux.c new file mode 100644 index 0000000..25d7712 --- /dev/null +++ b/hw/misc/aux.c @@ -0,0 +1,292 @@ +/* + * aux.c + * + * Copyright 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option)any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +/* + * This is an implementation of the AUX bus for VESA Display Port v1.1a. + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/misc/aux.h" +#include "hw/i2c/i2c.h" +#include "monitor/monitor.h" + +#ifndef DEBUG_AUX +#define DEBUG_AUX 0 +#endif + +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_AUX) { \ + qemu_log("aux: " fmt , ## __VA_ARGS__); \ + } \ +} while (0); + +#define TYPE_AUXTOI2C "aux-to-i2c-bridge" +#define AUXTOI2C(obj) OBJECT_CHECK(AUXTOI2CState, (obj), TYPE_AUXTOI2C) + +static void aux_slave_dev_print(Monitor *mon, DeviceState *dev, int indent); +static inline I2CBus *aux_bridge_get_i2c_bus(AUXTOI2CState *bridge); + +/* aux-bus implementation (internal not public) */ +static void aux_bus_class_init(ObjectClass *klass, void *data) +{ + BusClass *k = BUS_CLASS(klass); + + /* AUXSlave has an MMIO so we need to change the way we print information + * in monitor. + */ + k->print_dev = aux_slave_dev_print; +} + +AUXBus *aux_init_bus(DeviceState *parent, const char *name) +{ + AUXBus *bus; + + bus = AUX_BUS(qbus_create(TYPE_AUX_BUS, parent, name)); + bus->bridge = AUXTOI2C(qdev_create(BUS(bus), TYPE_AUXTOI2C)); + + /* Memory related. */ + bus->aux_io = g_malloc(sizeof(*bus->aux_io)); + memory_region_init(bus->aux_io, OBJECT(bus), "aux-io", (1 << 20)); + address_space_init(&bus->aux_addr_space, bus->aux_io, "aux-io"); + return bus; +} + +static void aux_bus_map_device(AUXBus *bus, AUXSlave *dev, hwaddr addr) +{ + memory_region_add_subregion(bus->aux_io, addr, dev->mmio); +} + +static bool aux_bus_is_bridge(AUXBus *bus, DeviceState *dev) +{ + return (dev == DEVICE(bus->bridge)); +} + +I2CBus *aux_get_i2c_bus(AUXBus *bus) +{ + return aux_bridge_get_i2c_bus(bus->bridge); +} + +AUXReply aux_request(AUXBus *bus, AUXCommand cmd, uint32_t address, + uint8_t len, uint8_t *data) +{ + AUXReply ret = AUX_NACK; + I2CBus *i2c_bus = aux_get_i2c_bus(bus); + size_t i; + bool is_write = false; + + DPRINTF("request at address 0x%" PRIX32 ", command %u, len %u\n", address, + cmd, len); + + switch (cmd) { + /* + * Forward the request on the AUX bus.. + */ + case WRITE_AUX: + case READ_AUX: + is_write = cmd == READ_AUX ? false : true; + for (i = 0; i < len; i++) { + if (!address_space_rw(&bus->aux_addr_space, address++, + MEMTXATTRS_UNSPECIFIED, data++, 1, + is_write)) { + ret = AUX_I2C_ACK; + } else { + ret = AUX_NACK; + break; + } + } + break; + /* + * Classic I2C transactions.. + */ + case READ_I2C: + case WRITE_I2C: + is_write = cmd == READ_I2C ? false : true; + if (i2c_bus_busy(i2c_bus)) { + i2c_end_transfer(i2c_bus); + } + + if (i2c_start_transfer(i2c_bus, address, is_write)) { + ret = AUX_I2C_NACK; + break; + } + + ret = AUX_I2C_ACK; + while (len > 0) { + if (i2c_send_recv(i2c_bus, data++, is_write) < 0) { + ret = AUX_I2C_NACK; + break; + } + len--; + } + i2c_end_transfer(i2c_bus); + break; + /* + * I2C MOT transactions. + * + * Here we send a start when: + * - We didn't start transaction yet. + * - We had a READ and we do a WRITE. + * - We changed the address. + */ + case WRITE_I2C_MOT: + case READ_I2C_MOT: + is_write = cmd == READ_I2C_MOT ? false : true; + if (!i2c_bus_busy(i2c_bus)) { + /* + * No transactions started.. + */ + if (i2c_start_transfer(i2c_bus, address, is_write)) { + ret = AUX_I2C_NACK; + break; + } + } else if ((address != bus->last_i2c_address) || + (bus->last_transaction != cmd)) { + /* + * Transaction started but we need to restart.. + */ + i2c_end_transfer(i2c_bus); + if (i2c_start_transfer(i2c_bus, address, is_write)) { + ret = AUX_I2C_NACK; + break; + } + } + + while (len > 0) { + if (i2c_send_recv(i2c_bus, data++, is_write) < 0) { + ret = AUX_I2C_NACK; + i2c_end_transfer(i2c_bus); + break; + } + len--; + } + bus->last_transaction = cmd; + bus->last_i2c_address = address; + ret = AUX_I2C_ACK; + break; + default: + DPRINTF("Not implemented!\n"); + return AUX_NACK; + } + + DPRINTF("reply: %u\n", ret); + return ret; +} + +static const TypeInfo aux_bus_info = { + .name = TYPE_AUX_BUS, + .parent = TYPE_BUS, + .instance_size = sizeof(AUXBus), + .class_init = aux_bus_class_init +}; + +/* aux-i2c implementation (internal not public) */ +struct AUXTOI2CState { + /*< private >*/ + DeviceState parent_obj; + + /*< public >*/ + I2CBus *i2c_bus; +}; + +static void aux_bridge_init(Object *obj) +{ + AUXTOI2CState *s = AUXTOI2C(obj); + + s->i2c_bus = i2c_init_bus(DEVICE(obj), "aux-i2c"); +} + +static inline I2CBus *aux_bridge_get_i2c_bus(AUXTOI2CState *bridge) +{ + return bridge->i2c_bus; +} + +static const TypeInfo aux_to_i2c_type_info = { + .name = TYPE_AUXTOI2C, + .parent = TYPE_DEVICE, + .instance_size = sizeof(AUXTOI2CState), + .instance_init = aux_bridge_init +}; + +/* aux-slave implementation */ +static void aux_slave_dev_print(Monitor *mon, DeviceState *dev, int indent) +{ + AUXBus *bus = AUX_BUS(qdev_get_parent_bus(dev)); + AUXSlave *s; + + /* Don't print anything if the device is I2C "bridge". */ + if (aux_bus_is_bridge(bus, dev)) { + return; + } + + s = AUX_SLAVE(dev); + + monitor_printf(mon, "%*smemory " TARGET_FMT_plx "/" TARGET_FMT_plx "\n", + indent, "", + object_property_get_int(OBJECT(s->mmio), "addr", NULL), + memory_region_size(s->mmio)); +} + +DeviceState *aux_create_slave(AUXBus *bus, const char *type, uint32_t addr) +{ + DeviceState *dev; + + dev = DEVICE(object_new(type)); + assert(dev); + qdev_set_parent_bus(dev, &bus->qbus); + qdev_init_nofail(dev); + aux_bus_map_device(AUX_BUS(qdev_get_parent_bus(dev)), AUX_SLAVE(dev), addr); + return dev; +} + +void aux_init_mmio(AUXSlave *aux_slave, MemoryRegion *mmio) +{ + assert(!aux_slave->mmio); + aux_slave->mmio = mmio; +} + +static void aux_slave_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *k = DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_MISC, k->categories); + k->bus_type = TYPE_AUX_BUS; +} + +static const TypeInfo aux_slave_type_info = { + .name = TYPE_AUX_SLAVE, + .parent = TYPE_DEVICE, + .instance_size = sizeof(AUXSlave), + .abstract = true, + .class_init = aux_slave_class_init, +}; + +static void aux_register_types(void) +{ + type_register_static(&aux_bus_info); + type_register_static(&aux_slave_type_info); + type_register_static(&aux_to_i2c_type_info); +} + +type_init(aux_register_types) diff --git a/include/hw/misc/aux.h b/include/hw/misc/aux.h new file mode 100644 index 0000000..759c3bf --- /dev/null +++ b/include/hw/misc/aux.h @@ -0,0 +1,128 @@ +/* + * aux.h + * + * Copyright (C)2014 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option)any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef QEMU_AUX_H +#define QEMU_AUX_H + +#include "hw/qdev.h" + +typedef struct AUXBus AUXBus; +typedef struct AUXSlave AUXSlave; +typedef enum AUXCommand AUXCommand; +typedef enum AUXReply AUXReply; +typedef struct AUXTOI2CState AUXTOI2CState; + +enum AUXCommand { + WRITE_I2C = 0, + READ_I2C = 1, + WRITE_I2C_STATUS = 2, + WRITE_I2C_MOT = 4, + READ_I2C_MOT = 5, + WRITE_AUX = 8, + READ_AUX = 9 +}; + +enum AUXReply { + AUX_I2C_ACK = 0, + AUX_NACK = 1, + AUX_DEFER = 2, + AUX_I2C_NACK = 4, + AUX_I2C_DEFER = 8 +}; + +#define TYPE_AUX_BUS "aux-bus" +#define AUX_BUS(obj) OBJECT_CHECK(AUXBus, (obj), TYPE_AUX_BUS) + +struct AUXBus { + /* < private > */ + BusState qbus; + + /* < public > */ + AUXSlave *current_dev; + AUXSlave *dev; + uint32_t last_i2c_address; + AUXCommand last_transaction; + + AUXTOI2CState *bridge; + + MemoryRegion *aux_io; + AddressSpace aux_addr_space; +}; + +#define TYPE_AUX_SLAVE "aux-slave" +#define AUX_SLAVE(obj) \ + OBJECT_CHECK(AUXSlave, (obj), TYPE_AUX_SLAVE) + +struct AUXSlave { + /* < private > */ + DeviceState parent_obj; + + /* < public > */ + MemoryRegion *mmio; +}; + +/** + * aux_init_bus: Initialize an AUX bus. + * + * Returns the new AUX bus created. + * + * @parent The device where this bus is located. + * @name The name of the bus. + */ +AUXBus *aux_init_bus(DeviceState *parent, const char *name); + +/* + * aux_request: Make a request on the bus. + * + * Returns the reply of the request. + * + * @bus Ths bus where the request happen. + * @cmd The command requested. + * @address The 20bits address of the slave. + * @len The length of the read or write. + * @data The data array which will be filled or read during transfer. + */ +AUXReply aux_request(AUXBus *bus, AUXCommand cmd, uint32_t address, + uint8_t len, uint8_t *data); + +/* + * aux_get_i2c_bus: Get the i2c bus for I2C over AUX command. + * + * Returns the i2c bus associated to this AUX bus. + * + * @bus The AUX bus. + */ +I2CBus *aux_get_i2c_bus(AUXBus *bus); + +/* + * aux_init_mmio: Init an mmio for an AUX slave. + * + * @aux_slave The AUX slave. + * @mmio The mmio to be registered. + */ +void aux_init_mmio(AUXSlave *aux_slave, MemoryRegion *mmio); + +DeviceState *aux_create_slave(AUXBus *bus, const char *name, uint32_t addr); + +#endif /* !QEMU_AUX_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 25/30] introduce dpcd module 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (23 preceding siblings ...) 2016-06-14 14:13 ` [Qemu-devel] [PULL 24/30] introduce aux-bus Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 26/30] hw/i2c-ddc.c: Implement DDC I2C slave Peter Maydell ` (4 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This introduces dpcd module. It wires on a aux-bus and can be accessed by the driver to get lane-speed, etc. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Message-id: 1465833014-21982-6-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- default-configs/aarch64-softmmu.mak | 1 + hw/display/Makefile.objs | 1 + hw/display/dpcd.c | 173 ++++++++++++++++++++++++++++++++++++ include/hw/display/dpcd.h | 105 ++++++++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 hw/display/dpcd.c create mode 100644 include/hw/display/dpcd.h diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak index d3a2665..87165b7 100644 --- a/default-configs/aarch64-softmmu.mak +++ b/default-configs/aarch64-softmmu.mak @@ -4,4 +4,5 @@ include arm-softmmu.mak CONFIG_AUX=y +CONFIG_DPCD=y CONFIG_XLNX_ZYNQMP=y diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index d99780e..ddf3275 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -43,3 +43,4 @@ virtio-gpu.o-cflags := $(VIRGL_CFLAGS) virtio-gpu.o-libs += $(VIRGL_LIBS) virtio-gpu-3d.o-cflags := $(VIRGL_CFLAGS) virtio-gpu-3d.o-libs += $(VIRGL_LIBS) +obj-$(CONFIG_DPCD) += dpcd.o diff --git a/hw/display/dpcd.c b/hw/display/dpcd.c new file mode 100644 index 0000000..5a36855 --- /dev/null +++ b/hw/display/dpcd.c @@ -0,0 +1,173 @@ +/* + * dpcd.c + * + * Copyright (C) 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option)any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +/* + * This is a simple AUX slave which emulates a connected screen. + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/misc/aux.h" +#include "hw/display/dpcd.h" + +#ifndef DEBUG_DPCD +#define DEBUG_DPCD 0 +#endif + +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_DPCD) { \ + qemu_log("dpcd: " fmt, ## __VA_ARGS__); \ + } \ +} while (0); + +#define DPCD_READABLE_AREA 0x600 + +struct DPCDState { + /*< private >*/ + AUXSlave parent_obj; + + /*< public >*/ + /* + * The DCPD is 0x7FFFF length but read as 0 after offset 0x5FF. + */ + uint8_t dpcd_info[DPCD_READABLE_AREA]; + + MemoryRegion iomem; +}; + +static uint64_t dpcd_read(void *opaque, hwaddr offset, unsigned size) +{ + uint8_t ret; + DPCDState *e = DPCD(opaque); + + if (offset < DPCD_READABLE_AREA) { + ret = e->dpcd_info[offset]; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "dpcd: Bad offset 0x%" HWADDR_PRIX "\n", + offset); + ret = 0; + } + + DPRINTF("read 0x%" PRIX8 " @0x%" HWADDR_PRIX "\n", ret, offset); + return ret; +} + +static void dpcd_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + DPCDState *e = DPCD(opaque); + + DPRINTF("write 0x%" PRIX8 " @0x%" HWADDR_PRIX "\n", (uint8_t)value, offset); + + if (offset < DPCD_READABLE_AREA) { + e->dpcd_info[offset] = value; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "dpcd: Bad offset 0x%" HWADDR_PRIX "\n", + offset); + } +} + +static const MemoryRegionOps aux_ops = { + .read = dpcd_read, + .write = dpcd_write, + .valid = { + .min_access_size = 1, + .max_access_size = 1, + }, + .impl = { + .min_access_size = 1, + .max_access_size = 1, + }, +}; + +static void dpcd_reset(DeviceState *dev) +{ + DPCDState *s = DPCD(dev); + + memset(&(s->dpcd_info), 0, sizeof(s->dpcd_info)); + + s->dpcd_info[DPCD_REVISION] = DPCD_REV_1_0; + s->dpcd_info[DPCD_MAX_LINK_RATE] = DPCD_5_4GBPS; + s->dpcd_info[DPCD_MAX_LANE_COUNT] = DPCD_FOUR_LANES; + s->dpcd_info[DPCD_RECEIVE_PORT0_CAP_0] = DPCD_EDID_PRESENT; + /* buffer size */ + s->dpcd_info[DPCD_RECEIVE_PORT0_CAP_1] = 0xFF; + + s->dpcd_info[DPCD_LANE0_1_STATUS] = DPCD_LANE0_CR_DONE + | DPCD_LANE0_CHANNEL_EQ_DONE + | DPCD_LANE0_SYMBOL_LOCKED + | DPCD_LANE1_CR_DONE + | DPCD_LANE1_CHANNEL_EQ_DONE + | DPCD_LANE1_SYMBOL_LOCKED; + s->dpcd_info[DPCD_LANE2_3_STATUS] = DPCD_LANE2_CR_DONE + | DPCD_LANE2_CHANNEL_EQ_DONE + | DPCD_LANE2_SYMBOL_LOCKED + | DPCD_LANE3_CR_DONE + | DPCD_LANE3_CHANNEL_EQ_DONE + | DPCD_LANE3_SYMBOL_LOCKED; + + s->dpcd_info[DPCD_LANE_ALIGN_STATUS_UPDATED] = DPCD_INTERLANE_ALIGN_DONE; + s->dpcd_info[DPCD_SINK_STATUS] = DPCD_RECEIVE_PORT_0_STATUS; +} + +static void dpcd_init(Object *obj) +{ + DPCDState *s = DPCD(obj); + + memory_region_init_io(&s->iomem, obj, &aux_ops, s, TYPE_DPCD, 0x7FFFF); + aux_init_mmio(AUX_SLAVE(obj), &s->iomem); +} + +static const VMStateDescription vmstate_dpcd = { + .name = TYPE_DPCD, + .version_id = 0, + .minimum_version_id = 0, + .fields = (VMStateField[]) { + VMSTATE_UINT8_ARRAY_V(dpcd_info, DPCDState, DPCD_READABLE_AREA, 0), + VMSTATE_END_OF_LIST() + } +}; + +static void dpcd_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); + + dc->reset = dpcd_reset; + dc->vmsd = &vmstate_dpcd; +} + +static const TypeInfo dpcd_info = { + .name = TYPE_DPCD, + .parent = TYPE_AUX_SLAVE, + .instance_size = sizeof(DPCDState), + .class_init = dpcd_class_init, + .instance_init = dpcd_init, +}; + +static void dpcd_register_types(void) +{ + type_register_static(&dpcd_info); +} + +type_init(dpcd_register_types) diff --git a/include/hw/display/dpcd.h b/include/hw/display/dpcd.h new file mode 100644 index 0000000..274dc2e --- /dev/null +++ b/include/hw/display/dpcd.h @@ -0,0 +1,105 @@ +/* + * dpcd.h + * + * Copyright (C)2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option)any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef DPCD_H +#define DPCD_H + +typedef struct DPCDState DPCDState; + +#define TYPE_DPCD "dpcd" +#define DPCD(obj) OBJECT_CHECK(DPCDState, (obj), TYPE_DPCD) + +/* DCPD Revision. */ +#define DPCD_REVISION 0x00 +#define DPCD_REV_1_0 0x10 +#define DPCD_REV_1_1 0x11 + +/* DCPD Max Link Rate. */ +#define DPCD_MAX_LINK_RATE 0x01 +#define DPCD_1_62GBPS 0x06 +#define DPCD_2_7GBPS 0x0A +#define DPCD_5_4GBPS 0x14 + +#define DPCD_MAX_LANE_COUNT 0x02 +#define DPCD_ONE_LANE 0x01 +#define DPCD_TWO_LANES 0x02 +#define DPCD_FOUR_LANES 0x04 + +/* DCPD Max down spread. */ +#define DPCD_UP_TO_0_5 0x01 +#define DPCD_NO_AUX_HANDSHAKE_LINK_TRAINING 0x40 + +/* DCPD Downstream port type. */ +#define DPCD_DISPLAY_PORT 0x00 +#define DPCD_ANALOG 0x02 +#define DPCD_DVI_HDMI 0x04 +#define DPCD_OTHER 0x06 + +/* DPCD Format conversion. */ +#define DPCD_FORMAT_CONVERSION 0x08 + +/* Main link channel coding. */ +#define DPCD_ANSI_8B_10B 0x01 + +/* Down stream port count. */ +#define DPCD_OUI_SUPPORTED 0x80 + +/* Receiver port capability. */ +#define DPCD_RECEIVE_PORT0_CAP_0 0x08 +#define DPCD_RECEIVE_PORT0_CAP_1 0x09 +#define DPCD_EDID_PRESENT 0x02 +#define DPCD_ASSOCIATED_TO_PRECEDING_PORT 0x04 + +/* Down stream port capability. */ +#define DPCD_CAP_DISPLAY_PORT 0x000 +#define DPCD_CAP_ANALOG_VGA 0x001 +#define DPCD_CAP_DVI 0x002 +#define DPCD_CAP_HDMI 0x003 +#define DPCD_CAP_OTHER 0x100 + +#define DPCD_LANE0_1_STATUS 0x202 +#define DPCD_LANE0_CR_DONE (1 << 0) +#define DPCD_LANE0_CHANNEL_EQ_DONE (1 << 1) +#define DPCD_LANE0_SYMBOL_LOCKED (1 << 2) +#define DPCD_LANE1_CR_DONE (1 << 4) +#define DPCD_LANE1_CHANNEL_EQ_DONE (1 << 5) +#define DPCD_LANE1_SYMBOL_LOCKED (1 << 6) + +#define DPCD_LANE2_3_STATUS 0x203 +#define DPCD_LANE2_CR_DONE (1 << 0) +#define DPCD_LANE2_CHANNEL_EQ_DONE (1 << 1) +#define DPCD_LANE2_SYMBOL_LOCKED (1 << 2) +#define DPCD_LANE3_CR_DONE (1 << 4) +#define DPCD_LANE3_CHANNEL_EQ_DONE (1 << 5) +#define DPCD_LANE3_SYMBOL_LOCKED (1 << 6) + +#define DPCD_LANE_ALIGN_STATUS_UPDATED 0x204 +#define DPCD_INTERLANE_ALIGN_DONE 0x01 +#define DPCD_DOWNSTREAM_PORT_STATUS_CHANGED 0x40 +#define DPCD_LINK_STATUS_UPDATED 0x80 + +#define DPCD_SINK_STATUS 0x205 +#define DPCD_RECEIVE_PORT_0_STATUS 0x01 + +#endif /* !DPCD_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 26/30] hw/i2c-ddc.c: Implement DDC I2C slave 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (24 preceding siblings ...) 2016-06-14 14:14 ` [Qemu-devel] [PULL 25/30] introduce dpcd module Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 27/30] introduce xlnx-dpdma Peter Maydell ` (3 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel Implement an I2C slave which implements DDC and returns the EDID data for an attached monitor. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Tested-by: Hyun Kwon <hyun.kwon@xilinx.com> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Message-id: 1465833014-21982-7-git-send-email-fred.konrad@greensocs.com - Rebased on the current master. - Modified for QOM. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- default-configs/aarch64-softmmu.mak | 1 + hw/i2c/Makefile.objs | 1 + hw/i2c/i2c-ddc.c | 307 ++++++++++++++++++++++++++++++++++++ include/hw/i2c/i2c-ddc.h | 38 +++++ 4 files changed, 347 insertions(+) create mode 100644 hw/i2c/i2c-ddc.c create mode 100644 include/hw/i2c/i2c-ddc.h diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak index 87165b7..2449483 100644 --- a/default-configs/aarch64-softmmu.mak +++ b/default-configs/aarch64-softmmu.mak @@ -4,5 +4,6 @@ include arm-softmmu.mak CONFIG_AUX=y +CONFIG_DDC=y CONFIG_DPCD=y CONFIG_XLNX_ZYNQMP=y diff --git a/hw/i2c/Makefile.objs b/hw/i2c/Makefile.objs index 1fd54ed..a081b8e 100644 --- a/hw/i2c/Makefile.objs +++ b/hw/i2c/Makefile.objs @@ -1,4 +1,5 @@ common-obj-y += core.o smbus.o smbus_eeprom.o +common-obj-$(CONFIG_DDC) += i2c-ddc.o common-obj-$(CONFIG_VERSATILE_I2C) += versatile_i2c.o common-obj-$(CONFIG_ACPI_X86) += smbus_ich9.o common-obj-$(CONFIG_APM) += pm_smbus.o diff --git a/hw/i2c/i2c-ddc.c b/hw/i2c/i2c-ddc.c new file mode 100644 index 0000000..02cd374 --- /dev/null +++ b/hw/i2c/i2c-ddc.c @@ -0,0 +1,307 @@ +/* A simple I2C slave for returning monitor EDID data via DDC. + * + * Copyright (c) 2011 Linaro Limited + * Written by Peter Maydell + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/i2c/i2c.h" +#include "hw/i2c/i2c-ddc.h" + +#ifndef DEBUG_I2CDDC +#define DEBUG_I2CDDC 0 +#endif + +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_I2CDDC) { \ + qemu_log("i2c-ddc: " fmt , ## __VA_ARGS__); \ + } \ +} while (0); + +/* Structure defining a monitor's characteristics in a + * readable format: this should be passed to build_edid_blob() + * to convert it into the 128 byte binary EDID blob. + * Not all bits of the EDID are customisable here. + */ +struct EDIDData { + char manuf_id[3]; /* three upper case letters */ + uint16_t product_id; + uint32_t serial_no; + uint8_t manuf_week; + int manuf_year; + uint8_t h_cm; + uint8_t v_cm; + uint8_t gamma; + char monitor_name[14]; + char serial_no_string[14]; + /* Range limits */ + uint8_t vmin; /* Hz */ + uint8_t vmax; /* Hz */ + uint8_t hmin; /* kHz */ + uint8_t hmax; /* kHz */ + uint8_t pixclock; /* MHz / 10 */ + uint8_t timing_data[18]; +}; + +typedef struct EDIDData EDIDData; + +/* EDID data for a simple LCD monitor */ +static const EDIDData lcd_edid = { + /* The manuf_id ought really to be an assigned EISA ID */ + .manuf_id = "QMU", + .product_id = 0, + .serial_no = 1, + .manuf_week = 1, + .manuf_year = 2011, + .h_cm = 40, + .v_cm = 30, + .gamma = 0x78, + .monitor_name = "QEMU monitor", + .serial_no_string = "1", + .vmin = 40, + .vmax = 120, + .hmin = 30, + .hmax = 100, + .pixclock = 18, + .timing_data = { + /* Borrowed from a 21" LCD */ + 0x48, 0x3f, 0x40, 0x30, 0x62, 0xb0, 0x32, 0x40, 0x40, + 0xc0, 0x13, 0x00, 0x98, 0x32, 0x11, 0x00, 0x00, 0x1e + } +}; + +static uint8_t manuf_char_to_int(char c) +{ + return (c - 'A') & 0x1f; +} + +static void write_ascii_descriptor_block(uint8_t *descblob, uint8_t blocktype, + const char *string) +{ + /* Write an EDID Descriptor Block of the "ascii string" type */ + int i; + descblob[0] = descblob[1] = descblob[2] = descblob[4] = 0; + descblob[3] = blocktype; + /* The rest is 13 bytes of ASCII; if less then the rest must + * be filled with newline then spaces + */ + for (i = 5; i < 19; i++) { + descblob[i] = string[i - 5]; + if (!descblob[i]) { + break; + } + } + if (i < 19) { + descblob[i++] = '\n'; + } + for ( ; i < 19; i++) { + descblob[i] = ' '; + } +} + +static void write_range_limits_descriptor(const EDIDData *edid, + uint8_t *descblob) +{ + int i; + descblob[0] = descblob[1] = descblob[2] = descblob[4] = 0; + descblob[3] = 0xfd; + descblob[5] = edid->vmin; + descblob[6] = edid->vmax; + descblob[7] = edid->hmin; + descblob[8] = edid->hmax; + descblob[9] = edid->pixclock; + descblob[10] = 0; + descblob[11] = 0xa; + for (i = 12; i < 19; i++) { + descblob[i] = 0x20; + } +} + +static void build_edid_blob(const EDIDData *edid, uint8_t *blob) +{ + /* Write an EDID 1.3 format blob (128 bytes) based + * on the EDIDData structure. + */ + int i; + uint8_t cksum; + + /* 00-07 : header */ + blob[0] = blob[7] = 0; + for (i = 1 ; i < 7; i++) { + blob[i] = 0xff; + } + /* 08-09 : manufacturer ID */ + blob[8] = (manuf_char_to_int(edid->manuf_id[0]) << 2) + | (manuf_char_to_int(edid->manuf_id[1]) >> 3); + blob[9] = (manuf_char_to_int(edid->manuf_id[1]) << 5) + | manuf_char_to_int(edid->manuf_id[2]); + /* 10-11 : product ID code */ + blob[10] = edid->product_id; + blob[11] = edid->product_id >> 8; + blob[12] = edid->serial_no; + blob[13] = edid->serial_no >> 8; + blob[14] = edid->serial_no >> 16; + blob[15] = edid->serial_no >> 24; + /* 16 : week of manufacture */ + blob[16] = edid->manuf_week; + /* 17 : year of manufacture - 1990 */ + blob[17] = edid->manuf_year - 1990; + /* 18, 19 : EDID version and revision */ + blob[18] = 1; + blob[19] = 3; + /* 20 - 24 : basic display parameters */ + /* We are always a digital display */ + blob[20] = 0x80; + /* 21, 22 : max h/v size in cm */ + blob[21] = edid->h_cm; + blob[22] = edid->v_cm; + /* 23 : gamma (divide by 100 then add 1 for actual value) */ + blob[23] = edid->gamma; + /* 24 feature support: no power management, RGB, preferred timing mode, + * standard colour space + */ + blob[24] = 0x0e; + /* 25 - 34 : chromaticity coordinates. These are the + * standard sRGB chromaticity values + */ + blob[25] = 0xee; + blob[26] = 0x91; + blob[27] = 0xa3; + blob[28] = 0x54; + blob[29] = 0x4c; + blob[30] = 0x99; + blob[31] = 0x26; + blob[32] = 0x0f; + blob[33] = 0x50; + blob[34] = 0x54; + /* 35, 36 : Established timings: claim to support everything */ + blob[35] = blob[36] = 0xff; + /* 37 : manufacturer's reserved timing: none */ + blob[37] = 0; + /* 38 - 53 : standard timing identification + * don't claim anything beyond what the 'established timings' + * already provide. Unused slots must be (0x1, 0x1) + */ + for (i = 38; i < 54; i++) { + blob[i] = 0x1; + } + /* 54 - 71 : descriptor block 1 : must be preferred timing data */ + memcpy(blob + 54, edid->timing_data, 18); + /* 72 - 89, 90 - 107, 108 - 125 : descriptor block 2, 3, 4 + * Order not important, but we must have a monitor name and a + * range limits descriptor. + */ + write_range_limits_descriptor(edid, blob + 72); + write_ascii_descriptor_block(blob + 90, 0xfc, edid->monitor_name); + write_ascii_descriptor_block(blob + 108, 0xff, edid->serial_no_string); + + /* 126 : extension flag */ + blob[126] = 0; + + cksum = 0; + for (i = 0; i < 127; i++) { + cksum += blob[i]; + } + /* 127 : checksum */ + blob[127] = -cksum; + if (DEBUG_I2CDDC) { + qemu_hexdump((char *)blob, stdout, "", 128); + } +} + +static void i2c_ddc_reset(DeviceState *ds) +{ + I2CDDCState *s = I2CDDC(ds); + + s->firstbyte = false; + s->reg = 0; +} + +static void i2c_ddc_event(I2CSlave *i2c, enum i2c_event event) +{ + I2CDDCState *s = I2CDDC(i2c); + + if (event == I2C_START_SEND) { + s->firstbyte = true; + } +} + +static int i2c_ddc_rx(I2CSlave *i2c) +{ + I2CDDCState *s = I2CDDC(i2c); + + int value; + value = s->edid_blob[s->reg]; + s->reg++; + return value; +} + +static int i2c_ddc_tx(I2CSlave *i2c, uint8_t data) +{ + I2CDDCState *s = I2CDDC(i2c); + if (s->firstbyte) { + s->reg = data; + s->firstbyte = false; + DPRINTF("[EDID] Written new pointer: %u\n", data); + return 1; + } + + /* Ignore all writes */ + s->reg++; + return 1; +} + +static void i2c_ddc_init(Object *obj) +{ + I2CDDCState *s = I2CDDC(obj); + build_edid_blob(&lcd_edid, s->edid_blob); +} + +static void i2c_ddc_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); + I2CSlaveClass *isc = I2C_SLAVE_CLASS(oc); + + dc->reset = i2c_ddc_reset; + isc->event = i2c_ddc_event; + isc->recv = i2c_ddc_rx; + isc->send = i2c_ddc_tx; +} + +static const VMStateDescription vmstate_i2c_ddc = { + .name = TYPE_I2CDDC, + .version_id = 1, + .fields = (VMStateField[]) { + VMSTATE_BOOL(firstbyte, I2CDDCState), + VMSTATE_UINT8(reg, I2CDDCState), + VMSTATE_END_OF_LIST() + } +}; + +static TypeInfo i2c_ddc_info = { + .name = TYPE_I2CDDC, + .parent = TYPE_I2C_SLAVE, + .instance_size = sizeof(I2CDDCState), + .instance_init = i2c_ddc_init, + .class_init = i2c_ddc_class_init +}; + +static void ddc_register_devices(void) +{ + type_register_static(&i2c_ddc_info); +} + +type_init(ddc_register_devices); diff --git a/include/hw/i2c/i2c-ddc.h b/include/hw/i2c/i2c-ddc.h new file mode 100644 index 0000000..cb8e62d --- /dev/null +++ b/include/hw/i2c/i2c-ddc.h @@ -0,0 +1,38 @@ +/* A simple I2C slave for returning monitor EDID data via DDC. + * + * Copyright (c) 2011 Linaro Limited + * Written by Peter Maydell + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef I2C_DDC +#define I2C_DDC + +/* A simple I2C slave which just returns the contents of its EDID blob. */ + +struct I2CDDCState { + /*< private >*/ + I2CSlave i2c; + /*< public >*/ + bool firstbyte; + uint8_t reg; + uint8_t edid_blob[128]; +}; + +typedef struct I2CDDCState I2CDDCState; + +#define TYPE_I2CDDC "i2c-ddc" +#define I2CDDC(obj) OBJECT_CHECK(I2CDDCState, (obj), TYPE_I2CDDC) + +#endif /* !I2C_DDC */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 27/30] introduce xlnx-dpdma 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (25 preceding siblings ...) 2016-06-14 14:14 ` [Qemu-devel] [PULL 26/30] hw/i2c-ddc.c: Implement DDC I2C slave Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 28/30] introduce xlnx-dp Peter Maydell ` (2 subsequent siblings) 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This is the implementation of the DPDMA. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Message-id: 1465833014-21982-8-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/dma/Makefile.objs | 1 + hw/dma/xlnx_dpdma.c | 794 ++++++++++++++++++++++++++++++++++++++++++++ include/hw/dma/xlnx_dpdma.h | 85 +++++ 3 files changed, 880 insertions(+) create mode 100644 hw/dma/xlnx_dpdma.c create mode 100644 include/hw/dma/xlnx_dpdma.h diff --git a/hw/dma/Makefile.objs b/hw/dma/Makefile.objs index a1abbcf..8b0823e 100644 --- a/hw/dma/Makefile.objs +++ b/hw/dma/Makefile.objs @@ -8,6 +8,7 @@ common-obj-$(CONFIG_XILINX_AXI) += xilinx_axidma.o common-obj-$(CONFIG_ETRAXFS) += etraxfs_dma.o common-obj-$(CONFIG_STP2000) += sparc32_dma.o common-obj-$(CONFIG_SUN4M) += sun4m_iommu.o +obj-$(CONFIG_XLNX_ZYNQMP) += xlnx_dpdma.o obj-$(CONFIG_OMAP) += omap_dma.o soc_dma.o obj-$(CONFIG_PXA2XX) += pxa2xx_dma.o diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c new file mode 100644 index 0000000..97a5da7 --- /dev/null +++ b/hw/dma/xlnx_dpdma.c @@ -0,0 +1,794 @@ +/* + * xlnx_dpdma.c + * + * Copyright (C) 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/dma/xlnx_dpdma.h" + +#ifndef DEBUG_DPDMA +#define DEBUG_DPDMA 0 +#endif + +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_DPDMA) { \ + qemu_log("xlnx_dpdma: " fmt , ## __VA_ARGS__); \ + } \ +} while (0); + +/* + * Registers offset for DPDMA. + */ +#define DPDMA_ERR_CTRL (0x0000) +#define DPDMA_ISR (0x0004 >> 2) +#define DPDMA_IMR (0x0008 >> 2) +#define DPDMA_IEN (0x000C >> 2) +#define DPDMA_IDS (0x0010 >> 2) +#define DPDMA_EISR (0x0014 >> 2) +#define DPDMA_EIMR (0x0018 >> 2) +#define DPDMA_EIEN (0x001C >> 2) +#define DPDMA_EIDS (0x0020 >> 2) +#define DPDMA_CNTL (0x0100 >> 2) + +#define DPDMA_GBL (0x0104 >> 2) +#define DPDMA_GBL_TRG_CH(n) (1 << n) +#define DPDMA_GBL_RTRG_CH(n) (1 << 6 << n) + +#define DPDMA_ALC0_CNTL (0x0108 >> 2) +#define DPDMA_ALC0_STATUS (0x010C >> 2) +#define DPDMA_ALC0_MAX (0x0110 >> 2) +#define DPDMA_ALC0_MIN (0x0114 >> 2) +#define DPDMA_ALC0_ACC (0x0118 >> 2) +#define DPDMA_ALC0_ACC_TRAN (0x011C >> 2) +#define DPDMA_ALC1_CNTL (0x0120 >> 2) +#define DPDMA_ALC1_STATUS (0x0124 >> 2) +#define DPDMA_ALC1_MAX (0x0128 >> 2) +#define DPDMA_ALC1_MIN (0x012C >> 2) +#define DPDMA_ALC1_ACC (0x0130 >> 2) +#define DPDMA_ALC1_ACC_TRAN (0x0134 >> 2) + +#define DPDMA_DSCR_STRT_ADDRE_CH(n) ((0x0200 + n * 0x100) >> 2) +#define DPDMA_DSCR_STRT_ADDR_CH(n) ((0x0204 + n * 0x100) >> 2) +#define DPDMA_DSCR_NEXT_ADDRE_CH(n) ((0x0208 + n * 0x100) >> 2) +#define DPDMA_DSCR_NEXT_ADDR_CH(n) ((0x020C + n * 0x100) >> 2) +#define DPDMA_PYLD_CUR_ADDRE_CH(n) ((0x0210 + n * 0x100) >> 2) +#define DPDMA_PYLD_CUR_ADDR_CH(n) ((0x0214 + n * 0x100) >> 2) + +#define DPDMA_CNTL_CH(n) ((0x0218 + n * 0x100) >> 2) +#define DPDMA_CNTL_CH_EN (1) +#define DPDMA_CNTL_CH_PAUSED (1 << 1) + +#define DPDMA_STATUS_CH(n) ((0x021C + n * 0x100) >> 2) +#define DPDMA_STATUS_BURST_TYPE (1 << 4) +#define DPDMA_STATUS_MODE (1 << 5) +#define DPDMA_STATUS_EN_CRC (1 << 6) +#define DPDMA_STATUS_LAST_DSCR (1 << 7) +#define DPDMA_STATUS_LDSCR_FRAME (1 << 8) +#define DPDMA_STATUS_IGNR_DONE (1 << 9) +#define DPDMA_STATUS_DSCR_DONE (1 << 10) +#define DPDMA_STATUS_EN_DSCR_UP (1 << 11) +#define DPDMA_STATUS_EN_DSCR_INTR (1 << 12) +#define DPDMA_STATUS_PREAMBLE_OFF (13) + +#define DPDMA_VDO_CH(n) ((0x0220 + n * 0x100) >> 2) +#define DPDMA_PYLD_SZ_CH(n) ((0x0224 + n * 0x100) >> 2) +#define DPDMA_DSCR_ID_CH(n) ((0x0228 + n * 0x100) >> 2) + +/* + * Descriptor control field. + */ +#define CONTROL_PREAMBLE_VALUE 0xA5 + +#define DSCR_CTRL_PREAMBLE 0xFF +#define DSCR_CTRL_EN_DSCR_DONE_INTR (1 << 8) +#define DSCR_CTRL_EN_DSCR_UPDATE (1 << 9) +#define DSCR_CTRL_IGNORE_DONE (1 << 10) +#define DSCR_CTRL_AXI_BURST_TYPE (1 << 11) +#define DSCR_CTRL_AXCACHE (0x0F << 12) +#define DSCR_CTRL_AXPROT (0x2 << 16) +#define DSCR_CTRL_DESCRIPTOR_MODE (1 << 18) +#define DSCR_CTRL_LAST_DESCRIPTOR (1 << 19) +#define DSCR_CTRL_ENABLE_CRC (1 << 20) +#define DSCR_CTRL_LAST_DESCRIPTOR_OF_FRAME (1 << 21) + +/* + * Descriptor timestamp field. + */ +#define STATUS_DONE (1 << 31) + +#define DPDMA_FRAG_MAX_SZ (4096) + +enum DPDMABurstType { + DPDMA_INCR = 0, + DPDMA_FIXED = 1 +}; + +enum DPDMAMode { + DPDMA_CONTIGOUS = 0, + DPDMA_FRAGMENTED = 1 +}; + +struct DPDMADescriptor { + uint32_t control; + uint32_t descriptor_id; + /* transfer size in byte. */ + uint32_t xfer_size; + uint32_t line_size_stride; + uint32_t timestamp_lsb; + uint32_t timestamp_msb; + /* contains extension for both descriptor and source. */ + uint32_t address_extension; + uint32_t next_descriptor; + uint32_t source_address; + uint32_t address_extension_23; + uint32_t address_extension_45; + uint32_t source_address2; + uint32_t source_address3; + uint32_t source_address4; + uint32_t source_address5; + uint32_t crc; +}; + +typedef enum DPDMABurstType DPDMABurstType; +typedef enum DPDMAMode DPDMAMode; +typedef struct DPDMADescriptor DPDMADescriptor; + +static bool xlnx_dpdma_desc_is_last(DPDMADescriptor *desc) +{ + return ((desc->control & DSCR_CTRL_LAST_DESCRIPTOR) != 0); +} + +static bool xlnx_dpdma_desc_is_last_of_frame(DPDMADescriptor *desc) +{ + return ((desc->control & DSCR_CTRL_LAST_DESCRIPTOR_OF_FRAME) != 0); +} + +static uint64_t xlnx_dpdma_desc_get_source_address(DPDMADescriptor *desc, + uint8_t frag) +{ + uint64_t addr = 0; + assert(frag < 5); + + switch (frag) { + case 0: + addr = desc->source_address + + (extract32(desc->address_extension, 16, 12) << 20); + break; + case 1: + addr = desc->source_address2 + + (extract32(desc->address_extension_23, 0, 12) << 8); + break; + case 2: + addr = desc->source_address3 + + (extract32(desc->address_extension_23, 16, 12) << 20); + break; + case 3: + addr = desc->source_address4 + + (extract32(desc->address_extension_45, 0, 12) << 8); + break; + case 4: + addr = desc->source_address5 + + (extract32(desc->address_extension_45, 16, 12) << 20); + break; + default: + addr = 0; + break; + } + + return addr; +} + +static uint32_t xlnx_dpdma_desc_get_transfer_size(DPDMADescriptor *desc) +{ + return desc->xfer_size; +} + +static uint32_t xlnx_dpdma_desc_get_line_size(DPDMADescriptor *desc) +{ + return extract32(desc->line_size_stride, 0, 18); +} + +static uint32_t xlnx_dpdma_desc_get_line_stride(DPDMADescriptor *desc) +{ + return extract32(desc->line_size_stride, 18, 14) * 16; +} + +static inline bool xlnx_dpdma_desc_crc_enabled(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_ENABLE_CRC) != 0; +} + +static inline bool xlnx_dpdma_desc_check_crc(DPDMADescriptor *desc) +{ + uint32_t *p = (uint32_t *)desc; + uint32_t crc = 0; + uint8_t i; + + /* + * CRC is calculated on the whole descriptor except the last 32bits word + * using 32bits addition. + */ + for (i = 0; i < 15; i++) { + crc += p[i]; + } + + return crc == desc->crc; +} + +static inline bool xlnx_dpdma_desc_completion_interrupt(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_EN_DSCR_DONE_INTR) != 0; +} + +static inline bool xlnx_dpdma_desc_is_valid(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_PREAMBLE) == CONTROL_PREAMBLE_VALUE; +} + +static inline bool xlnx_dpdma_desc_is_contiguous(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_DESCRIPTOR_MODE) == 0; +} + +static inline bool xlnx_dpdma_desc_update_enabled(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_EN_DSCR_UPDATE) != 0; +} + +static inline void xlnx_dpdma_desc_set_done(DPDMADescriptor *desc) +{ + desc->timestamp_msb |= STATUS_DONE; +} + +static inline bool xlnx_dpdma_desc_is_already_done(DPDMADescriptor *desc) +{ + return (desc->timestamp_msb & STATUS_DONE) != 0; +} + +static inline bool xlnx_dpdma_desc_ignore_done_bit(DPDMADescriptor *desc) +{ + return (desc->control & DSCR_CTRL_IGNORE_DONE) != 0; +} + +static const VMStateDescription vmstate_xlnx_dpdma = { + .name = TYPE_XLNX_DPDMA, + .version_id = 1, + .fields = (VMStateField[]) { + VMSTATE_UINT32_ARRAY(registers, XlnxDPDMAState, + XLNX_DPDMA_REG_ARRAY_SIZE), + VMSTATE_BOOL_ARRAY(operation_finished, XlnxDPDMAState, 6), + VMSTATE_END_OF_LIST() + } +}; + +static void xlnx_dpdma_update_irq(XlnxDPDMAState *s) +{ + bool flags; + + flags = ((s->registers[DPDMA_ISR] & (~s->registers[DPDMA_IMR])) + || (s->registers[DPDMA_EISR] & (~s->registers[DPDMA_EIMR]))); + qemu_set_irq(s->irq, flags); +} + +static uint64_t xlnx_dpdma_descriptor_start_address(XlnxDPDMAState *s, + uint8_t channel) +{ + return (s->registers[DPDMA_DSCR_STRT_ADDRE_CH(channel)] << 16) + + s->registers[DPDMA_DSCR_STRT_ADDR_CH(channel)]; +} + +static uint64_t xlnx_dpdma_descriptor_next_address(XlnxDPDMAState *s, + uint8_t channel) +{ + return ((uint64_t)s->registers[DPDMA_DSCR_NEXT_ADDRE_CH(channel)] << 32) + + s->registers[DPDMA_DSCR_NEXT_ADDR_CH(channel)]; +} + +static inline void xlnx_dpdma_set_desc_next_address(XlnxDPDMAState *s, + uint8_t channel, + uint64_t addr) +{ + s->registers[DPDMA_DSCR_NEXT_ADDRE_CH(channel)] = extract64(addr, 32, 32); + s->registers[DPDMA_DSCR_NEXT_ADDR_CH(channel)] = extract64(addr, 0, 32); +} + +static bool xlnx_dpdma_is_channel_enabled(XlnxDPDMAState *s, + uint8_t channel) +{ + return (s->registers[DPDMA_CNTL_CH(channel)] & DPDMA_CNTL_CH_EN) != 0; +} + +static bool xlnx_dpdma_is_channel_paused(XlnxDPDMAState *s, + uint8_t channel) +{ + return (s->registers[DPDMA_CNTL_CH(channel)] & DPDMA_CNTL_CH_PAUSED) != 0; +} + +static inline bool xlnx_dpdma_is_channel_retriggered(XlnxDPDMAState *s, + uint8_t channel) +{ + /* Clear the retriggered bit after reading it. */ + bool channel_is_retriggered = s->registers[DPDMA_GBL] + & DPDMA_GBL_RTRG_CH(channel); + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_RTRG_CH(channel); + return channel_is_retriggered; +} + +static inline bool xlnx_dpdma_is_channel_triggered(XlnxDPDMAState *s, + uint8_t channel) +{ + return s->registers[DPDMA_GBL] & DPDMA_GBL_TRG_CH(channel); +} + +static void xlnx_dpdma_update_desc_info(XlnxDPDMAState *s, uint8_t channel, + DPDMADescriptor *desc) +{ + s->registers[DPDMA_DSCR_NEXT_ADDRE_CH(channel)] = + extract32(desc->address_extension, 0, 16); + s->registers[DPDMA_DSCR_NEXT_ADDR_CH(channel)] = desc->next_descriptor; + s->registers[DPDMA_PYLD_CUR_ADDRE_CH(channel)] = + extract32(desc->address_extension, 16, 16); + s->registers[DPDMA_PYLD_CUR_ADDR_CH(channel)] = desc->source_address; + s->registers[DPDMA_VDO_CH(channel)] = + extract32(desc->line_size_stride, 18, 14) + + (extract32(desc->line_size_stride, 0, 18) + << 14); + s->registers[DPDMA_PYLD_SZ_CH(channel)] = desc->xfer_size; + s->registers[DPDMA_DSCR_ID_CH(channel)] = desc->descriptor_id; + + /* Compute the status register with the descriptor information. */ + s->registers[DPDMA_STATUS_CH(channel)] = + extract32(desc->control, 0, 8) << 13; + if ((desc->control & DSCR_CTRL_EN_DSCR_DONE_INTR) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_EN_DSCR_INTR; + } + if ((desc->control & DSCR_CTRL_EN_DSCR_UPDATE) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_EN_DSCR_UP; + } + if ((desc->timestamp_msb & STATUS_DONE) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_DSCR_DONE; + } + if ((desc->control & DSCR_CTRL_IGNORE_DONE) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_IGNR_DONE; + } + if ((desc->control & DSCR_CTRL_LAST_DESCRIPTOR_OF_FRAME) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_LDSCR_FRAME; + } + if ((desc->control & DSCR_CTRL_LAST_DESCRIPTOR) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_LAST_DSCR; + } + if ((desc->control & DSCR_CTRL_ENABLE_CRC) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_EN_CRC; + } + if ((desc->control & DSCR_CTRL_DESCRIPTOR_MODE) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_MODE; + } + if ((desc->control & DSCR_CTRL_AXI_BURST_TYPE) != 0) { + s->registers[DPDMA_STATUS_CH(channel)] |= DPDMA_STATUS_BURST_TYPE; + } +} + +static void xlnx_dpdma_dump_descriptor(DPDMADescriptor *desc) +{ + if (DEBUG_DPDMA) { + qemu_log("DUMP DESCRIPTOR:\n"); + qemu_hexdump((char *)desc, stdout, "", sizeof(DPDMADescriptor)); + } +} + +static uint64_t xlnx_dpdma_read(void *opaque, hwaddr offset, + unsigned size) +{ + XlnxDPDMAState *s = XLNX_DPDMA(opaque); + + DPRINTF("read @%" HWADDR_PRIx "\n", offset); + offset = offset >> 2; + + switch (offset) { + /* + * Trying to read a write only register. + */ + case DPDMA_GBL: + return 0; + default: + assert(offset <= (0xFFC >> 2)); + return s->registers[offset]; + } + return 0; +} + +static void xlnx_dpdma_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + XlnxDPDMAState *s = XLNX_DPDMA(opaque); + + DPRINTF("write @%" HWADDR_PRIx " = %" PRIx64 "\n", offset, value); + offset = offset >> 2; + + switch (offset) { + case DPDMA_ISR: + s->registers[DPDMA_ISR] &= ~value; + xlnx_dpdma_update_irq(s); + break; + case DPDMA_IEN: + s->registers[DPDMA_IMR] &= ~value; + break; + case DPDMA_IDS: + s->registers[DPDMA_IMR] |= value; + break; + case DPDMA_EISR: + s->registers[DPDMA_EISR] &= ~value; + xlnx_dpdma_update_irq(s); + break; + case DPDMA_EIEN: + s->registers[DPDMA_EIMR] &= ~value; + break; + case DPDMA_EIDS: + s->registers[DPDMA_EIMR] |= value; + break; + case DPDMA_IMR: + case DPDMA_EIMR: + case DPDMA_DSCR_NEXT_ADDRE_CH(0): + case DPDMA_DSCR_NEXT_ADDRE_CH(1): + case DPDMA_DSCR_NEXT_ADDRE_CH(2): + case DPDMA_DSCR_NEXT_ADDRE_CH(3): + case DPDMA_DSCR_NEXT_ADDRE_CH(4): + case DPDMA_DSCR_NEXT_ADDRE_CH(5): + case DPDMA_DSCR_NEXT_ADDR_CH(0): + case DPDMA_DSCR_NEXT_ADDR_CH(1): + case DPDMA_DSCR_NEXT_ADDR_CH(2): + case DPDMA_DSCR_NEXT_ADDR_CH(3): + case DPDMA_DSCR_NEXT_ADDR_CH(4): + case DPDMA_DSCR_NEXT_ADDR_CH(5): + case DPDMA_PYLD_CUR_ADDRE_CH(0): + case DPDMA_PYLD_CUR_ADDRE_CH(1): + case DPDMA_PYLD_CUR_ADDRE_CH(2): + case DPDMA_PYLD_CUR_ADDRE_CH(3): + case DPDMA_PYLD_CUR_ADDRE_CH(4): + case DPDMA_PYLD_CUR_ADDRE_CH(5): + case DPDMA_PYLD_CUR_ADDR_CH(0): + case DPDMA_PYLD_CUR_ADDR_CH(1): + case DPDMA_PYLD_CUR_ADDR_CH(2): + case DPDMA_PYLD_CUR_ADDR_CH(3): + case DPDMA_PYLD_CUR_ADDR_CH(4): + case DPDMA_PYLD_CUR_ADDR_CH(5): + case DPDMA_STATUS_CH(0): + case DPDMA_STATUS_CH(1): + case DPDMA_STATUS_CH(2): + case DPDMA_STATUS_CH(3): + case DPDMA_STATUS_CH(4): + case DPDMA_STATUS_CH(5): + case DPDMA_VDO_CH(0): + case DPDMA_VDO_CH(1): + case DPDMA_VDO_CH(2): + case DPDMA_VDO_CH(3): + case DPDMA_VDO_CH(4): + case DPDMA_VDO_CH(5): + case DPDMA_PYLD_SZ_CH(0): + case DPDMA_PYLD_SZ_CH(1): + case DPDMA_PYLD_SZ_CH(2): + case DPDMA_PYLD_SZ_CH(3): + case DPDMA_PYLD_SZ_CH(4): + case DPDMA_PYLD_SZ_CH(5): + case DPDMA_DSCR_ID_CH(0): + case DPDMA_DSCR_ID_CH(1): + case DPDMA_DSCR_ID_CH(2): + case DPDMA_DSCR_ID_CH(3): + case DPDMA_DSCR_ID_CH(4): + case DPDMA_DSCR_ID_CH(5): + /* + * Trying to write to a read only register.. + */ + break; + case DPDMA_GBL: + /* + * This is a write only register so it's read as zero in the read + * callback. + * We store the value anyway so we can know if the channel is + * enabled. + */ + s->registers[offset] |= value & 0x00000FFF; + break; + case DPDMA_DSCR_STRT_ADDRE_CH(0): + case DPDMA_DSCR_STRT_ADDRE_CH(1): + case DPDMA_DSCR_STRT_ADDRE_CH(2): + case DPDMA_DSCR_STRT_ADDRE_CH(3): + case DPDMA_DSCR_STRT_ADDRE_CH(4): + case DPDMA_DSCR_STRT_ADDRE_CH(5): + value &= 0x0000FFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(0): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(0); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(1): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(1); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(2): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(2); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(3): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(3); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(4): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(4); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + case DPDMA_CNTL_CH(5): + s->registers[DPDMA_GBL] &= ~DPDMA_GBL_TRG_CH(5); + value &= 0x3FFFFFFF; + s->registers[offset] = value; + break; + default: + assert(offset <= (0xFFC >> 2)); + s->registers[offset] = value; + break; + } +} + +static const MemoryRegionOps dma_ops = { + .read = xlnx_dpdma_read, + .write = xlnx_dpdma_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + }, + .impl = { + .min_access_size = 4, + .max_access_size = 4, + }, +}; + +static void xlnx_dpdma_init(Object *obj) +{ + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + XlnxDPDMAState *s = XLNX_DPDMA(obj); + + memory_region_init_io(&s->iomem, obj, &dma_ops, s, + TYPE_XLNX_DPDMA, 0x1000); + sysbus_init_mmio(sbd, &s->iomem); + sysbus_init_irq(sbd, &s->irq); +} + +static void xlnx_dpdma_reset(DeviceState *dev) +{ + XlnxDPDMAState *s = XLNX_DPDMA(dev); + size_t i; + + memset(s->registers, 0, sizeof(s->registers)); + s->registers[DPDMA_IMR] = 0x07FFFFFF; + s->registers[DPDMA_EIMR] = 0xFFFFFFFF; + s->registers[DPDMA_ALC0_MIN] = 0x0000FFFF; + s->registers[DPDMA_ALC1_MIN] = 0x0000FFFF; + + for (i = 0; i < 6; i++) { + s->data[i] = NULL; + s->operation_finished[i] = true; + } +} + +static void xlnx_dpdma_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); + + dc->vmsd = &vmstate_xlnx_dpdma; + dc->reset = xlnx_dpdma_reset; +} + +static const TypeInfo xlnx_dpdma_info = { + .name = TYPE_XLNX_DPDMA, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(XlnxDPDMAState), + .instance_init = xlnx_dpdma_init, + .class_init = xlnx_dpdma_class_init, +}; + +static void xlnx_dpdma_register_types(void) +{ + type_register_static(&xlnx_dpdma_info); +} + +size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, uint8_t channel, + bool one_desc) +{ + uint64_t desc_addr; + uint64_t source_addr[6]; + DPDMADescriptor desc; + bool done = false; + size_t ptr = 0; + + assert(channel <= 5); + + DPRINTF("start dpdma channel 0x%" PRIX8 "\n", channel); + + if (!xlnx_dpdma_is_channel_triggered(s, channel)) { + DPRINTF("Channel isn't triggered..\n"); + return 0; + } + + if (!xlnx_dpdma_is_channel_enabled(s, channel)) { + DPRINTF("Channel isn't enabled..\n"); + return 0; + } + + if (xlnx_dpdma_is_channel_paused(s, channel)) { + DPRINTF("Channel is paused..\n"); + return 0; + } + + do { + if ((s->operation_finished[channel]) + || xlnx_dpdma_is_channel_retriggered(s, channel)) { + desc_addr = xlnx_dpdma_descriptor_start_address(s, channel); + s->operation_finished[channel] = false; + } else { + desc_addr = xlnx_dpdma_descriptor_next_address(s, channel); + } + + if (dma_memory_read(&address_space_memory, desc_addr, &desc, + sizeof(DPDMADescriptor))) { + s->registers[DPDMA_EISR] |= ((1 << 1) << channel); + xlnx_dpdma_update_irq(s); + s->operation_finished[channel] = true; + DPRINTF("Can't get the descriptor.\n"); + break; + } + + xlnx_dpdma_update_desc_info(s, channel, &desc); + +#ifdef DEBUG_DPDMA + xlnx_dpdma_dump_descriptor(&desc); +#endif + + DPRINTF("location of the descriptor: %" PRIx64 "\n", desc_addr); + if (!xlnx_dpdma_desc_is_valid(&desc)) { + s->registers[DPDMA_EISR] |= ((1 << 7) << channel); + xlnx_dpdma_update_irq(s); + s->operation_finished[channel] = true; + DPRINTF("Invalid descriptor..\n"); + break; + } + + if (xlnx_dpdma_desc_crc_enabled(&desc) + && !xlnx_dpdma_desc_check_crc(&desc)) { + s->registers[DPDMA_EISR] |= ((1 << 13) << channel); + xlnx_dpdma_update_irq(s); + s->operation_finished[channel] = true; + DPRINTF("Bad CRC for descriptor..\n"); + break; + } + + if (xlnx_dpdma_desc_is_already_done(&desc) + && !xlnx_dpdma_desc_ignore_done_bit(&desc)) { + /* We are trying to process an already processed descriptor. */ + s->registers[DPDMA_EISR] |= ((1 << 25) << channel); + xlnx_dpdma_update_irq(s); + s->operation_finished[channel] = true; + DPRINTF("Already processed descriptor..\n"); + break; + } + + done = xlnx_dpdma_desc_is_last(&desc) + || xlnx_dpdma_desc_is_last_of_frame(&desc); + + s->operation_finished[channel] = done; + if (s->data[channel]) { + int64_t transfer_len = xlnx_dpdma_desc_get_transfer_size(&desc); + uint32_t line_size = xlnx_dpdma_desc_get_line_size(&desc); + uint32_t line_stride = xlnx_dpdma_desc_get_line_stride(&desc); + if (xlnx_dpdma_desc_is_contiguous(&desc)) { + source_addr[0] = xlnx_dpdma_desc_get_source_address(&desc, 0); + while (transfer_len != 0) { + if (dma_memory_read(&address_space_memory, + source_addr[0], + &s->data[channel][ptr], + line_size)) { + s->registers[DPDMA_ISR] |= ((1 << 12) << channel); + xlnx_dpdma_update_irq(s); + DPRINTF("Can't get data.\n"); + break; + } + ptr += line_size; + transfer_len -= line_size; + source_addr[0] += line_stride; + } + } else { + DPRINTF("Source address:\n"); + int frag; + for (frag = 0; frag < 5; frag++) { + source_addr[frag] = + xlnx_dpdma_desc_get_source_address(&desc, frag); + DPRINTF("Fragment %u: %" PRIx64 "\n", frag + 1, + source_addr[frag]); + } + + frag = 0; + while ((transfer_len < 0) && (frag < 5)) { + size_t fragment_len = DPDMA_FRAG_MAX_SZ + - (source_addr[frag] % DPDMA_FRAG_MAX_SZ); + + if (dma_memory_read(&address_space_memory, + source_addr[frag], + &(s->data[channel][ptr]), + fragment_len)) { + s->registers[DPDMA_ISR] |= ((1 << 12) << channel); + xlnx_dpdma_update_irq(s); + DPRINTF("Can't get data.\n"); + break; + } + ptr += fragment_len; + transfer_len -= fragment_len; + frag += 1; + } + } + } + + if (xlnx_dpdma_desc_update_enabled(&desc)) { + /* The descriptor need to be updated when it's completed. */ + DPRINTF("update the descriptor with the done flag set.\n"); + xlnx_dpdma_desc_set_done(&desc); + dma_memory_write(&address_space_memory, desc_addr, &desc, + sizeof(DPDMADescriptor)); + } + + if (xlnx_dpdma_desc_completion_interrupt(&desc)) { + DPRINTF("completion interrupt enabled!\n"); + s->registers[DPDMA_ISR] |= (1 << channel); + xlnx_dpdma_update_irq(s); + } + + } while (!done && !one_desc); + + return ptr; +} + +void xlnx_dpdma_set_host_data_location(XlnxDPDMAState *s, uint8_t channel, + void *p) +{ + if (!s) { + qemu_log_mask(LOG_UNIMP, "DPDMA client not attached to valid DPDMA" + " instance\n"); + return; + } + + assert(channel <= 5); + s->data[channel] = p; +} + +void xlnx_dpdma_trigger_vsync_irq(XlnxDPDMAState *s) +{ + s->registers[DPDMA_ISR] |= (1 << 27); + xlnx_dpdma_update_irq(s); +} + +type_init(xlnx_dpdma_register_types) diff --git a/include/hw/dma/xlnx_dpdma.h b/include/hw/dma/xlnx_dpdma.h new file mode 100644 index 0000000..ae571a0 --- /dev/null +++ b/include/hw/dma/xlnx_dpdma.h @@ -0,0 +1,85 @@ +/* + * xlnx_dpdma.h + * + * Copyright (C) 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef XLNX_DPDMA_H +#define XLNX_DPDMA_H + +#include "hw/sysbus.h" +#include "ui/console.h" +#include "sysemu/dma.h" + +#define XLNX_DPDMA_REG_ARRAY_SIZE (0x1000 >> 2) + +struct XlnxDPDMAState { + /*< private >*/ + SysBusDevice parent_obj; + /*< public >*/ + MemoryRegion iomem; + uint32_t registers[XLNX_DPDMA_REG_ARRAY_SIZE]; + uint8_t *data[6]; + bool operation_finished[6]; + qemu_irq irq; +}; + +typedef struct XlnxDPDMAState XlnxDPDMAState; + +#define TYPE_XLNX_DPDMA "xlnx.dpdma" +#define XLNX_DPDMA(obj) OBJECT_CHECK(XlnxDPDMAState, (obj), TYPE_XLNX_DPDMA) + +/* + * xlnx_dpdma_start_operation: Start the operation on the specified channel. The + * DPDMA gets the current descriptor and retrieves + * data to the buffer specified by + * dpdma_set_host_data_location(). + * + * Returns The number of bytes transfered by the DPDMA or 0 if an error occured. + * + * @s The DPDMA state. + * @channel The channel to start. + */ +size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, uint8_t channel, + bool one_desc); + +/* + * xlnx_dpdma_set_host_data_location: Set the location in the host memory where + * to store the data out from the dma + * channel. + * + * @s The DPDMA state. + * @channel The channel associated to the pointer. + * @p The buffer where to store the data. + */ +/* XXX: add a maximum size arg and send an interrupt in case of overflow. */ +void xlnx_dpdma_set_host_data_location(XlnxDPDMAState *s, uint8_t channel, + void *p); + +/* + * xlnx_dpdma_trigger_vsync_irq: Trigger a VSYNC IRQ when the display is + * updated. + * + * @s The DPDMA state. + */ +void xlnx_dpdma_trigger_vsync_irq(XlnxDPDMAState *s); + +#endif /* !XLNX_DPDMA_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 28/30] introduce xlnx-dp 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (26 preceding siblings ...) 2016-06-14 14:14 ` [Qemu-devel] [PULL 27/30] introduce xlnx-dpdma Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 2022-04-07 10:32 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 29/30] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 30/30] target-arm: Don't permit ARMv8-only Neon insns on ARMv7 Peter Maydell 29 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This is the implementation of the DisplayPort. It has an aux-bus to access dpcd and edid. Graphic plane is connected to the channel 3. Video plane is connected to the channel 0. Audio stream are connected to the channels 4 and 5. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Message-id: 1465833014-21982-9-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/display/Makefile.objs | 1 + hw/display/xlnx_dp.c | 1336 ++++++++++++++++++++++++++++++++++++++++++ include/hw/display/xlnx_dp.h | 109 ++++ 3 files changed, 1446 insertions(+) create mode 100644 hw/display/xlnx_dp.c create mode 100644 include/hw/display/xlnx_dp.h diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index ddf3275..063889b 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -44,3 +44,4 @@ virtio-gpu.o-libs += $(VIRGL_LIBS) virtio-gpu-3d.o-cflags := $(VIRGL_CFLAGS) virtio-gpu-3d.o-libs += $(VIRGL_LIBS) obj-$(CONFIG_DPCD) += dpcd.o +obj-$(CONFIG_XLNX_ZYNQMP) += xlnx_dp.o diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c new file mode 100644 index 0000000..552955f --- /dev/null +++ b/hw/display/xlnx_dp.c @@ -0,0 +1,1336 @@ +/* + * xlnx_dp.c + * + * Copyright (C) 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option)any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "hw/display/xlnx_dp.h" + +#ifndef DEBUG_DP +#define DEBUG_DP 0 +#endif + +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_DP) { \ + qemu_log("xlnx_dp: " fmt , ## __VA_ARGS__); \ + } \ +} while (0); + +/* + * Register offset for DP. + */ +#define DP_LINK_BW_SET (0x0000 >> 2) +#define DP_LANE_COUNT_SET (0x0004 >> 2) +#define DP_ENHANCED_FRAME_EN (0x0008 >> 2) +#define DP_TRAINING_PATTERN_SET (0x000C >> 2) +#define DP_LINK_QUAL_PATTERN_SET (0x0010 >> 2) +#define DP_SCRAMBLING_DISABLE (0x0014 >> 2) +#define DP_DOWNSPREAD_CTRL (0x0018 >> 2) +#define DP_SOFTWARE_RESET (0x001C >> 2) +#define DP_TRANSMITTER_ENABLE (0x0080 >> 2) +#define DP_MAIN_STREAM_ENABLE (0x0084 >> 2) +#define DP_FORCE_SCRAMBLER_RESET (0x00C0 >> 2) +#define DP_VERSION_REGISTER (0x00F8 >> 2) +#define DP_CORE_ID (0x00FC >> 2) + +#define DP_AUX_COMMAND_REGISTER (0x0100 >> 2) +#define AUX_ADDR_ONLY_MASK (0x1000) +#define AUX_COMMAND_MASK (0x0F00) +#define AUX_COMMAND_SHIFT (8) +#define AUX_COMMAND_NBYTES (0x000F) + +#define DP_AUX_WRITE_FIFO (0x0104 >> 2) +#define DP_AUX_ADDRESS (0x0108 >> 2) +#define DP_AUX_CLOCK_DIVIDER (0x010C >> 2) +#define DP_TX_USER_FIFO_OVERFLOW (0x0110 >> 2) +#define DP_INTERRUPT_SIGNAL_STATE (0x0130 >> 2) +#define DP_AUX_REPLY_DATA (0x0134 >> 2) +#define DP_AUX_REPLY_CODE (0x0138 >> 2) +#define DP_AUX_REPLY_COUNT (0x013C >> 2) +#define DP_REPLY_DATA_COUNT (0x0148 >> 2) +#define DP_REPLY_STATUS (0x014C >> 2) +#define DP_HPD_DURATION (0x0150 >> 2) +#define DP_MAIN_STREAM_HTOTAL (0x0180 >> 2) +#define DP_MAIN_STREAM_VTOTAL (0x0184 >> 2) +#define DP_MAIN_STREAM_POLARITY (0x0188 >> 2) +#define DP_MAIN_STREAM_HSWIDTH (0x018C >> 2) +#define DP_MAIN_STREAM_VSWIDTH (0x0190 >> 2) +#define DP_MAIN_STREAM_HRES (0x0194 >> 2) +#define DP_MAIN_STREAM_VRES (0x0198 >> 2) +#define DP_MAIN_STREAM_HSTART (0x019C >> 2) +#define DP_MAIN_STREAM_VSTART (0x01A0 >> 2) +#define DP_MAIN_STREAM_MISC0 (0x01A4 >> 2) +#define DP_MAIN_STREAM_MISC1 (0x01A8 >> 2) +#define DP_MAIN_STREAM_M_VID (0x01AC >> 2) +#define DP_MSA_TRANSFER_UNIT_SIZE (0x01B0 >> 2) +#define DP_MAIN_STREAM_N_VID (0x01B4 >> 2) +#define DP_USER_DATA_COUNT_PER_LANE (0x01BC >> 2) +#define DP_MIN_BYTES_PER_TU (0x01C4 >> 2) +#define DP_FRAC_BYTES_PER_TU (0x01C8 >> 2) +#define DP_INIT_WAIT (0x01CC >> 2) +#define DP_PHY_RESET (0x0200 >> 2) +#define DP_PHY_VOLTAGE_DIFF_LANE_0 (0x0220 >> 2) +#define DP_PHY_VOLTAGE_DIFF_LANE_1 (0x0224 >> 2) +#define DP_TRANSMIT_PRBS7 (0x0230 >> 2) +#define DP_PHY_CLOCK_SELECT (0x0234 >> 2) +#define DP_TX_PHY_POWER_DOWN (0x0238 >> 2) +#define DP_PHY_PRECURSOR_LANE_0 (0x023C >> 2) +#define DP_PHY_PRECURSOR_LANE_1 (0x0240 >> 2) +#define DP_PHY_POSTCURSOR_LANE_0 (0x024C >> 2) +#define DP_PHY_POSTCURSOR_LANE_1 (0x0250 >> 2) +#define DP_PHY_STATUS (0x0280 >> 2) + +#define DP_TX_AUDIO_CONTROL (0x0300 >> 2) +#define DP_TX_AUD_CTRL (1) + +#define DP_TX_AUDIO_CHANNELS (0x0304 >> 2) +#define DP_TX_AUDIO_INFO_DATA(n) ((0x0308 + 4 * n) >> 2) +#define DP_TX_M_AUD (0x0328 >> 2) +#define DP_TX_N_AUD (0x032C >> 2) +#define DP_TX_AUDIO_EXT_DATA(n) ((0x0330 + 4 * n) >> 2) +#define DP_INT_STATUS (0x03A0 >> 2) +#define DP_INT_MASK (0x03A4 >> 2) +#define DP_INT_EN (0x03A8 >> 2) +#define DP_INT_DS (0x03AC >> 2) + +/* + * Registers offset for Audio Video Buffer configuration. + */ +#define V_BLEND_OFFSET (0xA000) +#define V_BLEND_BG_CLR_0 (0x0000 >> 2) +#define V_BLEND_BG_CLR_1 (0x0004 >> 2) +#define V_BLEND_BG_CLR_2 (0x0008 >> 2) +#define V_BLEND_SET_GLOBAL_ALPHA_REG (0x000C >> 2) +#define V_BLEND_OUTPUT_VID_FORMAT (0x0014 >> 2) +#define V_BLEND_LAYER0_CONTROL (0x0018 >> 2) +#define V_BLEND_LAYER1_CONTROL (0x001C >> 2) + +#define V_BLEND_RGB2YCBCR_COEFF(n) ((0x0020 + 4 * n) >> 2) +#define V_BLEND_IN1CSC_COEFF(n) ((0x0044 + 4 * n) >> 2) + +#define V_BLEND_LUMA_IN1CSC_OFFSET (0x0068 >> 2) +#define V_BLEND_CR_IN1CSC_OFFSET (0x006C >> 2) +#define V_BLEND_CB_IN1CSC_OFFSET (0x0070 >> 2) +#define V_BLEND_LUMA_OUTCSC_OFFSET (0x0074 >> 2) +#define V_BLEND_CR_OUTCSC_OFFSET (0x0078 >> 2) +#define V_BLEND_CB_OUTCSC_OFFSET (0x007C >> 2) + +#define V_BLEND_IN2CSC_COEFF(n) ((0x0080 + 4 * n) >> 2) + +#define V_BLEND_LUMA_IN2CSC_OFFSET (0x00A4 >> 2) +#define V_BLEND_CR_IN2CSC_OFFSET (0x00A8 >> 2) +#define V_BLEND_CB_IN2CSC_OFFSET (0x00AC >> 2) +#define V_BLEND_CHROMA_KEY_ENABLE (0x01D0 >> 2) +#define V_BLEND_CHROMA_KEY_COMP1 (0x01D4 >> 2) +#define V_BLEND_CHROMA_KEY_COMP2 (0x01D8 >> 2) +#define V_BLEND_CHROMA_KEY_COMP3 (0x01DC >> 2) + +/* + * Registers offset for Audio Video Buffer configuration. + */ +#define AV_BUF_MANAGER_OFFSET (0xB000) +#define AV_BUF_FORMAT (0x0000 >> 2) +#define AV_BUF_NON_LIVE_LATENCY (0x0008 >> 2) +#define AV_CHBUF0 (0x0010 >> 2) +#define AV_CHBUF1 (0x0014 >> 2) +#define AV_CHBUF2 (0x0018 >> 2) +#define AV_CHBUF3 (0x001C >> 2) +#define AV_CHBUF4 (0x0020 >> 2) +#define AV_CHBUF5 (0x0024 >> 2) +#define AV_BUF_STC_CONTROL (0x002C >> 2) +#define AV_BUF_STC_INIT_VALUE0 (0x0030 >> 2) +#define AV_BUF_STC_INIT_VALUE1 (0x0034 >> 2) +#define AV_BUF_STC_ADJ (0x0038 >> 2) +#define AV_BUF_STC_VIDEO_VSYNC_TS_REG0 (0x003C >> 2) +#define AV_BUF_STC_VIDEO_VSYNC_TS_REG1 (0x0040 >> 2) +#define AV_BUF_STC_EXT_VSYNC_TS_REG0 (0x0044 >> 2) +#define AV_BUF_STC_EXT_VSYNC_TS_REG1 (0x0048 >> 2) +#define AV_BUF_STC_CUSTOM_EVENT_TS_REG0 (0x004C >> 2) +#define AV_BUF_STC_CUSTOM_EVENT_TS_REG1 (0x0050 >> 2) +#define AV_BUF_STC_CUSTOM_EVENT2_TS_REG0 (0x0054 >> 2) +#define AV_BUF_STC_CUSTOM_EVENT2_TS_REG1 (0x0058 >> 2) +#define AV_BUF_STC_SNAPSHOT0 (0x0060 >> 2) +#define AV_BUF_STC_SNAPSHOT1 (0x0064 >> 2) +#define AV_BUF_OUTPUT_AUDIO_VIDEO_SELECT (0x0070 >> 2) +#define AV_BUF_HCOUNT_VCOUNT_INT0 (0x0074 >> 2) +#define AV_BUF_HCOUNT_VCOUNT_INT1 (0x0078 >> 2) +#define AV_BUF_DITHER_CONFIG (0x007C >> 2) +#define AV_BUF_DITHER_CONFIG_MAX (0x008C >> 2) +#define AV_BUF_DITHER_CONFIG_MIN (0x0090 >> 2) +#define AV_BUF_PATTERN_GEN_SELECT (0x0100 >> 2) +#define AV_BUF_AUD_VID_CLK_SOURCE (0x0120 >> 2) +#define AV_BUF_SRST_REG (0x0124 >> 2) +#define AV_BUF_AUDIO_RDY_INTERVAL (0x0128 >> 2) +#define AV_BUF_AUDIO_CH_CONFIG (0x012C >> 2) + +#define AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(n)((0x0200 + 4 * n) >> 2) + +#define AV_BUF_VIDEO_COMP_SCALE_FACTOR(n) ((0x020C + 4 * n) >> 2) + +#define AV_BUF_LIVE_VIDEO_COMP_SF(n) ((0x0218 + 4 * n) >> 2) + +#define AV_BUF_LIVE_VID_CONFIG (0x0224 >> 2) + +#define AV_BUF_LIVE_GFX_COMP_SF(n) ((0x0228 + 4 * n) >> 2) + +#define AV_BUF_LIVE_GFX_CONFIG (0x0234 >> 2) + +#define AUDIO_MIXER_REGISTER_OFFSET (0xC000) +#define AUDIO_MIXER_VOLUME_CONTROL (0x0000 >> 2) +#define AUDIO_MIXER_META_DATA (0x0004 >> 2) +#define AUD_CH_STATUS_REG(n) ((0x0008 + 4 * n) >> 2) +#define AUD_CH_A_DATA_REG(n) ((0x0020 + 4 * n) >> 2) +#define AUD_CH_B_DATA_REG(n) ((0x0038 + 4 * n) >> 2) + +#define DP_AUDIO_DMA_CHANNEL(n) (4 + n) +#define DP_GRAPHIC_DMA_CHANNEL (3) +#define DP_VIDEO_DMA_CHANNEL (0) + +enum DPGraphicFmt { + DP_GRAPHIC_RGBA8888 = 0 << 8, + DP_GRAPHIC_ABGR8888 = 1 << 8, + DP_GRAPHIC_RGB888 = 2 << 8, + DP_GRAPHIC_BGR888 = 3 << 8, + DP_GRAPHIC_RGBA5551 = 4 << 8, + DP_GRAPHIC_RGBA4444 = 5 << 8, + DP_GRAPHIC_RGB565 = 6 << 8, + DP_GRAPHIC_8BPP = 7 << 8, + DP_GRAPHIC_4BPP = 8 << 8, + DP_GRAPHIC_2BPP = 9 << 8, + DP_GRAPHIC_1BPP = 10 << 8, + DP_GRAPHIC_MASK = 0xF << 8 +}; + +enum DPVideoFmt { + DP_NL_VID_CB_Y0_CR_Y1 = 0, + DP_NL_VID_CR_Y0_CB_Y1 = 1, + DP_NL_VID_Y0_CR_Y1_CB = 2, + DP_NL_VID_Y0_CB_Y1_CR = 3, + DP_NL_VID_YV16 = 4, + DP_NL_VID_YV24 = 5, + DP_NL_VID_YV16CL = 6, + DP_NL_VID_MONO = 7, + DP_NL_VID_YV16CL2 = 8, + DP_NL_VID_YUV444 = 9, + DP_NL_VID_RGB888 = 10, + DP_NL_VID_RGBA8880 = 11, + DP_NL_VID_RGB888_10BPC = 12, + DP_NL_VID_YUV444_10BPC = 13, + DP_NL_VID_YV16CL2_10BPC = 14, + DP_NL_VID_YV16CL_10BPC = 15, + DP_NL_VID_YV16_10BPC = 16, + DP_NL_VID_YV24_10BPC = 17, + DP_NL_VID_Y_ONLY_10BPC = 18, + DP_NL_VID_YV16_420 = 19, + DP_NL_VID_YV16CL_420 = 20, + DP_NL_VID_YV16CL2_420 = 21, + DP_NL_VID_YV16_420_10BPC = 22, + DP_NL_VID_YV16CL_420_10BPC = 23, + DP_NL_VID_YV16CL2_420_10BPC = 24, + DP_NL_VID_FMT_MASK = 0x1F +}; + +typedef enum DPGraphicFmt DPGraphicFmt; +typedef enum DPVideoFmt DPVideoFmt; + +static const VMStateDescription vmstate_dp = { + .name = TYPE_XLNX_DP, + .version_id = 1, + .fields = (VMStateField[]){ + VMSTATE_UINT32_ARRAY(core_registers, XlnxDPState, + DP_CORE_REG_ARRAY_SIZE), + VMSTATE_UINT32_ARRAY(avbufm_registers, XlnxDPState, + DP_AVBUF_REG_ARRAY_SIZE), + VMSTATE_UINT32_ARRAY(vblend_registers, XlnxDPState, + DP_VBLEND_REG_ARRAY_SIZE), + VMSTATE_UINT32_ARRAY(audio_registers, XlnxDPState, + DP_AUDIO_REG_ARRAY_SIZE), + VMSTATE_END_OF_LIST() + } +}; + +static void xlnx_dp_update_irq(XlnxDPState *s); + +static uint64_t xlnx_dp_audio_read(void *opaque, hwaddr offset, unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + offset = offset >> 2; + return s->audio_registers[offset]; +} + +static void xlnx_dp_audio_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + offset = offset >> 2; + + switch (offset) { + case AUDIO_MIXER_META_DATA: + s->audio_registers[offset] = value & 0x00000001; + break; + default: + s->audio_registers[offset] = value; + break; + } +} + +static const MemoryRegionOps audio_ops = { + .read = xlnx_dp_audio_read, + .write = xlnx_dp_audio_write, + .endianness = DEVICE_NATIVE_ENDIAN, +}; + +static inline uint32_t xlnx_dp_audio_get_volume(XlnxDPState *s, + uint8_t channel) +{ + switch (channel) { + case 0: + return extract32(s->audio_registers[AUDIO_MIXER_VOLUME_CONTROL], 0, 16); + case 1: + return extract32(s->audio_registers[AUDIO_MIXER_VOLUME_CONTROL], 16, + 16); + default: + return 0; + } +} + +static inline void xlnx_dp_audio_activate(XlnxDPState *s) +{ + bool activated = ((s->core_registers[DP_TX_AUDIO_CONTROL] + & DP_TX_AUD_CTRL) != 0); + AUD_set_active_out(s->amixer_output_stream, activated); + xlnx_dpdma_set_host_data_location(s->dpdma, DP_AUDIO_DMA_CHANNEL(0), + &s->audio_buffer_0); + xlnx_dpdma_set_host_data_location(s->dpdma, DP_AUDIO_DMA_CHANNEL(1), + &s->audio_buffer_1); +} + +static inline void xlnx_dp_audio_mix_buffer(XlnxDPState *s) +{ + /* + * Audio packets are signed and have this shape: + * | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | + * | R3 | L3 | R2 | L2 | R1 | L1 | R0 | L0 | + * + * Output audio is 16bits saturated. + */ + int i; + + if ((s->audio_data_available[0]) && (xlnx_dp_audio_get_volume(s, 0))) { + for (i = 0; i < s->audio_data_available[0] / 2; i++) { + s->temp_buffer[i] = (int64_t)(s->audio_buffer_0[i]) + * xlnx_dp_audio_get_volume(s, 0) / 8192; + } + s->byte_left = s->audio_data_available[0]; + } else { + memset(s->temp_buffer, 0, s->audio_data_available[1] / 2); + } + + if ((s->audio_data_available[1]) && (xlnx_dp_audio_get_volume(s, 1))) { + if ((s->audio_data_available[0] == 0) + || (s->audio_data_available[1] == s->audio_data_available[0])) { + for (i = 0; i < s->audio_data_available[1] / 2; i++) { + s->temp_buffer[i] += (int64_t)(s->audio_buffer_1[i]) + * xlnx_dp_audio_get_volume(s, 1) / 8192; + } + s->byte_left = s->audio_data_available[1]; + } + } + + for (i = 0; i < s->byte_left / 2; i++) { + s->out_buffer[i] = MAX(-32767, MIN(s->temp_buffer[i], 32767)); + } + + s->data_ptr = 0; +} + +static void xlnx_dp_audio_callback(void *opaque, int avail) +{ + /* + * Get some data from the DPDMA and compute these datas. + * Then wait for QEMU's audio subsystem to call this callback. + */ + XlnxDPState *s = XLNX_DP(opaque); + size_t written = 0; + + /* If there are already some data don't get more data. */ + if (s->byte_left == 0) { + s->audio_data_available[0] = xlnx_dpdma_start_operation(s->dpdma, 4, + true); + s->audio_data_available[1] = xlnx_dpdma_start_operation(s->dpdma, 5, + true); + xlnx_dp_audio_mix_buffer(s); + } + + /* Send the buffer through the audio. */ + if (s->byte_left <= MAX_QEMU_BUFFER_SIZE) { + if (s->byte_left != 0) { + written = AUD_write(s->amixer_output_stream, + &s->out_buffer[s->data_ptr], s->byte_left); + } else { + /* + * There is nothing to play.. We don't have any data! Fill the + * buffer with zero's and send it. + */ + written = 0; + memset(s->out_buffer, 0, 1024); + AUD_write(s->amixer_output_stream, s->out_buffer, 1024); + } + } else { + written = AUD_write(s->amixer_output_stream, + &s->out_buffer[s->data_ptr], MAX_QEMU_BUFFER_SIZE); + } + s->byte_left -= written; + s->data_ptr += written; +} + +/* + * AUX channel related function. + */ +static void xlnx_dp_aux_clear_rx_fifo(XlnxDPState *s) +{ + fifo8_reset(&s->rx_fifo); +} + +static void xlnx_dp_aux_push_rx_fifo(XlnxDPState *s, uint8_t *buf, size_t len) +{ + DPRINTF("Push %u data in rx_fifo\n", (unsigned)len); + fifo8_push_all(&s->rx_fifo, buf, len); +} + +static uint8_t xlnx_dp_aux_pop_rx_fifo(XlnxDPState *s) +{ + uint8_t ret; + + if (fifo8_is_empty(&s->rx_fifo)) { + DPRINTF("rx_fifo underflow..\n"); + abort(); + } + ret = fifo8_pop(&s->rx_fifo); + DPRINTF("pop 0x%" PRIX8 " from rx_fifo.\n", ret); + return ret; +} + +static void xlnx_dp_aux_clear_tx_fifo(XlnxDPState *s) +{ + fifo8_reset(&s->tx_fifo); +} + +static void xlnx_dp_aux_push_tx_fifo(XlnxDPState *s, uint8_t val, size_t len) +{ + DPRINTF("Push %u data in tx_fifo\n", (unsigned)len); + fifo8_push_all(&s->tx_fifo, &val, len); +} + +static uint8_t xlnx_dp_aux_pop_tx_fifo(XlnxDPState *s) +{ + uint8_t ret; + + if (fifo8_is_empty(&s->tx_fifo)) { + DPRINTF("tx_fifo underflow..\n"); + abort(); + } + ret = fifo8_pop(&s->tx_fifo); + DPRINTF("pop 0x%2.2X from tx_fifo.\n", ret); + return ret; +} + +static uint32_t xlnx_dp_aux_get_address(XlnxDPState *s) +{ + return s->core_registers[DP_AUX_ADDRESS]; +} + +/* + * Get command from the register. + */ +static void xlnx_dp_aux_set_command(XlnxDPState *s, uint32_t value) +{ + bool address_only = (value & AUX_ADDR_ONLY_MASK) != 0; + AUXCommand cmd = (value & AUX_COMMAND_MASK) >> AUX_COMMAND_SHIFT; + uint8_t nbytes = (value & AUX_COMMAND_NBYTES) + 1; + uint8_t buf[16]; + int i; + + /* + * When an address_only command is executed nothing happen to the fifo, so + * just make nbytes = 0. + */ + if (address_only) { + nbytes = 0; + } + + switch (cmd) { + case READ_AUX: + case READ_I2C: + case READ_I2C_MOT: + s->core_registers[DP_AUX_REPLY_CODE] = aux_request(s->aux_bus, cmd, + xlnx_dp_aux_get_address(s), + nbytes, buf); + s->core_registers[DP_REPLY_DATA_COUNT] = nbytes; + + if (s->core_registers[DP_AUX_REPLY_CODE] == AUX_I2C_ACK) { + xlnx_dp_aux_push_rx_fifo(s, buf, nbytes); + } + break; + case WRITE_AUX: + case WRITE_I2C: + case WRITE_I2C_MOT: + for (i = 0; i < nbytes; i++) { + buf[i] = xlnx_dp_aux_pop_tx_fifo(s); + } + s->core_registers[DP_AUX_REPLY_CODE] = aux_request(s->aux_bus, cmd, + xlnx_dp_aux_get_address(s), + nbytes, buf); + xlnx_dp_aux_clear_tx_fifo(s); + break; + case WRITE_I2C_STATUS: + qemu_log_mask(LOG_UNIMP, "xlnx_dp: Write i2c status not implemented\n"); + break; + default: + abort(); + } + + s->core_registers[DP_INTERRUPT_SIGNAL_STATE] |= 0x04; +} + +static void xlnx_dp_set_dpdma(Object *obj, const char *name, Object *val, + Error **errp) +{ + XlnxDPState *s = XLNX_DP(obj); + if (s->console) { + DisplaySurface *surface = qemu_console_surface(s->console); + XlnxDPDMAState *dma = XLNX_DPDMA(val); + xlnx_dpdma_set_host_data_location(dma, DP_GRAPHIC_DMA_CHANNEL, + surface_data(surface)); + } +} + +static inline uint8_t xlnx_dp_global_alpha_value(XlnxDPState *s) +{ + return (s->vblend_registers[V_BLEND_SET_GLOBAL_ALPHA_REG] & 0x1FE) >> 1; +} + +static inline bool xlnx_dp_global_alpha_enabled(XlnxDPState *s) +{ + /* + * If the alpha is totally opaque (255) we consider the alpha is disabled to + * reduce CPU consumption. + */ + return ((xlnx_dp_global_alpha_value(s) != 0xFF) && + ((s->vblend_registers[V_BLEND_SET_GLOBAL_ALPHA_REG] & 0x01) != 0)); +} + +static void xlnx_dp_recreate_surface(XlnxDPState *s) +{ + /* + * Two possibilities, if blending is enabled the console displays + * bout_plane, if not g_plane is displayed. + */ + uint16_t width = s->core_registers[DP_MAIN_STREAM_HRES]; + uint16_t height = s->core_registers[DP_MAIN_STREAM_VRES]; + DisplaySurface *current_console_surface = qemu_console_surface(s->console); + + if ((width != 0) && (height != 0)) { + /* + * As dpy_gfx_replace_surface calls qemu_free_displaysurface on the + * surface we need to be carefull and don't free the surface associated + * to the console or double free will happen. + */ + if (s->bout_plane.surface != current_console_surface) { + qemu_free_displaysurface(s->bout_plane.surface); + } + if (s->v_plane.surface != current_console_surface) { + qemu_free_displaysurface(s->v_plane.surface); + } + if (s->g_plane.surface != current_console_surface) { + qemu_free_displaysurface(s->g_plane.surface); + } + + s->g_plane.surface + = qemu_create_displaysurface_from(width, height, + s->g_plane.format, 0, NULL); + s->v_plane.surface + = qemu_create_displaysurface_from(width, height, + s->v_plane.format, 0, NULL); + if (xlnx_dp_global_alpha_enabled(s)) { + s->bout_plane.surface = + qemu_create_displaysurface_from(width, + height, + s->g_plane.format, + 0, NULL); + dpy_gfx_replace_surface(s->console, s->bout_plane.surface); + } else { + s->bout_plane.surface = NULL; + dpy_gfx_replace_surface(s->console, s->g_plane.surface); + } + + xlnx_dpdma_set_host_data_location(s->dpdma, DP_GRAPHIC_DMA_CHANNEL, + surface_data(s->g_plane.surface)); + xlnx_dpdma_set_host_data_location(s->dpdma, DP_VIDEO_DMA_CHANNEL, + surface_data(s->v_plane.surface)); + } +} + +/* + * Change the graphic format of the surface. + */ +static void xlnx_dp_change_graphic_fmt(XlnxDPState *s) +{ + switch (s->avbufm_registers[AV_BUF_FORMAT] & DP_GRAPHIC_MASK) { + case DP_GRAPHIC_RGBA8888: + s->g_plane.format = PIXMAN_r8g8b8a8; + break; + case DP_GRAPHIC_ABGR8888: + s->g_plane.format = PIXMAN_a8b8g8r8; + break; + case DP_GRAPHIC_RGB565: + s->g_plane.format = PIXMAN_r5g6b5; + break; + case DP_GRAPHIC_RGB888: + s->g_plane.format = PIXMAN_r8g8b8; + break; + case DP_GRAPHIC_BGR888: + s->g_plane.format = PIXMAN_b8g8r8; + break; + default: + DPRINTF("error: unsupported graphic format %u.\n", + s->avbufm_registers[AV_BUF_FORMAT] & DP_GRAPHIC_MASK); + abort(); + } + + switch (s->avbufm_registers[AV_BUF_FORMAT] & DP_NL_VID_FMT_MASK) { + case 0: + s->v_plane.format = PIXMAN_x8b8g8r8; + break; + case DP_NL_VID_RGBA8880: + s->v_plane.format = PIXMAN_x8b8g8r8; + break; + default: + DPRINTF("error: unsupported video format %u.\n", + s->avbufm_registers[AV_BUF_FORMAT] & DP_NL_VID_FMT_MASK); + abort(); + } + + xlnx_dp_recreate_surface(s); +} + +static void xlnx_dp_update_irq(XlnxDPState *s) +{ + uint32_t flags; + + flags = s->core_registers[DP_INT_STATUS] & ~s->core_registers[DP_INT_MASK]; + DPRINTF("update IRQ value = %" PRIx32 "\n", flags); + qemu_set_irq(s->irq, flags != 0); +} + +static uint64_t xlnx_dp_read(void *opaque, hwaddr offset, unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + uint64_t ret = 0; + + offset = offset >> 2; + + switch (offset) { + case DP_TX_USER_FIFO_OVERFLOW: + /* This register is cleared after a read */ + ret = s->core_registers[DP_TX_USER_FIFO_OVERFLOW]; + s->core_registers[DP_TX_USER_FIFO_OVERFLOW] = 0; + break; + case DP_AUX_REPLY_DATA: + ret = xlnx_dp_aux_pop_rx_fifo(s); + break; + case DP_INTERRUPT_SIGNAL_STATE: + /* + * XXX: Not sure it is the right thing to do actually. + * The register is not written by the device driver so it's stuck + * to 0x04. + */ + ret = s->core_registers[DP_INTERRUPT_SIGNAL_STATE]; + s->core_registers[DP_INTERRUPT_SIGNAL_STATE] &= ~0x04; + break; + case DP_AUX_WRITE_FIFO: + case DP_TX_AUDIO_INFO_DATA(0): + case DP_TX_AUDIO_INFO_DATA(1): + case DP_TX_AUDIO_INFO_DATA(2): + case DP_TX_AUDIO_INFO_DATA(3): + case DP_TX_AUDIO_INFO_DATA(4): + case DP_TX_AUDIO_INFO_DATA(5): + case DP_TX_AUDIO_INFO_DATA(6): + case DP_TX_AUDIO_INFO_DATA(7): + case DP_TX_AUDIO_EXT_DATA(0): + case DP_TX_AUDIO_EXT_DATA(1): + case DP_TX_AUDIO_EXT_DATA(2): + case DP_TX_AUDIO_EXT_DATA(3): + case DP_TX_AUDIO_EXT_DATA(4): + case DP_TX_AUDIO_EXT_DATA(5): + case DP_TX_AUDIO_EXT_DATA(6): + case DP_TX_AUDIO_EXT_DATA(7): + case DP_TX_AUDIO_EXT_DATA(8): + /* write only registers */ + ret = 0; + break; + default: + assert(offset <= (0x3AC >> 2)); + ret = s->core_registers[offset]; + break; + } + + DPRINTF("core read @%" PRIx64 " = 0x%8.8lX\n", offset << 2, ret); + return ret; +} + +static void xlnx_dp_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + DPRINTF("core write @%" PRIx64 " = 0x%8.8lX\n", offset, value); + + offset = offset >> 2; + + switch (offset) { + /* + * Only special write case are handled. + */ + case DP_LINK_BW_SET: + s->core_registers[offset] = value & 0x000000FF; + break; + case DP_LANE_COUNT_SET: + case DP_MAIN_STREAM_MISC0: + s->core_registers[offset] = value & 0x0000000F; + break; + case DP_TRAINING_PATTERN_SET: + case DP_LINK_QUAL_PATTERN_SET: + case DP_MAIN_STREAM_POLARITY: + case DP_PHY_VOLTAGE_DIFF_LANE_0: + case DP_PHY_VOLTAGE_DIFF_LANE_1: + s->core_registers[offset] = value & 0x00000003; + break; + case DP_ENHANCED_FRAME_EN: + case DP_SCRAMBLING_DISABLE: + case DP_DOWNSPREAD_CTRL: + case DP_MAIN_STREAM_ENABLE: + case DP_TRANSMIT_PRBS7: + s->core_registers[offset] = value & 0x00000001; + break; + case DP_PHY_CLOCK_SELECT: + s->core_registers[offset] = value & 0x00000007; + break; + case DP_SOFTWARE_RESET: + /* + * No need to update this bit as it's read '0'. + */ + /* + * TODO: reset IP. + */ + break; + case DP_TRANSMITTER_ENABLE: + s->core_registers[offset] = value & 0x01; + break; + case DP_FORCE_SCRAMBLER_RESET: + /* + * No need to update this bit as it's read '0'. + */ + /* + * TODO: force a scrambler reset?? + */ + break; + case DP_AUX_COMMAND_REGISTER: + s->core_registers[offset] = value & 0x00001F0F; + xlnx_dp_aux_set_command(s, s->core_registers[offset]); + break; + case DP_MAIN_STREAM_HTOTAL: + case DP_MAIN_STREAM_VTOTAL: + case DP_MAIN_STREAM_HSTART: + case DP_MAIN_STREAM_VSTART: + s->core_registers[offset] = value & 0x0000FFFF; + break; + case DP_MAIN_STREAM_HRES: + case DP_MAIN_STREAM_VRES: + s->core_registers[offset] = value & 0x0000FFFF; + xlnx_dp_recreate_surface(s); + break; + case DP_MAIN_STREAM_HSWIDTH: + case DP_MAIN_STREAM_VSWIDTH: + s->core_registers[offset] = value & 0x00007FFF; + break; + case DP_MAIN_STREAM_MISC1: + s->core_registers[offset] = value & 0x00000086; + break; + case DP_MAIN_STREAM_M_VID: + case DP_MAIN_STREAM_N_VID: + s->core_registers[offset] = value & 0x00FFFFFF; + break; + case DP_MSA_TRANSFER_UNIT_SIZE: + case DP_MIN_BYTES_PER_TU: + case DP_INIT_WAIT: + s->core_registers[offset] = value & 0x00000007; + break; + case DP_USER_DATA_COUNT_PER_LANE: + s->core_registers[offset] = value & 0x0003FFFF; + break; + case DP_FRAC_BYTES_PER_TU: + s->core_registers[offset] = value & 0x000003FF; + break; + case DP_PHY_RESET: + s->core_registers[offset] = value & 0x00010003; + /* + * TODO: Reset something? + */ + break; + case DP_TX_PHY_POWER_DOWN: + s->core_registers[offset] = value & 0x0000000F; + /* + * TODO: Power down things? + */ + break; + case DP_AUX_WRITE_FIFO: + xlnx_dp_aux_push_tx_fifo(s, value, 1); + break; + case DP_AUX_CLOCK_DIVIDER: + break; + case DP_AUX_REPLY_COUNT: + /* + * Writing to this register clear the counter. + */ + s->core_registers[offset] = 0x00000000; + break; + case DP_AUX_ADDRESS: + s->core_registers[offset] = value & 0x000FFFFF; + break; + case DP_VERSION_REGISTER: + case DP_CORE_ID: + case DP_TX_USER_FIFO_OVERFLOW: + case DP_AUX_REPLY_DATA: + case DP_AUX_REPLY_CODE: + case DP_REPLY_DATA_COUNT: + case DP_REPLY_STATUS: + case DP_HPD_DURATION: + /* + * Write to read only location.. + */ + break; + case DP_TX_AUDIO_CONTROL: + s->core_registers[offset] = value & 0x00000001; + xlnx_dp_audio_activate(s); + break; + case DP_TX_AUDIO_CHANNELS: + s->core_registers[offset] = value & 0x00000007; + xlnx_dp_audio_activate(s); + break; + case DP_INT_STATUS: + s->core_registers[DP_INT_STATUS] &= ~value; + xlnx_dp_update_irq(s); + break; + case DP_INT_EN: + s->core_registers[DP_INT_MASK] &= ~value; + xlnx_dp_update_irq(s); + break; + case DP_INT_DS: + s->core_registers[DP_INT_MASK] |= ~value; + xlnx_dp_update_irq(s); + break; + default: + assert(offset <= (0x504C >> 2)); + s->core_registers[offset] = value; + break; + } +} + +static const MemoryRegionOps dp_ops = { + .read = xlnx_dp_read, + .write = xlnx_dp_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + }, + .impl = { + .min_access_size = 4, + .max_access_size = 4, + }, +}; + +/* + * This is to handle Read/Write to the Video Blender. + */ +static void xlnx_dp_vblend_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + bool alpha_was_enabled; + + DPRINTF("vblend: write @0x%" HWADDR_PRIX " = 0x%" PRIX32 "\n", offset, + (uint32_t)value); + offset = offset >> 2; + + switch (offset) { + case V_BLEND_BG_CLR_0: + case V_BLEND_BG_CLR_1: + case V_BLEND_BG_CLR_2: + s->vblend_registers[offset] = value & 0x00000FFF; + break; + case V_BLEND_SET_GLOBAL_ALPHA_REG: + /* + * A write to this register can enable or disable blending. Thus we need + * to recreate the surfaces. + */ + alpha_was_enabled = xlnx_dp_global_alpha_enabled(s); + s->vblend_registers[offset] = value & 0x000001FF; + if (xlnx_dp_global_alpha_enabled(s) != alpha_was_enabled) { + xlnx_dp_recreate_surface(s); + } + break; + case V_BLEND_OUTPUT_VID_FORMAT: + s->vblend_registers[offset] = value & 0x00000017; + break; + case V_BLEND_LAYER0_CONTROL: + case V_BLEND_LAYER1_CONTROL: + s->vblend_registers[offset] = value & 0x00000103; + break; + case V_BLEND_RGB2YCBCR_COEFF(0): + case V_BLEND_RGB2YCBCR_COEFF(1): + case V_BLEND_RGB2YCBCR_COEFF(2): + case V_BLEND_RGB2YCBCR_COEFF(3): + case V_BLEND_RGB2YCBCR_COEFF(4): + case V_BLEND_RGB2YCBCR_COEFF(5): + case V_BLEND_RGB2YCBCR_COEFF(6): + case V_BLEND_RGB2YCBCR_COEFF(7): + case V_BLEND_RGB2YCBCR_COEFF(8): + case V_BLEND_IN1CSC_COEFF(0): + case V_BLEND_IN1CSC_COEFF(1): + case V_BLEND_IN1CSC_COEFF(2): + case V_BLEND_IN1CSC_COEFF(3): + case V_BLEND_IN1CSC_COEFF(4): + case V_BLEND_IN1CSC_COEFF(5): + case V_BLEND_IN1CSC_COEFF(6): + case V_BLEND_IN1CSC_COEFF(7): + case V_BLEND_IN1CSC_COEFF(8): + case V_BLEND_IN2CSC_COEFF(0): + case V_BLEND_IN2CSC_COEFF(1): + case V_BLEND_IN2CSC_COEFF(2): + case V_BLEND_IN2CSC_COEFF(3): + case V_BLEND_IN2CSC_COEFF(4): + case V_BLEND_IN2CSC_COEFF(5): + case V_BLEND_IN2CSC_COEFF(6): + case V_BLEND_IN2CSC_COEFF(7): + case V_BLEND_IN2CSC_COEFF(8): + s->vblend_registers[offset] = value & 0x0000FFFF; + break; + case V_BLEND_LUMA_IN1CSC_OFFSET: + case V_BLEND_CR_IN1CSC_OFFSET: + case V_BLEND_CB_IN1CSC_OFFSET: + case V_BLEND_LUMA_IN2CSC_OFFSET: + case V_BLEND_CR_IN2CSC_OFFSET: + case V_BLEND_CB_IN2CSC_OFFSET: + case V_BLEND_LUMA_OUTCSC_OFFSET: + case V_BLEND_CR_OUTCSC_OFFSET: + case V_BLEND_CB_OUTCSC_OFFSET: + s->vblend_registers[offset] = value & 0x3FFF7FFF; + break; + case V_BLEND_CHROMA_KEY_ENABLE: + s->vblend_registers[offset] = value & 0x00000003; + break; + case V_BLEND_CHROMA_KEY_COMP1: + case V_BLEND_CHROMA_KEY_COMP2: + case V_BLEND_CHROMA_KEY_COMP3: + s->vblend_registers[offset] = value & 0x0FFF0FFF; + break; + default: + s->vblend_registers[offset] = value; + break; + } +} + +static uint64_t xlnx_dp_vblend_read(void *opaque, hwaddr offset, + unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + DPRINTF("vblend: read @0x%" HWADDR_PRIX " = 0x%" PRIX32 "\n", offset, + s->vblend_registers[offset >> 2]); + return s->vblend_registers[offset >> 2]; +} + +static const MemoryRegionOps vblend_ops = { + .read = xlnx_dp_vblend_read, + .write = xlnx_dp_vblend_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + }, + .impl = { + .min_access_size = 4, + .max_access_size = 4, + }, +}; + +/* + * This is to handle Read/Write to the Audio Video buffer manager. + */ +static void xlnx_dp_avbufm_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + DPRINTF("avbufm: write @0x%" HWADDR_PRIX " = 0x%" PRIX32 "\n", offset, + (uint32_t)value); + offset = offset >> 2; + + switch (offset) { + case AV_BUF_FORMAT: + s->avbufm_registers[offset] = value & 0x00000FFF; + xlnx_dp_change_graphic_fmt(s); + break; + case AV_CHBUF0: + case AV_CHBUF1: + case AV_CHBUF2: + case AV_CHBUF3: + case AV_CHBUF4: + case AV_CHBUF5: + s->avbufm_registers[offset] = value & 0x0000007F; + break; + case AV_BUF_OUTPUT_AUDIO_VIDEO_SELECT: + s->avbufm_registers[offset] = value & 0x0000007F; + break; + case AV_BUF_DITHER_CONFIG: + s->avbufm_registers[offset] = value & 0x000007FF; + break; + case AV_BUF_DITHER_CONFIG_MAX: + case AV_BUF_DITHER_CONFIG_MIN: + s->avbufm_registers[offset] = value & 0x00000FFF; + break; + case AV_BUF_PATTERN_GEN_SELECT: + s->avbufm_registers[offset] = value & 0xFFFFFF03; + break; + case AV_BUF_AUD_VID_CLK_SOURCE: + s->avbufm_registers[offset] = value & 0x00000007; + break; + case AV_BUF_SRST_REG: + s->avbufm_registers[offset] = value & 0x00000002; + break; + case AV_BUF_AUDIO_CH_CONFIG: + s->avbufm_registers[offset] = value & 0x00000003; + break; + case AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(0): + case AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(1): + case AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(2): + case AV_BUF_VIDEO_COMP_SCALE_FACTOR(0): + case AV_BUF_VIDEO_COMP_SCALE_FACTOR(1): + case AV_BUF_VIDEO_COMP_SCALE_FACTOR(2): + s->avbufm_registers[offset] = value & 0x0000FFFF; + break; + case AV_BUF_LIVE_VIDEO_COMP_SF(0): + case AV_BUF_LIVE_VIDEO_COMP_SF(1): + case AV_BUF_LIVE_VIDEO_COMP_SF(2): + case AV_BUF_LIVE_VID_CONFIG: + case AV_BUF_LIVE_GFX_COMP_SF(0): + case AV_BUF_LIVE_GFX_COMP_SF(1): + case AV_BUF_LIVE_GFX_COMP_SF(2): + case AV_BUF_LIVE_GFX_CONFIG: + case AV_BUF_NON_LIVE_LATENCY: + case AV_BUF_STC_CONTROL: + case AV_BUF_STC_INIT_VALUE0: + case AV_BUF_STC_INIT_VALUE1: + case AV_BUF_STC_ADJ: + case AV_BUF_STC_VIDEO_VSYNC_TS_REG0: + case AV_BUF_STC_VIDEO_VSYNC_TS_REG1: + case AV_BUF_STC_EXT_VSYNC_TS_REG0: + case AV_BUF_STC_EXT_VSYNC_TS_REG1: + case AV_BUF_STC_CUSTOM_EVENT_TS_REG0: + case AV_BUF_STC_CUSTOM_EVENT_TS_REG1: + case AV_BUF_STC_CUSTOM_EVENT2_TS_REG0: + case AV_BUF_STC_CUSTOM_EVENT2_TS_REG1: + case AV_BUF_STC_SNAPSHOT0: + case AV_BUF_STC_SNAPSHOT1: + case AV_BUF_HCOUNT_VCOUNT_INT0: + case AV_BUF_HCOUNT_VCOUNT_INT1: + qemu_log_mask(LOG_UNIMP, "avbufm: unimplmented"); + break; + default: + s->avbufm_registers[offset] = value; + break; + } +} + +static uint64_t xlnx_dp_avbufm_read(void *opaque, hwaddr offset, + unsigned size) +{ + XlnxDPState *s = XLNX_DP(opaque); + + offset = offset >> 2; + return s->avbufm_registers[offset]; +} + +static const MemoryRegionOps avbufm_ops = { + .read = xlnx_dp_avbufm_read, + .write = xlnx_dp_avbufm_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + }, + .impl = { + .min_access_size = 4, + .max_access_size = 4, + }, +}; + +/* + * This is a global alpha blending using pixman. + * Both graphic and video planes are multiplied with the global alpha + * coefficient and added. + */ +static inline void xlnx_dp_blend_surface(XlnxDPState *s) +{ + pixman_fixed_t alpha1[] = { pixman_double_to_fixed(1), + pixman_double_to_fixed(1), + pixman_double_to_fixed(1.0) }; + pixman_fixed_t alpha2[] = { pixman_double_to_fixed(1), + pixman_double_to_fixed(1), + pixman_double_to_fixed(1.0) }; + + if ((surface_width(s->g_plane.surface) + != surface_width(s->v_plane.surface)) || + (surface_height(s->g_plane.surface) + != surface_height(s->v_plane.surface))) { + return; + } + + alpha1[2] = pixman_double_to_fixed((double)(xlnx_dp_global_alpha_value(s)) + / 256.0); + alpha2[2] = pixman_double_to_fixed((255.0 + - (double)xlnx_dp_global_alpha_value(s)) + / 256.0); + + pixman_image_set_filter(s->g_plane.surface->image, + PIXMAN_FILTER_CONVOLUTION, alpha1, 3); + pixman_image_composite(PIXMAN_OP_SRC, s->g_plane.surface->image, 0, + s->bout_plane.surface->image, 0, 0, 0, 0, 0, 0, + surface_width(s->g_plane.surface), + surface_height(s->g_plane.surface)); + pixman_image_set_filter(s->v_plane.surface->image, + PIXMAN_FILTER_CONVOLUTION, alpha2, 3); + pixman_image_composite(PIXMAN_OP_ADD, s->v_plane.surface->image, 0, + s->bout_plane.surface->image, 0, 0, 0, 0, 0, 0, + surface_width(s->g_plane.surface), + surface_height(s->g_plane.surface)); +} + +static void xlnx_dp_update_display(void *opaque) +{ + XlnxDPState *s = XLNX_DP(opaque); + + if ((s->core_registers[DP_TRANSMITTER_ENABLE] & 0x01) == 0) { + return; + } + + s->core_registers[DP_INT_STATUS] |= (1 << 13); + xlnx_dp_update_irq(s); + + xlnx_dpdma_trigger_vsync_irq(s->dpdma); + + /* + * Trigger the DMA channel. + */ + if (!xlnx_dpdma_start_operation(s->dpdma, 3, false)) { + /* + * An error occured don't do anything with the data.. + * Trigger an underflow interrupt. + */ + s->core_registers[DP_INT_STATUS] |= (1 << 21); + xlnx_dp_update_irq(s); + return; + } + + if (xlnx_dp_global_alpha_enabled(s)) { + if (!xlnx_dpdma_start_operation(s->dpdma, 0, false)) { + s->core_registers[DP_INT_STATUS] |= (1 << 21); + xlnx_dp_update_irq(s); + return; + } + xlnx_dp_blend_surface(s); + } + + /* + * XXX: We might want to update only what changed. + */ + dpy_gfx_update(s->console, 0, 0, surface_width(s->g_plane.surface), + surface_height(s->g_plane.surface)); +} + +static const GraphicHwOps xlnx_dp_gfx_ops = { + .gfx_update = xlnx_dp_update_display, +}; + +static void xlnx_dp_init(Object *obj) +{ + SysBusDevice *sbd = SYS_BUS_DEVICE(obj); + XlnxDPState *s = XLNX_DP(obj); + + memory_region_init(&s->container, obj, TYPE_XLNX_DP, 0xC050); + + memory_region_init_io(&s->core_iomem, obj, &dp_ops, s, TYPE_XLNX_DP + ".core", 0x3AF); + memory_region_add_subregion(&s->container, 0x0000, &s->core_iomem); + + memory_region_init_io(&s->vblend_iomem, obj, &vblend_ops, s, TYPE_XLNX_DP + ".v_blend", 0x1DF); + memory_region_add_subregion(&s->container, 0xA000, &s->vblend_iomem); + + memory_region_init_io(&s->avbufm_iomem, obj, &avbufm_ops, s, TYPE_XLNX_DP + ".av_buffer_manager", 0x238); + memory_region_add_subregion(&s->container, 0xB000, &s->avbufm_iomem); + + memory_region_init_io(&s->audio_iomem, obj, &audio_ops, s, TYPE_XLNX_DP + ".audio", sizeof(s->audio_registers)); + memory_region_add_subregion(&s->container, 0xC000, &s->audio_iomem); + + sysbus_init_mmio(sbd, &s->container); + sysbus_init_irq(sbd, &s->irq); + + object_property_add_link(obj, "dpdma", TYPE_XLNX_DPDMA, + (Object **) &s->dpdma, + xlnx_dp_set_dpdma, + OBJ_PROP_LINK_UNREF_ON_RELEASE, + &error_abort); + + /* + * Initialize AUX Bus. + */ + s->aux_bus = aux_init_bus(DEVICE(obj), "aux"); + + /* + * Initialize DPCD and EDID.. + */ + s->dpcd = DPCD(aux_create_slave(s->aux_bus, "dpcd", 0x00000)); + s->edid = I2CDDC(qdev_create(BUS(aux_get_i2c_bus(s->aux_bus)), "i2c-ddc")); + i2c_set_slave_address(I2C_SLAVE(s->edid), 0x50); + + fifo8_create(&s->rx_fifo, 16); + fifo8_create(&s->tx_fifo, 16); +} + +static void xlnx_dp_realize(DeviceState *dev, Error **errp) +{ + XlnxDPState *s = XLNX_DP(dev); + DisplaySurface *surface; + struct audsettings as; + + s->console = graphic_console_init(dev, 0, &xlnx_dp_gfx_ops, s); + surface = qemu_console_surface(s->console); + xlnx_dpdma_set_host_data_location(s->dpdma, DP_GRAPHIC_DMA_CHANNEL, + surface_data(surface)); + + as.freq = 44100; + as.nchannels = 2; + as.fmt = AUD_FMT_S16; + as.endianness = 0; + + AUD_register_card("xlnx_dp.audio", &s->aud_card); + + s->amixer_output_stream = AUD_open_out(&s->aud_card, + s->amixer_output_stream, + "xlnx_dp.audio.out", + s, + xlnx_dp_audio_callback, + &as); + AUD_set_volume_out(s->amixer_output_stream, 0, 255, 255); + xlnx_dp_audio_activate(s); +} + +static void xlnx_dp_reset(DeviceState *dev) +{ + XlnxDPState *s = XLNX_DP(dev); + + memset(s->core_registers, 0, sizeof(s->core_registers)); + s->core_registers[DP_VERSION_REGISTER] = 0x04010000; + s->core_registers[DP_CORE_ID] = 0x01020000; + s->core_registers[DP_REPLY_STATUS] = 0x00000010; + s->core_registers[DP_MSA_TRANSFER_UNIT_SIZE] = 0x00000040; + s->core_registers[DP_INIT_WAIT] = 0x00000020; + s->core_registers[DP_PHY_RESET] = 0x00010003; + s->core_registers[DP_INT_MASK] = 0xFFFFF03F; + s->core_registers[DP_PHY_STATUS] = 0x00000043; + s->core_registers[DP_INTERRUPT_SIGNAL_STATE] = 0x00000001; + + s->vblend_registers[V_BLEND_RGB2YCBCR_COEFF(0)] = 0x00001000; + s->vblend_registers[V_BLEND_RGB2YCBCR_COEFF(4)] = 0x00001000; + s->vblend_registers[V_BLEND_RGB2YCBCR_COEFF(8)] = 0x00001000; + s->vblend_registers[V_BLEND_IN1CSC_COEFF(0)] = 0x00001000; + s->vblend_registers[V_BLEND_IN1CSC_COEFF(4)] = 0x00001000; + s->vblend_registers[V_BLEND_IN1CSC_COEFF(8)] = 0x00001000; + s->vblend_registers[V_BLEND_IN2CSC_COEFF(0)] = 0x00001000; + s->vblend_registers[V_BLEND_IN2CSC_COEFF(4)] = 0x00001000; + s->vblend_registers[V_BLEND_IN2CSC_COEFF(8)] = 0x00001000; + + s->avbufm_registers[AV_BUF_NON_LIVE_LATENCY] = 0x00000180; + s->avbufm_registers[AV_BUF_OUTPUT_AUDIO_VIDEO_SELECT] = 0x00000008; + s->avbufm_registers[AV_BUF_DITHER_CONFIG_MAX] = 0x00000FFF; + s->avbufm_registers[AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(0)] = 0x00010101; + s->avbufm_registers[AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(1)] = 0x00010101; + s->avbufm_registers[AV_BUF_GRAPHICS_COMP_SCALE_FACTOR(2)] = 0x00010101; + s->avbufm_registers[AV_BUF_VIDEO_COMP_SCALE_FACTOR(0)] = 0x00010101; + s->avbufm_registers[AV_BUF_VIDEO_COMP_SCALE_FACTOR(1)] = 0x00010101; + s->avbufm_registers[AV_BUF_VIDEO_COMP_SCALE_FACTOR(2)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_VIDEO_COMP_SF(0)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_VIDEO_COMP_SF(1)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_VIDEO_COMP_SF(2)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_GFX_COMP_SF(0)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_GFX_COMP_SF(1)] = 0x00010101; + s->avbufm_registers[AV_BUF_LIVE_GFX_COMP_SF(2)] = 0x00010101; + + memset(s->audio_registers, 0, sizeof(s->audio_registers)); + s->byte_left = 0; + + xlnx_dp_aux_clear_rx_fifo(s); + xlnx_dp_change_graphic_fmt(s); + xlnx_dp_update_irq(s); +} + +static void xlnx_dp_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); + + dc->realize = xlnx_dp_realize; + dc->vmsd = &vmstate_dp; + dc->reset = xlnx_dp_reset; +} + +static const TypeInfo xlnx_dp_info = { + .name = TYPE_XLNX_DP, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(XlnxDPState), + .instance_init = xlnx_dp_init, + .class_init = xlnx_dp_class_init, +}; + +static void xlnx_dp_register_types(void) +{ + type_register_static(&xlnx_dp_info); +} + +type_init(xlnx_dp_register_types) diff --git a/include/hw/display/xlnx_dp.h b/include/hw/display/xlnx_dp.h new file mode 100644 index 0000000..d3a03f1 --- /dev/null +++ b/include/hw/display/xlnx_dp.h @@ -0,0 +1,109 @@ +/* + * xlnx_dp.h + * + * Copyright (C) 2015 : GreenSocs Ltd + * http://www.greensocs.com/ , email: info@greensocs.com + * + * Developed by : + * Frederic Konrad <fred.konrad@greensocs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#include "hw/sysbus.h" +#include "ui/console.h" +#include "hw/misc/aux.h" +#include "hw/i2c/i2c.h" +#include "hw/display/dpcd.h" +#include "hw/i2c/i2c-ddc.h" +#include "qemu/fifo8.h" +#include "hw/dma/xlnx_dpdma.h" +#include "audio/audio.h" + +#ifndef XLNX_DP_H +#define XLNX_DP_H + +#define AUD_CHBUF_MAX_DEPTH 32768 +#define MAX_QEMU_BUFFER_SIZE 4096 + +#define DP_CORE_REG_ARRAY_SIZE (0x3AF >> 2) +#define DP_AVBUF_REG_ARRAY_SIZE (0x238 >> 2) +#define DP_VBLEND_REG_ARRAY_SIZE (0x1DF >> 2) +#define DP_AUDIO_REG_ARRAY_SIZE (0x50 >> 2) + +struct PixmanPlane { + pixman_format_code_t format; + DisplaySurface *surface; +}; + +typedef struct XlnxDPState { + /*< private >*/ + SysBusDevice parent_obj; + + /* < public >*/ + MemoryRegion container; + + uint32_t core_registers[DP_CORE_REG_ARRAY_SIZE]; + MemoryRegion core_iomem; + + uint32_t avbufm_registers[DP_AVBUF_REG_ARRAY_SIZE]; + MemoryRegion avbufm_iomem; + + uint32_t vblend_registers[DP_VBLEND_REG_ARRAY_SIZE]; + MemoryRegion vblend_iomem; + + uint32_t audio_registers[DP_AUDIO_REG_ARRAY_SIZE]; + MemoryRegion audio_iomem; + + QemuConsole *console; + + /* + * This is the planes used to display in console. When the blending is + * enabled bout_plane is displayed in console else it's g_plane. + */ + struct PixmanPlane g_plane; + struct PixmanPlane v_plane; + struct PixmanPlane bout_plane; + + QEMUSoundCard aud_card; + SWVoiceOut *amixer_output_stream; + int16_t audio_buffer_0[AUD_CHBUF_MAX_DEPTH]; + int16_t audio_buffer_1[AUD_CHBUF_MAX_DEPTH]; + size_t audio_data_available[2]; + int64_t temp_buffer[AUD_CHBUF_MAX_DEPTH]; + int16_t out_buffer[AUD_CHBUF_MAX_DEPTH]; + size_t byte_left; /* byte available in out_buffer. */ + size_t data_ptr; /* next byte to be sent to QEMU. */ + + /* Associated DPDMA controller. */ + XlnxDPDMAState *dpdma; + + qemu_irq irq; + + AUXBus *aux_bus; + Fifo8 rx_fifo; + Fifo8 tx_fifo; + + /* + * XXX: This should be in an other module. + */ + DPCDState *dpcd; + I2CDDCState *edid; +} XlnxDPState; + +#define TYPE_XLNX_DP "xlnx.v-dp" +#define XLNX_DP(obj) OBJECT_CHECK(XlnxDPState, (obj), TYPE_XLNX_DP) + +#endif /* !XLNX_DP_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 28/30] introduce xlnx-dp 2016-06-14 14:14 ` [Qemu-devel] [PULL 28/30] introduce xlnx-dp Peter Maydell @ 2022-04-07 10:32 ` Peter Maydell 2022-04-07 11:28 ` Frederic Konrad 0 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2022-04-07 10:32 UTC (permalink / raw) To: qemu-devel; +Cc: Edgar E. Iglesias, Alistair Francis, Frederic Konrad On Tue, 14 Jun 2016 at 15:40, Peter Maydell <peter.maydell@linaro.org> wrote: > > From: KONRAD Frederic <fred.konrad@greensocs.com> > > This is the implementation of the DisplayPort. > It has an aux-bus to access dpcd and edid. > > Graphic plane is connected to the channel 3. > Video plane is connected to the channel 0. > Audio stream are connected to the channels 4 and 5. Very old patch, but Coverity has just pointed out an array overrun in it (CID 1487260): We define a set of offsets for V_BLEND registers, of which the largest is this one: > +#define V_BLEND_CHROMA_KEY_COMP3 (0x01DC >> 2) > +static void xlnx_dp_vblend_write(void *opaque, hwaddr offset, > + uint64_t value, unsigned size) > +{ > + XlnxDPState *s = XLNX_DP(opaque); > + bool alpha_was_enabled; > + > + DPRINTF("vblend: write @0x%" HWADDR_PRIX " = 0x%" PRIX32 "\n", offset, > + (uint32_t)value); > + offset = offset >> 2; > + > + switch (offset) { > + case V_BLEND_CHROMA_KEY_COMP1: > + case V_BLEND_CHROMA_KEY_COMP2: > + case V_BLEND_CHROMA_KEY_COMP3: > + s->vblend_registers[offset] = value & 0x0FFF0FFF; We use V_BLEND_CHROMA_KEY_COMP3 as an index into the vblend_registers array... > + break; > + default: > + s->vblend_registers[offset] = value; > + break; > + } > +} > +#define DP_CORE_REG_ARRAY_SIZE (0x3AF >> 2) > +#define DP_AVBUF_REG_ARRAY_SIZE (0x238 >> 2) > +#define DP_VBLEND_REG_ARRAY_SIZE (0x1DF >> 2) > +#define DP_AUDIO_REG_ARRAY_SIZE (0x50 >> 2) > + uint32_t vblend_registers[DP_VBLEND_REG_ARRAY_SIZE]; ...but we have defined DP_VBLEND_REG_ARRAY_SIZE to 0x1DF >> 2, which is the same as 0x1DC >> 2, and so the array size is too small. The size of the memory region is also suspicious: + memory_region_init_io(&s->vblend_iomem, obj, &vblend_ops, s, TYPE_XLNX_DP + ".v_blend", 0x1DF); This is a "32-bit accesses only" region, but we have defined it with a size that is not a multiple of 4. That looks wrong... (It also means that rather than having an array overrun I think the actual effect is that the guest won't be able to access the last register, because it's not entirely within the memoryregion.) Coverity doesn't complain about it, but the DP_CORE_REG_ARRAY_SIZE may also have a similar problem. thanks -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 28/30] introduce xlnx-dp 2022-04-07 10:32 ` Peter Maydell @ 2022-04-07 11:28 ` Frederic Konrad 2022-04-07 12:26 ` Peter Maydell 0 siblings, 1 reply; 45+ messages in thread From: Frederic Konrad @ 2022-04-07 11:28 UTC (permalink / raw) To: Peter Maydell, qemu-devel; +Cc: Alistair Francis, Edgar E. Iglesias Le 4/7/22 à 12:32, Peter Maydell a écrit : > On Tue, 14 Jun 2016 at 15:40, Peter Maydell <peter.maydell@linaro.org> wrote: >> >> From: KONRAD Frederic <fred.konrad@greensocs.com> >> >> This is the implementation of the DisplayPort. >> It has an aux-bus to access dpcd and edid. >> >> Graphic plane is connected to the channel 3. >> Video plane is connected to the channel 0. >> Audio stream are connected to the channels 4 and 5. > > Very old patch, but Coverity has just pointed out an array > overrun in it (CID 1487260): > > We define a set of offsets for V_BLEND registers, of which > the largest is this one: > >> +#define V_BLEND_CHROMA_KEY_COMP3 (0x01DC >> 2) > >> +static void xlnx_dp_vblend_write(void *opaque, hwaddr offset, >> + uint64_t value, unsigned size) >> +{ >> + XlnxDPState *s = XLNX_DP(opaque); >> + bool alpha_was_enabled; >> + >> + DPRINTF("vblend: write @0x%" HWADDR_PRIX " = 0x%" PRIX32 "\n", offset, >> + (uint32_t)value); >> + offset = offset >> 2; >> + >> + switch (offset) { > >> + case V_BLEND_CHROMA_KEY_COMP1: >> + case V_BLEND_CHROMA_KEY_COMP2: >> + case V_BLEND_CHROMA_KEY_COMP3: >> + s->vblend_registers[offset] = value & 0x0FFF0FFF; > > We use V_BLEND_CHROMA_KEY_COMP3 as an index into the vblend_registers array... > >> + break; >> + default: >> + s->vblend_registers[offset] = value; >> + break; >> + } >> +} > >> +#define DP_CORE_REG_ARRAY_SIZE (0x3AF >> 2) >> +#define DP_AVBUF_REG_ARRAY_SIZE (0x238 >> 2) >> +#define DP_VBLEND_REG_ARRAY_SIZE (0x1DF >> 2) >> +#define DP_AUDIO_REG_ARRAY_SIZE (0x50 >> 2) > >> + uint32_t vblend_registers[DP_VBLEND_REG_ARRAY_SIZE]; > > ..but we have defined DP_VBLEND_REG_ARRAY_SIZE to 0x1DF >> 2, > which is the same as 0x1DC >> 2, and so the array size is too small. > > The size of the memory region is also suspicious: > > + memory_region_init_io(&s->vblend_iomem, obj, &vblend_ops, s, TYPE_XLNX_DP > + ".v_blend", 0x1DF); > > This is a "32-bit accesses only" region, but we have defined it with a > size that is not a multiple of 4. That looks wrong... (It also means > that rather than having an array overrun I think the actual effect > is that the guest won't be able to access the last register, because > it's not entirely within the memoryregion.) arg, sorry for that.. I share your point, it should not be possible to access it, but using the monitor: (qemu) info mtree ... 00000000fd4aa000-00000000fd4aa1de (prio 0, i/o): xlnx.v-dp.v_blend ... I can actually read that register (at least it doesn't complain, on an older qemu version though): (qemu) xp /w 0xfd4aa1dc 00000000fd4aa1dc: 0x00000000 So I'm not totally sure.. do you need a patch for 7.0.0? > > Coverity doesn't complain about it, but the DP_CORE_REG_ARRAY_SIZE > may also have a similar problem. I think it doesn't complain because writing to the last register doesn't actually write into the array but update the mask register instead: case DP_INT_DS: s->core_registers[DP_INT_MASK] |= ~value; xlnx_dp_update_irq(s); break; > > thanks > -- PMM Best Regards, Fred ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 28/30] introduce xlnx-dp 2022-04-07 11:28 ` Frederic Konrad @ 2022-04-07 12:26 ` Peter Maydell 0 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2022-04-07 12:26 UTC (permalink / raw) To: Frederic Konrad; +Cc: Edgar E. Iglesias, Alistair Francis, qemu-devel On Thu, 7 Apr 2022 at 12:28, Frederic Konrad <konrad.frederic@yahoo.fr> wrote: > So I'm not totally sure.. do you need a patch for 7.0.0? It's not a regression, so we can fix this for 7.1. thanks -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 29/30] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (27 preceding siblings ...) 2016-06-14 14:14 ` [Qemu-devel] [PULL 28/30] introduce xlnx-dp Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 30/30] target-arm: Don't permit ARMv8-only Neon insns on ARMv7 Peter Maydell 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel From: KONRAD Frederic <fred.konrad@greensocs.com> This adds the DP and the DPDMA to the Zynq MP platform. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> Message-id: 1465833014-21982-10-git-send-email-fred.konrad@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/xlnx-zynqmp.c | 32 +++++++++++++++++++++++++++++++- include/hw/arm/xlnx-zynqmp.h | 4 ++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 308d677..23c7199 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -38,6 +38,12 @@ #define SATA_ADDR 0xFD0C0000 #define SATA_NUM_PORTS 2 +#define DP_ADDR 0xfd4a0000 +#define DP_IRQ 113 + +#define DPDMA_ADDR 0xfd4c0000 +#define DPDMA_IRQ 116 + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, }; @@ -165,6 +171,12 @@ static void xlnx_zynqmp_init(Object *obj) TYPE_XILINX_SPIPS); qdev_set_parent_bus(DEVICE(&s->spi[i]), sysbus_get_default()); } + + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); + + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); + qdev_set_parent_bus(DEVICE(&s->dpdma), sysbus_get_default()); } static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) @@ -388,8 +400,26 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) object_property_add_alias(OBJECT(s), bus_name, OBJECT(&s->spi[i]), "spi0", &error_abort); - g_free(bus_name); + g_free(bus_name); + } + + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); + + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; } + object_property_set_link(OBJECT(&s->dp), OBJECT(&s->dpdma), "dpdma", + &error_abort); + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]); } static Property xlnx_zynqmp_props[] = { diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 68f6eb0..c2931bf 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -26,6 +26,8 @@ #include "hw/ide/ahci.h" #include "hw/sd/sdhci.h" #include "hw/ssi/xilinx_spips.h" +#include "hw/dma/xlnx_dpdma.h" +#include "hw/display/xlnx_dp.h" #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ @@ -81,6 +83,8 @@ typedef struct XlnxZynqMPState { SysbusAHCIState sata; SDHCIState sdhci[XLNX_ZYNQMP_NUM_SDHCI]; XilinxSPIPS spi[XLNX_ZYNQMP_NUM_SPIS]; + XlnxDPState dp; + XlnxDPDMAState dpdma; char *boot_cpu; ARMCPU *boot_cpu_ptr; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 30/30] target-arm: Don't permit ARMv8-only Neon insns on ARMv7 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell ` (28 preceding siblings ...) 2016-06-14 14:14 ` [Qemu-devel] [PULL 29/30] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma Peter Maydell @ 2016-06-14 14:14 ` Peter Maydell 29 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-06-14 14:14 UTC (permalink / raw) To: qemu-devel The Neon instructions VCVTA, VCVTM, VCVTN, VCVTP, VRINTA, VRINTM, VRINTN, VRINTP, VRINTX, and VRINTZ were only introduced with ARMv8, so they need a guard to make them UNDEF if the CPU only supports ARMv7. (We got this right for all the other new-in-v8 insns, but forgot it for these Neon 2-reg-misc ops.) Reported-by: Christophe Lyon <christophe.lyon@linaro.org> Tested-by: Christophe Lyon <christophe.lyon@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1465492511-9333-1-git-send-email-peter.maydell@linaro.org --- target-arm/translate.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/target-arm/translate.c b/target-arm/translate.c index 6815bc1..3e71467 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -5311,6 +5311,30 @@ static int neon_2rm_is_float_op(int op) op >= NEON_2RM_VRECPE_F); } +static bool neon_2rm_is_v8_op(int op) +{ + /* Return true if this neon 2reg-misc op is ARMv8 and up */ + switch (op) { + case NEON_2RM_VRINTN: + case NEON_2RM_VRINTA: + case NEON_2RM_VRINTM: + case NEON_2RM_VRINTP: + case NEON_2RM_VRINTZ: + case NEON_2RM_VRINTX: + case NEON_2RM_VCVTAU: + case NEON_2RM_VCVTAS: + case NEON_2RM_VCVTNU: + case NEON_2RM_VCVTNS: + case NEON_2RM_VCVTPU: + case NEON_2RM_VCVTPS: + case NEON_2RM_VCVTMU: + case NEON_2RM_VCVTMS: + return true; + default: + return false; + } +} + /* Each entry in this array has bit n set if the insn allows * size value n (otherwise it will UNDEF). Since unallocated * op values will have no bits set they always UNDEF. @@ -6798,6 +6822,10 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) if ((neon_2rm_sizes[op] & (1 << size)) == 0) { return 1; } + if (neon_2rm_is_v8_op(op) && + !arm_dc_feature(s, ARM_FEATURE_V8)) { + return 1; + } if ((op != NEON_2RM_VMOVN && op != NEON_2RM_VQMOVN) && q && ((rm | rd) & 1)) { return 1; -- 1.9.1 ^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 00/30] target-arm queue @ 2018-08-16 13:34 Peter Maydell 2018-08-16 16:18 ` Peter Maydell 0 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2018-08-16 13:34 UTC (permalink / raw) To: qemu-devel Less than a day of post-3.0 code review and already enough patches for another pullreq :-) thanks -- PMM The following changes since commit c542a9f9794ec8e0bc3fcf5956d3cc8bce667789: Merge remote-tracking branch 'remotes/armbru/tags/pull-tests-2018-08-16' into staging (2018-08-16 09:50:54 +0100) are available in the Git repository at: https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20180816 for you to fetch changes up to fcf13ca556f462b52956059bf8fa622bc8575edb: hw/arm/mps2-tz: Replace init_sysbus_child() with sysbus_init_child_obj() (2018-08-16 14:29:58 +0100) ---------------------------------------------------------------- target-arm queue: * Fixes for various bugs in SVE instructions * Add model of Freescale i.MX6 UltraLite 14x14 EVK Board * hw/arm: make bitbanded IO optional on ARMv7-M * Add model of Cortex-M0 CPU * Add support for loading Intel HEX files to the generic loader * imx_spi: Unset XCH when TX FIFO becomes empty * aspeed_sdmc: fix various bugs * Fix bugs in Arm FP16 instruction support * Fix aa64 FCADD and FCMLA decode * softfloat: Fix missing inexact for floating-point add * hw/arm/mps2-tz: Replace init_sysbus_child() with sysbus_init_child_obj() ---------------------------------------------------------------- Cédric Le Goater (1): aspeed: add a max_ram_size property to the memory controller Jean-Christophe Dubois (3): i.MX6UL: Add i.MX6UL specific CCM device i.MX6UL: Add i.MX6UL SOC i.MX6UL: Add Freescale i.MX6 UltraLite 14x14 EVK Board Joel Stanley (5): aspeed_sdmc: Extend number of valid registers aspeed_sdmc: Fix saved values aspeed_sdmc: Set 'cache initial sequence' always true aspeed_sdmc: Init status always idle aspeed_sdmc: Handle ECC training Richard Henderson (13): target/arm: Fix typo in helper_sve_ld1hss_r target/arm: Fix sign-extension in sve do_ldr/do_str target/arm: Fix offset for LD1R instructions target/arm: Fix offset scaling for LD_zprr and ST_zprr target/arm: Reformat integer register dump target/arm: Dump SVE state if enabled target/arm: Add sve-max-vq cpu property to -cpu max target/arm: Adjust FPCR_MASK for FZ16 target/arm: Ignore float_flag_input_denormal from fp_status_f16 target/arm: Use fp_status_fp16 for do_fmpa_zpzzz_h target/arm: Use FZ not FZ16 for SVE FCVT single-half and double-half target/arm: Fix aa64 FCADD and FCMLA decode softfloat: Fix missing inexact for floating-point add Stefan Hajnoczi (4): hw/arm: make bitbanded IO optional on ARMv7-M target/arm: add "cortex-m0" CPU model loader: extract rom_free() function loader: add rom transaction API Su Hang (2): loader: Implement .hex file loader Add QTest testcase for the Intel Hexadecimal Thomas Huth (1): hw/arm/mps2-tz: Replace init_sysbus_child() with sysbus_init_child_obj() Trent Piepho (1): imx_spi: Unset XCH when TX FIFO becomes empty configure | 4 + hw/arm/Makefile.objs | 1 + hw/misc/Makefile.objs | 1 + tests/Makefile.include | 2 + include/hw/arm/armv7m.h | 2 + include/hw/arm/fsl-imx6ul.h | 339 ++++++++++++++ include/hw/loader.h | 31 ++ include/hw/misc/aspeed_sdmc.h | 4 +- include/hw/misc/imx6ul_ccm.h | 226 +++++++++ target/arm/cpu.h | 5 +- fpu/softfloat.c | 2 +- hw/arm/armv7m.c | 37 +- hw/arm/aspeed.c | 31 ++ hw/arm/aspeed_soc.c | 2 + hw/arm/fsl-imx6ul.c | 617 ++++++++++++++++++++++++ hw/arm/mcimx6ul-evk.c | 85 ++++ hw/arm/mps2-tz.c | 32 +- hw/arm/mps2.c | 1 + hw/arm/msf2-soc.c | 1 + hw/arm/stellaris.c | 1 + hw/arm/stm32f205_soc.c | 1 + hw/core/generic-loader.c | 4 + hw/core/loader.c | 302 +++++++++++- hw/misc/aspeed_sdmc.c | 55 ++- hw/misc/imx6ul_ccm.c | 886 +++++++++++++++++++++++++++++++++++ hw/ssi/imx_spi.c | 3 +- linux-user/syscall.c | 19 +- target/arm/cpu.c | 17 +- target/arm/cpu64.c | 29 ++ target/arm/helper.c | 18 +- target/arm/sve_helper.c | 4 +- target/arm/translate-a64.c | 120 ++++- target/arm/translate-sve.c | 30 +- tests/hexloader-test.c | 45 ++ MAINTAINERS | 6 + default-configs/arm-softmmu.mak | 1 + hw/misc/trace-events | 7 + tests/hex-loader-check-data/test.hex | 18 + 38 files changed, 2863 insertions(+), 126 deletions(-) create mode 100644 include/hw/arm/fsl-imx6ul.h create mode 100644 include/hw/misc/imx6ul_ccm.h create mode 100644 hw/arm/fsl-imx6ul.c create mode 100644 hw/arm/mcimx6ul-evk.c create mode 100644 hw/misc/imx6ul_ccm.c create mode 100644 tests/hexloader-test.c create mode 100644 tests/hex-loader-check-data/test.hex ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2018-08-16 13:34 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell @ 2018-08-16 16:18 ` Peter Maydell 0 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2018-08-16 16:18 UTC (permalink / raw) To: QEMU Developers On 16 August 2018 at 14:34, Peter Maydell <peter.maydell@linaro.org> wrote: > Less than a day of post-3.0 code review and already enough > patches for another pullreq :-) > > thanks > -- PMM > > The following changes since commit c542a9f9794ec8e0bc3fcf5956d3cc8bce667789: > > Merge remote-tracking branch 'remotes/armbru/tags/pull-tests-2018-08-16' into staging (2018-08-16 09:50:54 +0100) > > are available in the Git repository at: > > https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20180816 > > for you to fetch changes up to fcf13ca556f462b52956059bf8fa622bc8575edb: > > hw/arm/mps2-tz: Replace init_sysbus_child() with sysbus_init_child_obj() (2018-08-16 14:29:58 +0100) > > ---------------------------------------------------------------- > target-arm queue: > * Fixes for various bugs in SVE instructions > * Add model of Freescale i.MX6 UltraLite 14x14 EVK Board > * hw/arm: make bitbanded IO optional on ARMv7-M > * Add model of Cortex-M0 CPU > * Add support for loading Intel HEX files to the generic loader > * imx_spi: Unset XCH when TX FIFO becomes empty > * aspeed_sdmc: fix various bugs > * Fix bugs in Arm FP16 instruction support > * Fix aa64 FCADD and FCMLA decode > * softfloat: Fix missing inexact for floating-point add > * hw/arm/mps2-tz: Replace init_sysbus_child() with sysbus_init_child_obj() > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 00/30] target-arm queue @ 2018-02-09 11:02 Peter Maydell 2018-02-09 14:38 ` Peter Maydell 0 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2018-02-09 11:02 UTC (permalink / raw) To: qemu-devel Another lump of target-arm patches. I still have some patches in my to-review queue, but this is a big enough set that I wanted to send it out. thanks -- PMM The following changes since commit 04bb7fe2bf55bdf66d5b7a5a719b40bbb4048178: Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20180208' into staging (2018-02-08 17:41:15 +0000) are available in the Git repository at: git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20180209 for you to fetch changes up to bbba7757bacc9f890a3f028d328b4b429dbe78ec: hw/core/generic-loader: Allow PC to be set on command line (2018-02-09 10:55:40 +0000) ---------------------------------------------------------------- target-arm queue: * Support M profile derived exceptions on exception entry and exit * Implement AArch64 v8.2 crypto insns (SHA-512, SHA-3, SM3, SM4) * Implement working i.MX6 SD controller * Various devices preparatory to i.MX7 support * Preparatory patches for SVE emulation * v8M: Fix bug in implementation of 'TT' insn * Give useful error if user tries to use userspace GICv3 with KVM ---------------------------------------------------------------- Andrey Smirnov (10): sdhci: Add i.MX specific subtype of SDHCI hw: i.MX: Convert i.MX6 to use TYPE_IMX_USDHC i.MX: Add code to emulate i.MX7 CCM, PMU and ANALOG IP blocks i.MX: Add code to emulate i.MX2 watchdog IP block i.MX: Add code to emulate i.MX7 SNVS IP-block i.MX: Add code to emulate GPCv2 IP block i.MX: Add i.MX7 GPT variant i.MX: Add implementation of i.MX7 GPR IP block usb: Add basic code to emulate Chipidea USB IP hw/arm: Move virt's PSCI DT fixup code to arm/boot.c Ard Biesheuvel (5): target/arm: implement SHA-512 instructions target/arm: implement SHA-3 instructions target/arm: implement SM3 instructions target/arm: implement SM4 instructions target/arm: enable user-mode SHA-3, SM3, SM4 and SHA-512 instruction support Christoffer Dall (1): target/arm/kvm: gic: Prevent creating userspace GICv3 with KVM Peter Maydell (9): target/arm: Add armv7m_nvic_set_pending_derived() target/arm: Split "get pending exception info" from "acknowledge it" target/arm: Add ignore_stackfaults argument to v7m_exception_taken() target/arm: Make v7M exception entry stack push check MPU target/arm: Make v7m_push_callee_stack() honour MPU target/arm: Make exception vector loads honour the SAU target/arm: Handle exceptions during exception stack pop target/arm/translate.c: Fix missing 'break' for TT insns hw/core/generic-loader: Allow PC to be set on command line Richard Henderson (5): target/arm: Expand vector registers for SVE target/arm: Add predicate registers for SVE target/arm: Add SVE to migration state target/arm: Add ZCR_ELx target/arm: Add SVE state to TB->FLAGS hw/intc/Makefile.objs | 2 +- hw/misc/Makefile.objs | 4 + hw/usb/Makefile.objs | 1 + hw/sd/sdhci-internal.h | 23 ++ include/hw/intc/imx_gpcv2.h | 22 ++ include/hw/misc/imx2_wdt.h | 33 +++ include/hw/misc/imx7_ccm.h | 139 +++++++++++ include/hw/misc/imx7_gpr.h | 28 +++ include/hw/misc/imx7_snvs.h | 35 +++ include/hw/sd/sdhci.h | 13 ++ include/hw/timer/imx_gpt.h | 1 + include/hw/usb/chipidea.h | 16 ++ target/arm/cpu.h | 120 ++++++++-- target/arm/helper.h | 12 + target/arm/kvm_arm.h | 4 + target/arm/translate.h | 2 + hw/arm/boot.c | 65 ++++++ hw/arm/fsl-imx6.c | 2 +- hw/arm/virt.c | 61 ----- hw/core/generic-loader.c | 2 +- hw/intc/armv7m_nvic.c | 98 +++++++- hw/intc/imx_gpcv2.c | 125 ++++++++++ hw/misc/imx2_wdt.c | 89 +++++++ hw/misc/imx7_ccm.c | 277 ++++++++++++++++++++++ hw/misc/imx7_gpr.c | 124 ++++++++++ hw/misc/imx7_snvs.c | 83 +++++++ hw/sd/sdhci.c | 230 ++++++++++++++++++- hw/timer/imx_gpt.c | 25 ++ hw/usb/chipidea.c | 176 ++++++++++++++ linux-user/elfload.c | 19 ++ target/arm/cpu64.c | 4 + target/arm/crypto_helper.c | 277 +++++++++++++++++++++- target/arm/helper.c | 548 +++++++++++++++++++++++++++++++++++++------- target/arm/machine.c | 88 ++++++- target/arm/translate-a64.c | 350 +++++++++++++++++++++++++++- target/arm/translate.c | 8 +- hw/intc/trace-events | 5 +- hw/misc/trace-events | 4 + 38 files changed, 2928 insertions(+), 187 deletions(-) create mode 100644 include/hw/intc/imx_gpcv2.h create mode 100644 include/hw/misc/imx2_wdt.h create mode 100644 include/hw/misc/imx7_ccm.h create mode 100644 include/hw/misc/imx7_gpr.h create mode 100644 include/hw/misc/imx7_snvs.h create mode 100644 include/hw/usb/chipidea.h create mode 100644 hw/intc/imx_gpcv2.c create mode 100644 hw/misc/imx2_wdt.c create mode 100644 hw/misc/imx7_ccm.c create mode 100644 hw/misc/imx7_gpr.c create mode 100644 hw/misc/imx7_snvs.c create mode 100644 hw/usb/chipidea.c ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2018-02-09 11:02 Peter Maydell @ 2018-02-09 14:38 ` Peter Maydell 0 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2018-02-09 14:38 UTC (permalink / raw) To: QEMU Developers On 9 February 2018 at 11:02, Peter Maydell <peter.maydell@linaro.org> wrote: > Another lump of target-arm patches. I still have some patches in > my to-review queue, but this is a big enough set that I wanted > to send it out. > > thanks > -- PMM > > The following changes since commit 04bb7fe2bf55bdf66d5b7a5a719b40bbb4048178: > > Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20180208' into staging (2018-02-08 17:41:15 +0000) > > are available in the Git repository at: > > git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20180209 > > for you to fetch changes up to bbba7757bacc9f890a3f028d328b4b429dbe78ec: > > hw/core/generic-loader: Allow PC to be set on command line (2018-02-09 10:55:40 +0000) > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 00/30] target-arm queue @ 2017-02-27 18:04 Peter Maydell 2017-02-27 19:14 ` no-reply 2017-02-28 12:07 ` Peter Maydell 0 siblings, 2 replies; 45+ messages in thread From: Peter Maydell @ 2017-02-27 18:04 UTC (permalink / raw) To: qemu-devel ARM queu; includes all the NVIC rewrite patches. The QOMify-armv7m patchset hasn't got enough review just yet but I may be able to sneak it in before freeze tomorrow if it gets review. Didn't want to hold this lot up waiting, anyway. thanks -- PMM The following changes since commit 8f2d7c341184a95d05476ea3c45dbae2b9ddbe51: Merge remote-tracking branch 'remotes/berrange/tags/pull-qcrypto-2017-02-27-1' into staging (2017-02-27 15:33:21 +0000) are available in the git repository at: git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20170227 for you to fetch changes up to 94d5bcf5a7f3799660b62098a5183f161aad0601: hw/arm/exynos: Fix proper mapping of CPUs by providing real cluster ID (2017-02-27 17:23:16 +0000) ---------------------------------------------------------------- target-arm queue: * raspi2: implement RNG module, GPIO and new SD card controller (sufficient to boot new raspbian kernels) * sdhci: bugfixes for block transfers * virt: fix cpu object reference leak * Add missing fp_access_check() to aarch64 crypto instructions * cputlb: Don't assume do_unassigned_access() never returns * virt: Add a user option to disallow ITS instantiation * i.MX timers: fix reset handling * ARMv7M NVIC: rewrite to fix broken priority handling and masking * exynos: Fix proper mapping of CPUs by providing real cluster ID * exynos: Fix Linux kernel division by zero for PLLs ---------------------------------------------------------------- Clement Deschamps (4): bcm2835_sdhost: add bcm2835 sdhost controller hw/sd: add card-reparenting function bcm2835_gpio: add bcm2835 gpio controller bcm2835: add sdhost and gpio controllers Eric Auger (1): hw/arm/virt: Add a user option to disallow ITS instantiation Igor Mammedov (1): hw/arm/virt: fix cpu object reference leak Krzysztof Kozlowski (2): hw/arm/exynos: Fix Linux kernel division by zero for PLLs hw/arm/exynos: Fix proper mapping of CPUs by providing real cluster ID Kurban Mallachiev (1): ARM i.MX timers: fix reset handling Marcin Chojnacki (1): target-arm: Implement BCM2835 hardware RNG Michael Davidsaver (5): armv7m: Rewrite NVIC to not use any GIC code arm: gic: Remove references to NVIC armv7m: Escalate exceptions to HardFault if necessary armv7m: Simpler and faster exception start armv7m: VECTCLRACTIVE and VECTRESET are UNPREDICTABLE Nick Reilly (1): Add missing fp_access_check() to aarch64 crypto instructions Peter Maydell (10): bcm2835_rng: Use qcrypto_random_bytes() rather than rand() cputlb: Don't assume do_unassigned_access() never returns armv7m: Rename nvic_state to NVICState armv7m: Implement reading and writing of PRIGROUP armv7m: Fix condition check for taking exceptions armv7m: Remove unused armv7m_nvic_acknowledge_irq() return value armv7m: Extract "exception taken" code into functions armv7m: Check exception return consistency armv7m: Raise correct kind of UsageFault for attempts to execute ARM code armv7m: Allow SHCSR writes to change pending and active bits Prasad J Pandit (4): sd: sdhci: mask transfer mode register value sd: sdhci: check transfer mode register in multi block transfer sd: sdhci: conditionally invoke multi block transfer sd: sdhci: Remove block count enable check in single block transfers hw/gpio/Makefile.objs | 1 + hw/misc/Makefile.objs | 3 +- hw/sd/Makefile.objs | 1 + hw/intc/gic_internal.h | 7 +- include/hw/arm/bcm2835_peripherals.h | 6 + include/hw/arm/virt.h | 1 + include/hw/gpio/bcm2835_gpio.h | 39 ++ include/hw/misc/bcm2835_rng.h | 27 ++ include/hw/sd/bcm2835_sdhost.h | 48 ++ include/hw/sd/sd.h | 11 + target/arm/cpu.h | 23 +- cputlb.c | 15 +- hw/arm/bcm2835_peripherals.c | 58 ++- hw/arm/exynos4210.c | 18 + hw/arm/virt.c | 32 +- hw/gpio/bcm2835_gpio.c | 353 ++++++++++++++ hw/intc/arm_gic.c | 31 +- hw/intc/arm_gic_common.c | 23 +- hw/intc/armv7m_nvic.c | 885 ++++++++++++++++++++++++++++------- hw/misc/bcm2835_rng.c | 149 ++++++ hw/misc/exynos4210_clk.c | 164 +++++++ hw/sd/bcm2835_sdhost.c | 429 +++++++++++++++++ hw/sd/core.c | 30 ++ hw/sd/sdhci.c | 25 +- hw/timer/imx_gpt.c | 33 +- linux-user/main.c | 1 + target/arm/cpu.c | 16 +- target/arm/helper.c | 245 +++++++--- target/arm/translate-a64.c | 12 + target/arm/translate.c | 8 +- hw/intc/trace-events | 15 + 31 files changed, 2376 insertions(+), 333 deletions(-) create mode 100644 include/hw/gpio/bcm2835_gpio.h create mode 100644 include/hw/misc/bcm2835_rng.h create mode 100644 include/hw/sd/bcm2835_sdhost.h create mode 100644 hw/gpio/bcm2835_gpio.c create mode 100644 hw/misc/bcm2835_rng.c create mode 100644 hw/misc/exynos4210_clk.c create mode 100644 hw/sd/bcm2835_sdhost.c ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2017-02-27 18:04 Peter Maydell @ 2017-02-27 19:14 ` no-reply 2017-02-28 12:07 ` Peter Maydell 1 sibling, 0 replies; 45+ messages in thread From: no-reply @ 2017-02-27 19:14 UTC (permalink / raw) To: peter.maydell; +Cc: famz, qemu-devel Hi, This series failed build test on s390x host. Please find the details below. Message-id: 1488218699-31035-1-git-send-email-peter.maydell@linaro.org Type: series Subject: [Qemu-devel] [PULL 00/30] target-arm queue === TEST SCRIPT BEGIN === #!/bin/bash # Testing script will be invoked under the git checkout with # HEAD pointing to a commit that has the patches applied on top of "base" # branch set -e echo "=== ENV ===" env echo "=== PACKAGES ===" rpm -qa echo "=== TEST BEGIN ===" CC=$HOME/bin/cc INSTALL=$PWD/install BUILD=/var/tmp/patchew-qemu-build echo -n "Using CC: " realpath $CC test -e $BUILD && rm -rf $BUILD mkdir -p $BUILD $INSTALL SRC=$PWD cd $BUILD $SRC/configure --cc=$CC --prefix=$INSTALL make -j4 make check -j4 make install === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/1488218699-31035-1-git-send-email-peter.maydell@linaro.org -> patchew/1488218699-31035-1-git-send-email-peter.maydell@linaro.org Switched to a new branch 'test' fac2e4e hw/arm/exynos: Fix proper mapping of CPUs by providing real cluster ID a19dfed hw/arm/exynos: Fix Linux kernel division by zero for PLLs c49b077 bcm2835: add sdhost and gpio controllers 119282b bcm2835_gpio: add bcm2835 gpio controller d874e6e hw/sd: add card-reparenting function dcbc5d0 bcm2835_sdhost: add bcm2835 sdhost controller 1c9fe401 armv7m: Allow SHCSR writes to change pending and active bits ec123a6 armv7m: Raise correct kind of UsageFault for attempts to execute ARM code de24aef armv7m: Check exception return consistency aba0f63 armv7m: Extract "exception taken" code into functions 041a279 armv7m: VECTCLRACTIVE and VECTRESET are UNPREDICTABLE 87177eb armv7m: Simpler and faster exception start 8b1fa57 armv7m: Remove unused armv7m_nvic_acknowledge_irq() return value 76d49a0 armv7m: Escalate exceptions to HardFault if necessary b554bb3 arm: gic: Remove references to NVIC d9368b7 armv7m: Fix condition check for taking exceptions c44de81 armv7m: Rewrite NVIC to not use any GIC code aa72c10 armv7m: Implement reading and writing of PRIGROUP 086d1be armv7m: Rename nvic_state to NVICState a5cf037 ARM i.MX timers: fix reset handling 4aaa21e hw/arm/virt: Add a user option to disallow ITS instantiation 45db604 cputlb: Don't assume do_unassigned_access() never returns 65c7e7f Add missing fp_access_check() to aarch64 crypto instructions f1d750d hw/arm/virt: fix cpu object reference leak 816a1bb sd: sdhci: Remove block count enable check in single block transfers 3ea47a5 sd: sdhci: conditionally invoke multi block transfer 6d6aac0 sd: sdhci: check transfer mode register in multi block transfer 4365104 sd: sdhci: mask transfer mode register value 3c3f31d bcm2835_rng: Use qcrypto_random_bytes() rather than rand() f58b171 target-arm: Implement BCM2835 hardware RNG === OUTPUT BEGIN === === ENV === XDG_SESSION_ID=38554 SHELL=/bin/sh USER=fam PATCHEW=/home/fam/patchew/patchew-cli -s http://patchew.org --nodebug PATH=/usr/bin:/bin PWD=/var/tmp/patchew-tester-tmp-_t3ms3un/src LANG=en_US.UTF-8 HOME=/home/fam SHLVL=2 LOGNAME=fam DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1012/bus XDG_RUNTIME_DIR=/run/user/1012 _=/usr/bin/env === PACKAGES === gpg-pubkey-873529b8-54e386ff xz-libs-5.2.2-2.fc24.s390x libacl-2.2.52-11.fc24.s390x libxshmfence-1.2-3.fc24.s390x cdparanoia-libs-10.2-21.fc24.s390x ustr-1.0.4-21.fc24.s390x giflib-4.1.6-15.fc24.s390x libusb-0.1.5-7.fc24.s390x trousers-lib-0.3.13-6.fc24.s390x readline-devel-6.3-8.fc24.s390x python-srpm-macros-3-10.fc25.noarch ncurses-base-6.0-6.20160709.fc25.noarch gmp-6.1.1-1.fc25.s390x chkconfig-1.8-1.fc25.s390x libidn-1.33-1.fc25.s390x file-5.28-4.fc25.s390x slang-2.3.0-7.fc25.s390x avahi-libs-0.6.32-4.fc25.s390x libsemanage-2.5-8.fc25.s390x perl-Unicode-Normalize-1.25-365.fc25.s390x perl-libnet-3.10-1.fc25.noarch perl-Thread-Queue-3.11-1.fc25.noarch perl-podlators-4.09-1.fc25.noarch jasper-libs-1.900.13-1.fc25.s390x graphite2-1.3.6-1.fc25.s390x libblkid-2.28.2-1.fc25.s390x pkgconfig-0.29.1-1.fc25.s390x dbus-python-1.2.4-2.fc25.s390x alsa-lib-1.1.1-2.fc25.s390x libgnome-keyring-3.12.0-7.fc25.s390x yum-metadata-parser-1.1.4-17.fc25.s390x python3-3.5.2-4.fc25.s390x python3-slip-dbus-0.6.4-4.fc25.noarch python2-cssselect-0.9.2-1.fc25.noarch python-backports-1.0-8.fc25.s390x python-magic-5.28-4.fc25.noarch python-pycparser-2.14-7.fc25.noarch python-fedora-0.8.0-2.fc25.noarch createrepo_c-libs-0.10.0-6.fc25.s390x initscripts-9.69-1.fc25.s390x plymouth-scripts-0.9.3-0.6.20160620git0e65b86c.fc25.s390x cronie-1.5.1-2.fc25.s390x python2-librepo-1.7.18-3.fc25.s390x wget-1.18-2.fc25.s390x python3-dnf-plugins-core-0.1.21-4.fc25.noarch at-spi2-core-2.22.0-1.fc25.s390x libXv-1.0.11-1.fc25.s390x dhcp-client-4.3.5-1.fc25.s390x python2-dnf-plugins-core-0.1.21-4.fc25.noarch parted-3.2-21.fc25.s390x python2-ndg_httpsclient-0.4.0-4.fc25.noarch bash-completion-2.4-1.fc25.noarch btrfs-progs-4.6.1-1.fc25.s390x texinfo-6.1-3.fc25.s390x perl-Filter-1.55-366.fc25.s390x flex-2.6.0-3.fc25.s390x libgcc-6.3.1-1.fc25.s390x glib2-2.50.2-1.fc25.s390x dbus-libs-1.11.8-1.fc25.s390x libgomp-6.3.1-1.fc25.s390x colord-libs-1.3.4-1.fc25.s390x perl-Encode-2.88-5.fc25.s390x gstreamer1-1.10.2-1.fc25.s390x cracklib-2.9.6-4.fc25.s390x rpm-build-libs-4.13.0-6.fc25.s390x libobjc-6.3.1-1.fc25.s390x pcre-devel-8.40-1.fc25.s390x mariadb-config-10.1.20-1.fc25.s390x gcc-6.3.1-1.fc25.s390x mesa-libGL-13.0.3-1.fc25.s390x python3-dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch bind-libs-9.10.4-4.P5.fc25.s390x python-osbs-client-0.33-3.fc25.noarch NetworkManager-1.4.4-3.fc25.s390x audit-2.7.1-1.fc25.s390x glibc-static-2.24-4.fc25.s390x perl-Pod-Simple-3.35-1.fc25.noarch gdb-7.12-36.fc25.s390x python2-simplejson-3.10.0-1.fc25.s390x python3-sssdconfig-1.14.2-2.fc25.noarch texlive-lib-2016-30.20160520.fc25.s390x boost-random-1.60.0-10.fc25.s390x brltty-5.4-2.fc25.s390x libref_array-0.1.5-29.fc25.s390x librados2-10.2.4-2.fc25.s390x gnutls-dane-3.5.8-1.fc25.s390x systemtap-client-3.1-0.20160725git91bfb36.fc25.s390x libXrender-devel-0.9.10-1.fc25.s390x libXi-devel-1.7.8-2.fc25.s390x texlive-pdftex-doc-svn41149-30.fc25.noarch tcp_wrappers-7.6-83.fc25.s390x javapackages-tools-4.7.0-6.1.fc25.noarch texlive-kpathsea-bin-svn40473-30.20160520.fc25.s390x texlive-url-svn32528.3.4-30.fc25.noarch texlive-latex-fonts-svn28888.0-30.fc25.noarch texlive-mptopdf-bin-svn18674.0-30.20160520.fc25.noarch texlive-underscore-svn18261.0-30.fc25.noarch texlive-subfig-svn15878.1.3-30.fc25.noarch texlive-dvipdfmx-def-svn40328-30.fc25.noarch texlive-plain-svn40274-30.fc25.noarch texlive-texlive-scripts-svn41433-30.fc25.noarch texlive-fancyref-svn15878.0.9c-30.fc25.noarch texlive-csquotes-svn39538-30.fc25.noarch texlive-pxfonts-svn15878.0-30.fc25.noarch texlive-cite-svn36428.5.5-30.fc25.noarch texlive-section-svn20180.0-30.fc25.noarch texlive-pslatex-svn16416.0-30.fc25.noarch texlive-tex-gyre-math-svn41264-30.fc25.noarch texlive-knuth-local-svn38627-30.fc25.noarch texlive-type1cm-svn21820.0-30.fc25.noarch texlive-finstrut-svn21719.0.5-30.fc25.noarch texlive-ucharcat-svn38907-30.fc25.noarch texlive-environ-svn33821.0.3-30.fc25.noarch texlive-eso-pic-svn37925.2.0g-30.fc25.noarch texlive-filehook-svn24280.0.5d-30.fc25.noarch texlive-luatexbase-svn38550-30.fc25.noarch texlive-pst-text-svn15878.1.00-30.fc25.noarch texlive-pst-tree-svn24142.1.12-30.fc25.noarch texlive-latex-bin-bin-svn14050.0-30.20160520.fc25.noarch texlive-metalogo-svn18611.0.12-30.fc25.noarch texlive-cm-super-svn15878.0-30.fc25.noarch texlive-xetex-svn41438-30.fc25.noarch keyutils-1.5.9-8.fc24.s390x libcephfs_jni1-10.2.4-2.fc25.s390x libcom_err-devel-1.43.3-1.fc25.s390x mesa-libGLES-devel-13.0.3-1.fc25.s390x graphite2-devel-1.3.6-1.fc25.s390x nettle-devel-3.3-1.fc25.s390x lzo-minilzo-2.08-8.fc24.s390x bzip2-devel-1.0.6-21.fc25.s390x libusbx-devel-1.0.21-1.fc25.s390x SDL2-devel-2.0.5-2.fc25.s390x virglrenderer-devel-0.5.0-1.20160411git61846f92f.fc25.s390x glib2-static-2.50.2-1.fc25.s390x mesa-libgbm-devel-13.0.3-1.fc25.s390x acpica-tools-20160831-1.fc25.s390x gdk-pixbuf2-2.36.4-1.fc25.s390x nss-softokn-3.28.1-1.0.fc25.s390x python3-dnf-1.1.10-5.fc25.noarch python-gluster-3.9.1-1.fc25.noarch perl-IO-1.36-382.fc25.s390x glusterfs-devel-3.9.1-1.fc25.s390x gtk3-3.22.7-1.fc25.s390x vim-enhanced-8.0.206-1.fc25.s390x nss-tools-3.28.1-1.3.fc25.s390x libmicrohttpd-0.9.52-1.fc25.s390x gpg-pubkey-a29cb19c-53bcbba6 libaio-0.3.110-6.fc24.s390x m4-1.4.17-9.fc24.s390x libfontenc-1.1.3-3.fc24.s390x lzo-2.08-8.fc24.s390x isl-0.14-5.fc24.s390x libXau-1.0.8-6.fc24.s390x liblockfile-1.09-4.fc24.s390x linux-atm-libs-2.5.1-14.fc24.s390x sg3_utils-1.41-3.fc24.s390x libXext-1.3.3-4.fc24.s390x libXinerama-1.1.3-6.fc24.s390x libXxf86vm-1.1.4-3.fc24.s390x libXft-2.3.2-4.fc24.s390x ykpers-1.17.3-2.fc24.s390x bison-3.0.4-4.fc24.s390x perl-srpm-macros-1-20.fc25.noarch gawk-4.1.3-8.fc25.s390x tcp_wrappers-libs-7.6-83.fc25.s390x libwayland-client-1.12.0-1.fc25.s390x iptables-1.6.0-2.fc25.s390x perl-Exporter-5.72-366.fc25.noarch perl-Text-Tabs+Wrap-2013.0523-365.fc25.noarch perl-Error-0.17024-7.fc25.noarch perl-Term-Cap-1.17-365.fc25.noarch perl-version-0.99.17-1.fc25.s390x perl-Pod-Usage-1.69-1.fc25.noarch fftw-libs-double-3.3.5-3.fc25.s390x device-mapper-persistent-data-0.6.3-1.fc25.s390x krb5-libs-1.14.4-4.fc25.s390x system-python-libs-3.5.2-4.fc25.s390x net-snmp-libs-5.7.3-13.fc25.s390x libssh2-1.8.0-1.fc25.s390x libgusb-0.2.9-1.fc25.s390x ModemManager-glib-1.6.4-1.fc25.s390x python3-six-1.10.0-3.fc25.noarch newt-python3-0.52.19-2.fc25.s390x python3-pysocks-1.5.6-5.fc25.noarch python-chardet-2.3.0-1.fc25.noarch python-munch-2.0.4-3.fc25.noarch python2-cffi-1.7.0-2.fc25.s390x python-bugzilla-1.2.2-4.fc25.noarch openldap-2.4.44-2.fc25.s390x libedit-3.1-16.20160618cvs.fc25.s390x gc-devel-7.4.4-1.fc25.s390x python-pycurl-7.43.0-4.fc25.s390x createrepo_c-0.10.0-6.fc25.s390x plymouth-0.9.3-0.6.20160620git0e65b86c.fc25.s390x device-mapper-multipath-libs-0.4.9-83.fc25.s390x ebtables-2.0.10-21.fc25.s390x python3-librepo-1.7.18-3.fc25.s390x libwmf-lite-0.2.8.4-49.fc25.s390x net-snmp-5.7.3-13.fc25.s390x yum-3.4.3-510.fc25.noarch dnf-plugins-core-0.1.21-4.fc25.noarch at-spi2-atk-2.22.0-1.fc25.s390x ImageMagick-libs-6.9.3.0-3.fc25.s390x dhcp-common-4.3.5-1.fc25.noarch kernel-modules-4.8.8-300.fc25.s390x dracut-config-rescue-044-78.fc25.s390x sendmail-8.15.2-7.fc25.s390x avahi-autoipd-0.6.32-4.fc25.s390x teamd-1.26-1.fc25.s390x kernel-devel-4.8.8-300.fc25.s390x mozjs17-17.0.0-16.fc25.s390x libselinux-2.5-13.fc25.s390x libcrypt-nss-2.24-4.fc25.s390x systemd-libs-231-12.fc25.s390x libgo-6.3.1-1.fc25.s390x libgo-devel-6.3.1-1.fc25.s390x NetworkManager-libnm-1.4.4-3.fc25.s390x cpp-6.3.1-1.fc25.s390x rpm-plugin-selinux-4.13.0-6.fc25.s390x pcre-utf32-8.40-1.fc25.s390x packagedb-cli-2.14-1.fc25.noarch python2-pyparsing-2.1.10-1.fc25.noarch glibc-devel-2.24-4.fc25.s390x libdrm-2.4.74-1.fc25.s390x kernel-modules-4.9.3-200.fc25.s390x cairo-gobject-1.14.8-1.fc25.s390x bind99-license-9.9.9-4.P5.fc25.noarch pyrpkg-1.47-5.fc25.noarch emacs-25.1-3.fc25.s390x firewalld-0.4.4.2-2.fc25.noarch pyparsing-2.1.10-1.fc25.noarch kernel-devel-4.9.3-200.fc25.s390x libproxy-0.4.14-1.fc25.s390x ethtool-4.8-1.fc25.s390x python3-pyparsing-2.1.10-1.fc25.noarch xorg-x11-proto-devel-7.7-20.fc25.noarch brlapi-0.6.5-2.fc25.s390x libcollection-0.7.0-29.fc25.s390x librados-devel-10.2.4-2.fc25.s390x libcephfs-devel-10.2.4-2.fc25.s390x libXdamage-devel-1.1.4-8.fc24.s390x libXinerama-devel-1.1.3-6.fc24.s390x quota-4.03-7.fc25.s390x texlive-texlive-common-doc-svn40682-30.fc25.noarch texlive-metafont-bin-svn40987-30.20160520.fc25.s390x texlive-ifluatex-svn41346-30.fc25.noarch texlive-dvips-bin-svn40987-30.20160520.fc25.s390x texlive-marvosym-svn29349.2.2a-30.fc25.noarch texlive-graphics-cfg-svn40269-30.fc25.noarch texlive-carlisle-svn18258.0-30.fc25.noarch texlive-glyphlist-svn28576.0-30.fc25.noarch texlive-tex-bin-svn40987-30.20160520.fc25.s390x texlive-texlive-scripts-bin-svn29741.0-30.20160520.fc25.noarch texlive-mathtools-svn38833-30.fc25.noarch texlive-euro-svn22191.1.1-30.fc25.noarch texlive-palatino-svn31835.0-30.fc25.noarch texlive-anysize-svn15878.0-30.fc25.noarch texlive-sansmath-svn17997.1.1-30.fc25.noarch texlive-mfnfss-svn19410.0-30.fc25.noarch texlive-mathpazo-svn15878.1.003-30.fc25.noarch texlive-knuth-lib-svn35820.0-30.fc25.noarch texlive-updmap-map-svn41159-30.fc25.noarch texlive-beton-svn15878.0-30.fc25.noarch texlive-xetexconfig-svn41133-30.fc25.noarch texlive-trimspaces-svn15878.1.1-30.fc25.noarch texlive-memoir-svn41203-30.fc25.noarch texlive-latex-svn40218-30.fc25.noarch texlive-lualatex-math-svn40621-30.fc25.noarch texlive-pst-grad-svn15878.1.06-30.fc25.noarch texlive-pst-tools-svn34067.0.05-30.fc25.noarch texlive-amscls-svn36804.0-30.fc25.noarch texlive-tex-gyre-svn18651.2.004-30.fc25.noarch texlive-ltxmisc-svn21927.0-30.fc25.noarch texlive-xetex-bin-svn41091-30.20160520.fc25.s390x lua-posix-33.3.1-3.fc25.s390x gssproxy-0.5.1-3.fc25.s390x java-1.8.0-openjdk-1.8.0.111-5.b16.fc25.s390x libverto-devel-0.2.6-6.fc24.s390x mesa-libGLES-13.0.3-1.fc25.s390x p11-kit-devel-0.23.2-2.fc24.s390x snappy-1.1.3-2.fc24.s390x gnutls-devel-3.5.8-1.fc25.s390x cairo-gobject-devel-1.14.8-1.fc25.s390x usbredir-devel-0.7.1-2.fc24.s390x systemtap-3.1-0.20160725git91bfb36.fc25.s390x bluez-libs-devel-5.43-1.fc25.s390x libcurl-devel-7.51.0-4.fc25.s390x cyrus-sasl-devel-2.1.26-26.2.fc24.s390x python-libs-2.7.13-1.fc25.s390x nss-sysinit-3.28.1-1.3.fc25.s390x dnf-1.1.10-5.fc25.noarch glusterfs-extra-xlators-3.9.1-1.fc25.s390x perl-5.24.1-382.fc25.s390x linux-firmware-20161205-69.git91ddce49.fc25.noarch libX11-devel-1.6.4-4.fc25.s390x kernel-devel-4.9.5-200.fc25.s390x python-devel-2.7.13-1.fc25.s390x kernel-headers-4.9.5-200.fc25.s390x gpg-pubkey-efe550f5-5220ba41 python-async-0.6.1-9.fc22.s390x gpg-pubkey-81b46521-55b3ca9a dejavu-sans-mono-fonts-2.35-3.fc24.noarch filesystem-3.2-37.fc24.s390x popt-1.16-7.fc24.s390x libffi-3.1-9.fc24.s390x cyrus-sasl-lib-2.1.26-26.2.fc24.s390x xz-5.2.2-2.fc24.s390x keyutils-libs-1.5.9-8.fc24.s390x libnfnetlink-1.0.1-8.fc24.s390x libnetfilter_conntrack-1.0.4-6.fc24.s390x libtheora-1.1.1-14.fc24.s390x xml-common-0.6.3-44.fc24.noarch autoconf-2.69-22.fc24.noarch libpipeline-1.4.1-2.fc24.s390x libXt-1.1.5-3.fc24.s390x kbd-legacy-2.0.3-3.fc24.noarch ghostscript-fonts-5.50-35.fc24.noarch libcroco-0.6.11-2.fc24.s390x pinentry-0.9.7-2.fc24.s390x libXevie-1.0.3-11.fc24.s390x pth-2.0.7-27.fc24.s390x python2-rpm-macros-3-10.fc25.noarch libsepol-2.5-10.fc25.s390x libcap-2.25-2.fc25.s390x sqlite-libs-3.14.2-1.fc25.s390x mpfr-3.1.5-1.fc25.s390x libxcb-1.12-1.fc25.s390x libicu-57.1-4.fc25.s390x perl-Carp-1.40-365.fc25.noarch perl-IO-Socket-IP-0.38-1.fc25.noarch libmnl-1.0.4-1.fc25.s390x perl-Unicode-EastAsianWidth-1.33-8.fc25.noarch perl-Getopt-Long-2.49.1-1.fc25.noarch libwayland-cursor-1.12.0-1.fc25.s390x coreutils-common-8.25-15.fc25.s390x libmount-2.28.2-1.fc25.s390x python2-decorator-4.0.10-3.fc25.noarch avahi-glib-0.6.32-4.fc25.s390x python3-pip-8.1.2-2.fc25.noarch python3-libcomps-0.1.7-5.fc25.s390x python-slip-0.6.4-4.fc25.noarch python-krbV-1.0.90-12.fc25.s390x python2-libcomps-0.1.7-5.fc25.s390x python2-urllib3-1.15.1-3.fc25.noarch fipscheck-1.4.1-11.fc25.s390x gc-7.4.4-1.fc25.s390x libndp-1.6-1.fc25.s390x libsolv-0.6.24-1.fc25.s390x gnupg2-2.1.13-2.fc25.s390x geoclue2-2.4.4-1.fc25.s390x s390utils-cmsfs-1.36.0-1.fc25.s390x libXfixes-5.0.3-1.fc25.s390x libXi-1.7.8-2.fc25.s390x adwaita-icon-theme-3.22.0-1.fc25.noarch dconf-0.26.0-1.fc25.s390x ncurses-devel-6.0-6.20160709.fc25.s390x newt-python-0.52.19-2.fc25.s390x perl-Test-Harness-3.36-367.fc25.noarch valgrind-3.12.0-1.fc25.s390x dejagnu-1.6-1.fc25.noarch audit-libs-2.7.1-1.fc25.s390x libstdc++-devel-6.3.1-1.fc25.s390x emacs-filesystem-25.1-3.fc25.noarch libdb-utils-5.3.28-16.fc25.s390x libidn2-0.11-1.fc25.s390x python3-rpm-4.13.0-6.fc25.s390x gnutls-3.5.8-1.fc25.s390x python-beautifulsoup4-4.5.3-1.fc25.noarch qt5-srpm-macros-5.7.1-1.fc25.noarch elfutils-default-yama-scope-0.168-1.fc25.noarch device-mapper-1.02.136-3.fc25.s390x device-mapper-event-1.02.136-3.fc25.s390x systemd-container-231-12.fc25.s390x python3-distro-1.0.1-2.fc25.noarch fedpkg-1.26-4.fc25.noarch gstreamer1-plugins-base-1.10.2-1.fc25.s390x subversion-1.9.5-1.fc25.s390x perl-Module-CoreList-5.20170115-1.fc25.noarch perl-Class-Inspector-1.31-2.fc25.noarch libtool-ltdl-2.4.6-13.fc25.s390x python2-sssdconfig-1.14.2-2.fc25.noarch glib2-devel-2.50.2-1.fc25.s390x poppler-0.45.0-2.fc25.s390x libbasicobjects-0.1.1-29.fc25.s390x libevent-2.0.22-1.fc25.s390x libradosstriper1-10.2.4-2.fc25.s390x atk-devel-2.22.0-1.fc25.s390x libXxf86vm-devel-1.1.4-3.fc24.s390x libev-4.24-1.fc25.s390x gsm-1.0.16-1.fc25.s390x libnfsidmap-0.27-0.fc25.s390x zziplib-0.13.62-7.fc24.s390x texlive-metafont-svn40793-30.fc25.noarch texlive-booktabs-svn40846-30.fc25.noarch texlive-dvips-svn41149-30.fc25.noarch texlive-zapfding-svn31835.0-30.fc25.noarch texlive-graphics-svn41015-30.fc25.noarch texlive-latexconfig-svn40274-30.fc25.noarch texlive-gsftopk-bin-svn40473-30.20160520.fc25.s390x texlive-tex-svn40793-30.fc25.noarch texlive-xdvi-bin-svn40750-30.20160520.fc25.s390x texlive-qstest-svn15878.0-30.fc25.noarch texlive-avantgar-svn31835.0-30.fc25.noarch texlive-ncntrsbk-svn31835.0-30.fc25.noarch texlive-cm-svn32865.0-30.fc25.noarch texlive-rcs-svn15878.0-30.fc25.noarch texlive-fix2col-svn38770-30.fc25.noarch texlive-lm-math-svn36915.1.959-30.fc25.noarch texlive-hyphen-base-svn41138-30.fc25.noarch texlive-unicode-data-svn39808-30.fc25.noarch texlive-luatex-svn40963-30.fc25.noarch texlive-xetex-def-svn40327-30.fc25.noarch texlive-varwidth-svn24104.0.92-30.fc25.noarch texlive-l3kernel-svn41246-30.fc25.noarch texlive-hyperref-svn41396-30.fc25.noarch texlive-unicode-math-svn38462-30.fc25.noarch texlive-fancyvrb-svn18492.2.8-30.fc25.noarch texlive-pst-plot-svn41242-30.fc25.noarch texlive-rotating-svn16832.2.16b-30.fc25.noarch texlive-pdfpages-svn40638-30.fc25.noarch texlive-ae-svn15878.1.4-30.fc25.noarch libpaper-1.1.24-12.fc24.s390x texlive-collection-latexrecommended-svn35765.0-30.20160520.fc25.noarch libini_config-1.3.0-29.fc25.s390x xorg-x11-fonts-Type1-7.5-16.fc24.noarch pcre2-devel-10.22-8.fc25.s390x gnutls-c++-3.5.8-1.fc25.s390x systemtap-devel-3.1-0.20160725git91bfb36.fc25.s390x libtasn1-devel-4.10-1.fc25.s390x pango-devel-1.40.3-1.fc25.s390x vte291-devel-0.46.1-1.fc25.s390x snappy-devel-1.1.3-2.fc24.s390x brlapi-devel-0.6.5-2.fc25.s390x man-pages-4.06-3.fc25.noarch libcap-ng-devel-0.7.8-1.fc25.s390x glusterfs-3.9.1-1.fc25.s390x nss-util-devel-3.28.1-1.0.fc25.s390x dnf-conf-1.1.10-5.fc25.noarch libxkbcommon-devel-0.7.1-1.fc25.s390x perl-macros-5.24.1-382.fc25.s390x rpcbind-0.2.4-2.fc25.s390x pulseaudio-libs-10.0-2.fc25.s390x kernel-4.9.5-200.fc25.s390x libnl3-cli-3.2.29-2.fc25.s390x tzdata-2016j-2.fc25.noarch gpg-pubkey-34ec9cba-54e38751 gpg-pubkey-030d5aed-55b577f0 basesystem-11-2.fc24.noarch libattr-2.4.47-16.fc24.s390x libmpc-1.0.2-5.fc24.s390x apr-util-1.5.4-3.fc24.s390x rsync-3.1.2-2.fc24.s390x libunistring-0.9.4-3.fc24.s390x jbigkit-libs-2.1-5.fc24.s390x pixman-0.34.0-2.fc24.s390x acl-2.2.52-11.fc24.s390x dwz-0.12-2.fc24.s390x expect-5.45-22.fc24.s390x libmodman-2.0.1-12.fc24.s390x libsigsegv-2.10-10.fc24.s390x libvisual-0.4.0-20.fc24.s390x fakeroot-libs-1.20.2-4.fc24.s390x m17n-lib-1.7.0-5.fc24.s390x libpcap-1.7.4-2.fc24.s390x libverto-0.2.6-6.fc24.s390x lsscsi-0.28-3.fc24.s390x setup-2.10.4-1.fc25.noarch rpmconf-base-1.0.18-2.fc25.noarch bash-4.3.43-4.fc25.s390x expat-2.2.0-1.fc25.s390x libxml2-2.9.3-4.fc25.s390x libgpg-error-1.24-1.fc25.s390x nspr-4.13.1-1.fc25.s390x libgcrypt-1.6.6-1.fc25.s390x file-libs-5.28-4.fc25.s390x findutils-4.6.0-8.fc25.s390x libjpeg-turbo-1.5.1-0.fc25.s390x kmod-23-1.fc25.s390x libassuan-2.4.3-1.fc25.s390x libusbx-1.0.21-1.fc25.s390x newt-0.52.19-2.fc25.s390x libxslt-1.1.28-13.fc25.s390x libmetalink-0.1.3-1.fc25.s390x perl-Socket-2.024-1.fc25.s390x perl-File-Path-2.12-365.fc25.noarch perl-MIME-Base64-3.15-365.fc25.s390x perl-HTTP-Tiny-0.070-1.fc25.noarch ncurses-6.0-6.20160709.fc25.s390x libwayland-server-1.12.0-1.fc25.s390x ipset-6.29-1.fc25.s390x perl-Text-Unidecode-1.27-3.fc25.noarch perl-Fedora-VSP-0.001-4.fc25.noarch perl-libintl-perl-1.26-1.fc25.s390x plymouth-core-libs-0.9.3-0.6.20160620git0e65b86c.fc25.s390x hunspell-1.4.1-1.fc25.s390x which-2.21-1.fc25.s390x coreutils-8.25-15.fc25.s390x python2-setuptools-25.1.1-1.fc25.noarch shadow-utils-4.2.1-11.fc25.s390x atk-2.22.0-1.fc25.s390x system-python-3.5.2-4.fc25.s390x pam-1.3.0-1.fc25.s390x python2-pyasn1-0.1.9-7.fc25.1.noarch harfbuzz-icu-1.3.2-1.fc25.s390x gsettings-desktop-schemas-3.22.0-1.fc25.s390x libsecret-0.18.5-2.fc25.s390x s390utils-iucvterm-1.36.0-1.fc25.s390x python3-setuptools-25.1.1-1.fc25.noarch python3-decorator-4.0.10-3.fc25.noarch python3-slip-0.6.4-4.fc25.noarch python3-magic-5.28-4.fc25.noarch python3-requests-2.10.0-4.fc25.noarch python3-systemd-232-1.fc25.s390x pyusb-1.0.0-2.fc25.noarch python-slip-dbus-0.6.4-4.fc25.noarch python-enum34-1.0.4-6.fc25.noarch python-lockfile-0.11.0-4.fc25.noarch python2-ply-3.8-2.fc25.noarch pyOpenSSL-16.0.0-2.fc25.noarch python2-requests-2.10.0-4.fc25.noarch pyxattr-0.5.3-8.fc25.s390x libarchive-3.2.2-1.fc25.s390x libkadm5-1.14.4-4.fc25.s390x dtc-1.4.2-1.fc25.s390x libbabeltrace-1.4.0-3.fc25.s390x guile-2.0.13-1.fc25.s390x libthai-0.1.25-1.fc25.s390x libnghttp2-1.13.0-2.fc25.s390x deltarpm-3.6-17.fc25.s390x python-urlgrabber-3.10.1-9.fc25.noarch iputils-20161105-1.fc25.s390x s390utils-mon_statd-1.36.0-1.fc25.s390x cryptsetup-libs-1.7.2-3.fc25.s390x device-mapper-multipath-0.4.9-83.fc25.s390x cronie-anacron-1.5.1-2.fc25.s390x ghostscript-core-9.20-5.fc25.s390x python3-pygpgme-0.3-18.fc25.s390x rest-0.8.0-1.fc25.s390x libreport-filesystem-2.8.0-1.fc25.s390x libXtst-1.2.3-1.fc25.s390x iso-codes-3.70-1.fc25.noarch ghc-srpm-macros-1.4.2-4.fc25.noarch adwaita-cursor-theme-3.22.0-1.fc25.noarch rpmdevtools-8.9-1.fc25.noarch kernel-4.8.8-300.fc25.s390x python-dnf-plugins-extras-migrate-0.0.12-4.fc25.noarch s390utils-1.36.0-1.fc25.s390x authconfig-6.2.10-14.fc25.s390x fedora-cert-0.6.0.1-1.fc25.noarch glibc-2.24-4.fc25.s390x elfutils-libelf-0.168-1.fc25.s390x libstdc++-6.3.1-1.fc25.s390x perl-Scalar-List-Utils-1.47-1.fc25.s390x gdb-headless-7.12-36.fc25.s390x bzip2-1.0.6-21.fc25.s390x bind-license-9.10.4-4.P5.fc25.noarch pcre-cpp-8.40-1.fc25.s390x perl-threads-2.12-1.fc25.s390x subversion-libs-1.9.5-1.fc25.s390x libss-1.43.3-1.fc25.s390x shared-mime-info-1.8-1.fc25.s390x libselinux-utils-2.5-13.fc25.s390x libgfortran-6.3.1-1.fc25.s390x rpm-4.13.0-6.fc25.s390x python2-rpm-4.13.0-6.fc25.s390x policycoreutils-2.5-19.fc25.s390x libtasn1-4.10-1.fc25.s390x mesa-libwayland-egl-13.0.3-1.fc25.s390x pigz-2.3.4-1.fc25.s390x koji-1.11.0-1.fc25.noarch python3-enchant-1.6.8-1.fc25.noarch mariadb-common-10.1.20-1.fc25.s390x firewalld-filesystem-0.4.4.2-2.fc25.noarch systemd-231-12.fc25.s390x device-mapper-libs-1.02.136-3.fc25.s390x systemd-udev-231-12.fc25.s390x dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch mesa-libEGL-13.0.3-1.fc25.s390x dnsmasq-2.76-2.fc25.s390x distribution-gpg-keys-1.9-1.fc25.noarch bind-libs-lite-9.10.4-4.P5.fc25.s390x mock-1.3.3-1.fc25.noarch python2-dockerfile-parse-0.0.5-7.fc25.noarch fedora-packager-0.6.0.1-1.fc25.noarch openssl-1.0.2j-3.fc25.s390x lvm2-2.02.167-3.fc25.s390x systemd-bootchart-231-2.fc25.s390x gcc-c++-6.3.1-1.fc25.s390x texlive-base-2016-30.20160520.fc25.noarch boost-system-1.60.0-10.fc25.s390x pcre2-10.22-8.fc25.s390x libpng-devel-1.6.27-1.fc25.s390x perl-XML-Parser-2.44-5.fc25.s390x libtirpc-1.0.1-3.rc3.fc25.s390x lttng-ust-2.8.1-2.fc25.s390x libasyncns-0.8-10.fc24.s390x unbound-libs-1.5.10-1.fc25.s390x libradosstriper-devel-10.2.4-2.fc25.s390x systemtap-runtime-3.1-0.20160725git91bfb36.fc25.s390x libXau-devel-1.0.8-6.fc24.s390x libXfixes-devel-5.0.3-1.fc25.s390x mesa-libEGL-devel-13.0.3-1.fc25.s390x libXcomposite-devel-0.4.4-8.fc24.s390x libverto-libev-0.2.6-6.fc24.s390x texlive-kpathsea-doc-svn41139-30.fc25.noarch flac-libs-1.3.2-1.fc25.s390x quota-nls-4.03-7.fc25.noarch python3-html5lib-0.999-9.fc25.noarch python3-javapackages-4.7.0-6.1.fc25.noarch perl-Digest-1.17-366.fc25.noarch texlive-texlive.infra-svn41280-30.fc25.noarch texlive-tetex-svn41059-30.fc25.noarch texlive-amsfonts-svn29208.3.04-30.fc25.noarch texlive-etex-pkg-svn39355-30.fc25.noarch texlive-lm-svn28119.2.004-30.fc25.noarch texlive-fp-svn15878.0-30.fc25.noarch texlive-mptopdf-svn41282-30.fc25.noarch texlive-euler-svn17261.2.5-30.fc25.noarch texlive-setspace-svn24881.6.7a-30.fc25.noarch texlive-tools-svn40934-30.fc25.noarch texlive-colortbl-svn29803.v1.0a-30.fc25.noarch texlive-natbib-svn20668.8.31b-30.fc25.noarch texlive-bibtex-svn40768-30.fc25.noarch texlive-gsftopk-svn40768-30.fc25.noarch texlive-mfware-svn40768-30.fc25.noarch texlive-tex-ini-files-svn40533-30.fc25.noarch texlive-texconfig-bin-svn29741.0-30.20160520.fc25.noarch libXmu-1.1.2-4.fc24.s390x libXcursor-1.1.14-6.fc24.s390x kbd-misc-2.0.3-3.fc24.noarch libutempter-1.1.6-8.fc24.s390x python-kitchen-1.2.4-2.fc24.noarch polkit-libs-0.113-5.fc24.s390x libgudev-230-3.fc24.s390x popt-devel-1.16-7.fc24.s390x make-4.1-5.fc24.s390x fakeroot-1.20.2-4.fc24.s390x blktrace-1.1.0-3.fc24.s390x hicolor-icon-theme-0.15-3.fc24.noarch usermode-1.111-8.fc24.s390x kbd-2.0.3-3.fc24.s390x libaio-devel-0.3.110-6.fc24.s390x web-assets-filesystem-5-4.fc24.noarch perl-IO-Socket-SSL-2.038-1.fc25.noarch python-backports-ssl_match_hostname-3.5.0.1-3.fc25.noarch mc-4.8.18-2.fc25.s390x expat-devel-2.2.0-1.fc25.s390x automake-1.15-7.fc25.noarch perl-File-ShareDir-1.102-7.fc25.noarch lua-5.3.3-3.fc25.s390x tcl-8.6.6-1.fc25.s390x gcc-objc-6.3.1-1.fc25.s390x libselinux-devel-2.5-13.fc25.s390x e2fsprogs-1.43.3-1.fc25.s390x perl-Storable-2.56-367.fc25.s390x libstdc++-static-6.3.1-1.fc25.s390x perl-Time-Local-1.250-1.fc25.noarch libwebp-0.5.2-1.fc25.s390x xkeyboard-config-2.19-1.1.fc25.noarch python-firewall-0.4.4.2-2.fc25.noarch texlive-xdvi-svn40768-30.fc25.noarch texlive-wasy2-ps-svn35830.0-30.fc25.noarch texlive-ltabptch-svn17533.1.74d-30.fc25.noarch texlive-sauerj-svn15878.0-30.fc25.noarch texlive-bookman-svn31835.0-30.fc25.noarch texlive-courier-svn35058.0-30.fc25.noarch texlive-mflogo-font-svn36898.1.002-30.fc25.noarch texlive-rsfs-svn15878.0-30.fc25.noarch texlive-zapfchan-svn31835.0-30.fc25.noarch texlive-cmap-svn41168-30.fc25.noarch texlive-parskip-svn19963.2.0-30.fc25.noarch texlive-sepnum-svn20186.2.0-30.fc25.noarch texlive-fancyhdr-svn15878.3.1-30.fc25.noarch texlive-pspicture-svn15878.0-30.fc25.noarch texlive-fpl-svn15878.1.002-30.fc25.noarch texlive-utopia-svn15878.0-30.fc25.noarch texlive-hyph-utf8-svn41189-30.fc25.noarch texlive-lua-alt-getopt-svn29349.0.7.0-30.fc25.noarch texlive-texlive-msg-translations-svn41431-30.fc25.noarch texlive-parallel-svn15878.0-30.fc25.noarch texlive-luatex-bin-svn41091-30.20160520.fc25.s390x texlive-lineno-svn21442.4.41-30.fc25.noarch texlive-kastrup-svn15878.0-30.fc25.noarch texlive-chngcntr-svn17157.1.0a-30.fc25.noarch texlive-lualibs-svn40370-30.fc25.noarch texlive-xunicode-svn30466.0.981-30.fc25.noarch texlive-l3packages-svn41246-30.fc25.noarch texlive-pgf-svn40966-30.fc25.noarch texlive-koma-script-svn41508-30.fc25.noarch texlive-currfile-svn40725-30.fc25.noarch texlive-luaotfload-svn40902-30.fc25.noarch texlive-ifplatform-svn21156.0.4-30.fc25.noarch texlive-showexpl-svn32737.v0.3l-30.fc25.noarch texlive-pst-3d-svn17257.1.10-30.fc25.noarch texlive-pst-node-svn40743-30.fc25.noarch texlive-pstricks-add-svn40744-30.fc25.noarch texlive-pst-pdf-svn31660.1.1v-30.fc25.noarch texlive-latex-bin-svn41438-30.fc25.noarch texlive-powerdot-svn38984-30.fc25.noarch texlive-sansmathaccent-svn30187.0-30.fc25.noarch texlive-typehtml-svn17134.0-30.fc25.noarch texlive-ucs-svn35853.2.2-30.fc25.noarch teckit-2.5.1-15.fc24.s390x texlive-dvipdfmx-svn41149-30.fc25.noarch texlive-collection-latex-svn41011-30.20160520.fc25.noarch netpbm-10.76.00-2.fc25.s390x libpath_utils-0.2.1-29.fc25.s390x nfs-utils-1.3.4-1.rc3.fc25.s390x ttmkfdir-3.0.9-48.fc24.s390x libcephfs_jni-devel-10.2.4-2.fc25.s390x pcre2-utf16-10.22-8.fc25.s390x keyutils-libs-devel-1.5.9-8.fc24.s390x libicu-devel-57.1-4.fc25.s390x attr-2.4.47-16.fc24.s390x harfbuzz-devel-1.3.2-1.fc25.s390x libidn-devel-1.33-1.fc25.s390x usbredir-0.7.1-2.fc24.s390x libnfs-1.9.8-2.fc24.s390x SDL2-2.0.5-2.fc25.s390x freetype-devel-2.6.5-1.fc25.s390x cairo-devel-1.14.8-1.fc25.s390x libepoxy-devel-1.3.1-3.fc25.s390x libcacard-devel-2.5.2-2.fc24.s390x lzo-devel-2.08-8.fc24.s390x libssh2-devel-1.8.0-1.fc25.s390x pcre-static-8.40-1.fc25.s390x qemu-sanity-check-nodeps-1.1.5-5.fc24.s390x libcap-devel-2.25-2.fc25.s390x alsa-lib-devel-1.1.1-2.fc25.s390x nss-util-3.28.1-1.0.fc25.s390x glusterfs-client-xlators-3.9.1-1.fc25.s390x nss-softokn-freebl-3.28.1-1.0.fc25.s390x libnl3-3.2.29-2.fc25.s390x python3-hawkey-0.6.3-6.1.fc25.s390x git-core-doc-2.9.3-2.fc25.s390x glusterfs-fuse-3.9.1-1.fc25.s390x gdk-pixbuf2-devel-2.36.4-1.fc25.s390x perl-Errno-1.25-382.fc25.s390x git-2.9.3-2.fc25.s390x glusterfs-server-3.9.1-1.fc25.s390x kernel-modules-4.9.5-200.fc25.s390x pulseaudio-libs-glib2-10.0-2.fc25.s390x libpsl-0.17.0-1.fc25.s390x glusterfs-api-devel-3.9.1-1.fc25.s390x nss-devel-3.28.1-1.3.fc25.s390x wpa_supplicant-2.6-1.fc25.s390x xemacs-filesystem-21.5.34-19.20170114hgd0e8ec0fe015.fc25.noarch opus-1.1.3-2.fc25.s390x copy-jdk-configs-2.0-1.fc25.noarch gpg-pubkey-a0a7badb-52844296 fontpackages-filesystem-1.44-17.fc24.noarch readline-6.3-8.fc24.s390x cpio-2.12-3.fc24.s390x groff-base-1.22.3-8.fc24.s390x ilmbase-2.2.0-5.fc24.s390x p11-kit-trust-0.23.2-2.fc24.s390x OpenEXR-libs-2.2.0-5.fc24.s390x hesiod-3.2.1-6.fc24.s390x sysfsutils-2.1.0-19.fc24.s390x qrencode-libs-3.4.2-6.fc24.s390x GeoIP-1.6.9-2.fc24.s390x ocaml-srpm-macros-2-4.fc24.noarch libXcomposite-0.4.4-8.fc24.s390x procps-ng-3.3.10-11.fc24.s390x GConf2-3.2.6-16.fc24.s390x mailx-12.5-19.fc24.s390x xz-devel-5.2.2-2.fc24.s390x fedora-logos-22.0.0-3.fc24.s390x telnet-0.17-65.fc24.s390x gpg-pubkey-e372e838-56fd7943 fedora-repos-25-1.noarch ncurses-libs-6.0-6.20160709.fc25.s390x lua-libs-5.3.3-3.fc25.s390x kmod-libs-23-1.fc25.s390x libseccomp-2.3.1-1.fc25.s390x perl-parent-0.236-1.fc25.noarch libICE-1.0.9-5.fc25.s390x ipset-libs-6.29-1.fc25.s390x perl-TermReadKey-2.37-1.fc25.s390x dhcp-libs-4.3.5-1.fc25.s390x gmp-devel-6.1.1-1.fc25.s390x ncurses-c++-libs-6.0-6.20160709.fc25.s390x python-pip-8.1.2-2.fc25.noarch gzip-1.8-1.fc25.s390x harfbuzz-1.3.2-1.fc25.s390x python2-iniparse-0.4-20.fc25.noarch libfdisk-2.28.2-1.fc25.s390x python3-iniparse-0.4-20.fc25.noarch python3-gobject-base-3.22.0-1.fc25.s390x python3-kickstart-2.32-1.fc25.noarch python2-yubico-1.3.2-3.fc25.noarch python-idna-2.0-4.fc25.noarch nss-pem-1.0.2-2.fc25.s390x perl-Net-SSLeay-1.78-1.fc25.s390x krb5-workstation-1.14.4-4.fc25.s390x libepoxy-1.3.1-3.fc25.s390x drpm-0.3.0-3.fc25.s390x libsmartcols-2.28.2-1.fc25.s390x s390utils-ziomon-1.36.0-1.fc25.s390x librepo-1.7.18-3.fc25.s390x glib-networking-2.50.0-1.fc25.s390x librsvg2-2.40.16-2.fc25.s390x gnat-srpm-macros-4-1.fc25.noarch webkitgtk3-2.4.11-3.fc25.s390x libXaw-1.0.13-4.fc25.s390x sudo-1.8.18p1-1.fc25.s390x systemtap-sdt-devel-3.1-0.20160725git91bfb36.fc25.s390x xorg-x11-font-utils-7.5-32.fc25.s390x python-decoratortools-1.8-12.fc25.noarch m17n-db-1.7.0-7.fc25.noarch hardlink-1.1-1.fc25.s390x glibc-common-2.24-4.fc25.s390x libcom_err-1.43.3-1.fc25.s390x grep-2.27-1.fc25.s390x iproute-4.6.0-6.fc25.s390x e2fsprogs-libs-1.43.3-1.fc25.s390x curl-7.51.0-4.fc25.s390x libvorbis-1.3.5-1.fc25.s390x python2-dateutil-2.6.0-1.fc25.noarch python3-firewall-0.4.4.2-2.fc25.noarch libXpm-3.5.12-1.fc25.s390x systemd-pam-231-12.fc25.s390x mesa-libgbm-13.0.3-1.fc25.s390x rpm-build-4.13.0-6.fc25.s390x openssl-libs-1.0.2j-3.fc25.s390x python2-smmap-2.0.1-1.fc25.noarch bind99-libs-9.9.9-4.P5.fc25.s390x kernel-4.9.3-200.fc25.s390x gcc-gdb-plugin-6.3.1-1.fc25.s390x selinux-policy-targeted-3.13.1-225.6.fc25.noarch perl-Time-HiRes-1.9741-1.fc25.s390x npth-1.3-1.fc25.s390x poppler-data-0.4.7-6.fc25.noarch nspr-devel-4.13.1-1.fc25.s390x libcephfs1-10.2.4-2.fc25.s390x wayland-devel-1.12.0-1.fc25.s390x librbd1-10.2.4-2.fc25.s390x libxcb-devel-1.12-1.fc25.s390x mesa-libGL-devel-13.0.3-1.fc25.s390x perl-encoding-2.19-5.fc25.s390x libsndfile-1.0.27-1.fc25.s390x python3-cssselect-0.9.2-1.fc25.noarch perl-Digest-MD5-2.55-2.fc25.s390x texlive-tetex-bin-svn36770.0-30.20160520.fc25.noarch texlive-etoolbox-svn38031.2.2a-30.fc25.noarch texlive-babel-svn40706-30.fc25.noarch texlive-fancybox-svn18304.1.4-30.fc25.noarch texlive-xkeyval-svn35741.2.7a-30.fc25.noarch texlive-pdftex-def-svn22653.0.06d-30.fc25.noarch texlive-makeindex-bin-svn40473-30.20160520.fc25.s390x texlive-pdftex-bin-svn40987-30.20160520.fc25.s390x texlive-pst-ovl-svn40873-30.fc25.noarch texlive-crop-svn15878.1.5-30.fc25.noarch texlive-manfnt-font-svn35799.0-30.fc25.noarch texlive-txfonts-svn15878.0-30.fc25.noarch texlive-ntgclass-svn15878.2.1a-30.fc25.noarch texlive-dvisvgm-def-svn41011-30.fc25.noarch texlive-ec-svn25033.1.0-30.fc25.noarch texlive-etex-svn37057.0-30.fc25.noarch texlive-texlive-en-svn41185-30.fc25.noarch texlive-graphics-def-svn41879-30.fc25.noarch texlive-iftex-svn29654.0.2-30.fc25.noarch texlive-pst-math-svn34786.0.63-30.fc25.noarch texlive-bera-svn20031.0-30.fc25.noarch texlive-ms-svn29849.0-30.fc25.noarch texlive-luaotfload-bin-svn34647.0-30.20160520.fc25.noarch texlive-listings-svn37534.1.6-30.fc25.noarch texlive-pst-fill-svn15878.1.01-30.fc25.noarch texlive-pst-pdf-bin-svn7838.0-30.20160520.fc25.noarch texlive-pst-slpe-svn24391.1.31-30.fc25.noarch texlive-seminar-svn34011.1.62-30.fc25.noarch texlive-l3experimental-svn41163-30.fc25.noarch texlive-collection-fontsrecommended-svn35830.0-30.20160520.fc25.noarch gettext-libs-0.19.8.1-3.fc25.s390x java-1.8.0-openjdk-headless-1.8.0.111-5.b16.fc25.s390x pcre2-utf32-10.22-8.fc25.s390x at-spi2-atk-devel-2.22.0-1.fc25.s390x wayland-protocols-devel-1.7-1.fc25.noarch virglrenderer-0.5.0-1.20160411git61846f92f.fc25.s390x libcacard-2.5.2-2.fc24.s390x pixman-devel-0.34.0-2.fc24.s390x libacl-devel-2.2.52-11.fc24.s390x libnfs-devel-1.9.8-2.fc24.s390x texi2html-5.0-4.fc24.noarch libseccomp-devel-2.3.1-1.fc25.s390x perl-libs-5.24.1-382.fc25.s390x libxkbcommon-0.7.1-1.fc25.s390x git-core-2.9.3-2.fc25.s390x nss-softokn-freebl-devel-3.28.1-1.0.fc25.s390x gtk-update-icon-cache-3.22.7-1.fc25.s390x vim-filesystem-8.0.206-1.fc25.s390x libX11-common-1.6.4-4.fc25.noarch gtk3-devel-3.22.7-1.fc25.s390x python2-dnf-1.1.10-5.fc25.noarch vim-minimal-8.0.206-1.fc25.s390x GeoIP-GeoLite-data-2017.01-1.fc25.noarch gpg-pubkey-95a43f54-5284415a dejavu-fonts-common-2.35-3.fc24.noarch libSM-1.2.2-4.fc24.s390x diffutils-3.3-13.fc24.s390x libogg-1.3.2-5.fc24.s390x hunspell-en-US-0.20140811.1-5.fc24.noarch libdaemon-0.14-10.fc24.s390x patch-2.7.5-3.fc24.s390x libsysfs-2.1.0-19.fc24.s390x procmail-3.22-39.fc24.s390x libXdamage-1.1.4-8.fc24.s390x libotf-0.9.13-7.fc24.s390x urw-fonts-2.4-22.fc24.noarch crontabs-1.11-12.20150630git.fc24.noarch ppp-2.4.7-9.fc24.s390x polkit-0.113-5.fc24.s390x cyrus-sasl-2.1.26-26.2.fc24.s390x zlib-devel-1.2.8-10.fc24.s390x time-1.7-49.fc24.s390x gpg-pubkey-fdb19c98-56fd6333 fedora-release-25-1.noarch freetype-2.6.5-1.fc25.s390x libcap-ng-0.7.8-1.fc25.s390x gdbm-1.12-1.fc25.s390x binutils-2.26.1-1.fc25.s390x lcms2-2.8-2.fc25.s390x libcomps-0.1.7-5.fc25.s390x less-481-6.fc25.s390x apr-1.5.2-4.fc25.s390x perl-constant-1.33-367.fc25.noarch perl-Data-Dumper-2.161-1.fc25.s390x ipcalc-0.1.8-1.fc25.s390x perl-Pod-Perldoc-3.27-1.fc25.noarch libteam-1.26-1.fc25.s390x gmp-c++-6.1.1-1.fc25.s390x fontconfig-2.12.1-1.fc25.s390x enchant-1.6.0-14.fc25.s390x json-glib-1.2.2-1.fc25.s390x pyliblzma-0.5.3-16.fc25.s390x libsepol-devel-2.5-10.fc25.s390x python3-libs-3.5.2-4.fc25.s390x python3-ordered-set-2.0.0-4.fc25.noarch python3-rpmconf-1.0.18-2.fc25.noarch python-ipaddress-1.0.16-3.fc25.noarch python2-kerberos-1.2.5-1.fc25.s390x python2-pysocks-1.5.6-5.fc25.noarch fipscheck-lib-1.4.1-11.fc25.s390x libatomic_ops-7.4.4-1.fc25.s390x net-snmp-agent-libs-5.7.3-13.fc25.s390x util-linux-2.28.2-1.fc25.s390x dracut-044-78.fc25.s390x python2-pygpgme-0.3-18.fc25.s390x libsoup-2.56.0-2.fc25.s390x orc-0.4.26-1.fc25.s390x yum-utils-1.1.31-511.fc25.noarch libXrender-0.9.10-1.fc25.s390x libXrandr-1.5.1-1.fc25.s390x go-srpm-macros-2-7.fc25.noarch gnupg2-smime-2.1.13-2.fc25.s390x guile-devel-2.0.13-1.fc25.s390x uboot-tools-2016.09.01-2.fc25.s390x pykickstart-2.32-1.fc25.noarch python-bunch-1.0.1-9.fc25.noarch perl-generators-1.10-1.fc25.noarch perl-Mozilla-CA-20160104-3.fc25.noarch glibc-all-langpacks-2.24-4.fc25.s390x bzip2-libs-1.0.6-21.fc25.s390x libpng-1.6.27-1.fc25.s390x libtiff-4.0.7-1.fc25.s390x desktop-file-utils-0.23-2.fc25.s390x python2-cccolutils-1.4-1.fc25.s390x libcurl-7.51.0-4.fc25.s390x rpm-plugin-systemd-inhibit-4.13.0-6.fc25.s390x cups-libs-2.2.0-5.fc25.s390x python2-lxml-3.7.2-1.fc25.s390x redhat-rpm-config-45-1.fc25.noarch elfutils-libs-0.168-1.fc25.s390x device-mapper-event-libs-1.02.136-3.fc25.s390x lvm2-libs-2.02.167-3.fc25.s390x elfutils-0.168-1.fc25.s390x openssh-7.4p1-1.fc25.s390x python2-gitdb-2.0.0-1.fc25.noarch openssh-server-7.4p1-1.fc25.s390x gcc-gfortran-6.3.1-1.fc25.s390x rpm-devel-4.13.0-6.fc25.s390x libselinux-python-2.5-13.fc25.s390x openjpeg2-2.1.2-3.fc25.s390x js-jquery-2.2.4-1.fc25.noarch boost-thread-1.60.0-10.fc25.s390x json-c-0.12-7.fc24.s390x ghostscript-x11-9.20-5.fc25.s390x libdrm-devel-2.4.74-1.fc25.s390x libuuid-devel-2.28.2-1.fc25.s390x librbd-devel-10.2.4-2.fc25.s390x libXcursor-devel-1.1.14-6.fc24.s390x python3-beautifulsoup4-4.5.3-1.fc25.noarch texlive-kpathsea-svn41139-30.fc25.noarch texlive-amsmath-svn41561-30.fc25.noarch texlive-thumbpdf-svn34621.3.16-30.fc25.noarch texlive-multido-svn18302.1.42-30.fc25.noarch texlive-float-svn15878.1.3d-30.fc25.noarch texlive-psnfss-svn33946.9.2a-30.fc25.noarch texlive-wasy-svn35831.0-30.fc25.noarch texlive-makeindex-svn40768-30.fc25.noarch texlive-pdftex-svn41149-30.fc25.noarch texlive-enumitem-svn24146.3.5.2-30.fc25.noarch texlive-microtype-svn41127-30.fc25.noarch texlive-helvetic-svn31835.0-30.fc25.noarch texlive-times-svn35058.0-30.fc25.noarch texlive-mdwtools-svn15878.1.05.4-30.fc25.noarch texlive-babel-english-svn30264.3.3p-30.fc25.noarch texlive-cmextra-svn32831.0-30.fc25.noarch texlive-enctex-svn34957.0-30.fc25.noarch texlive-texlive-docindex-svn41430-30.fc25.noarch texlive-ifetex-svn24853.1.2-30.fc25.noarch texlive-mparhack-svn15878.1.4-30.fc25.noarch texlive-paralist-svn39247-30.fc25.noarch texlive-algorithms-svn38085.0.1-30.fc25.noarch texlive-geometry-svn19716.5.6-30.fc25.noarch texlive-fontspec-svn41262-30.fc25.noarch texlive-oberdiek-svn41346-30.fc25.noarch texlive-pst-eps-svn15878.1.0-30.fc25.noarch texlive-pstricks-svn41321-30.fc25.noarch texlive-pst-blur-svn15878.2.0-30.fc25.noarch texlive-jknapltx-svn19440.0-30.fc25.noarch texlive-breqn-svn38099.0.98d-30.fc25.noarch texlive-collection-basic-svn41149-30.20160520.fc25.noarch latex2html-2012-7.fc24.noarch lksctp-tools-1.0.16-5.fc24.s390x vte291-0.46.1-1.fc25.s390x openssl-devel-1.0.2j-3.fc25.s390x at-spi2-core-devel-2.22.0-1.fc25.s390x libfdt-1.4.2-1.fc25.s390x libXft-devel-2.3.2-4.fc24.s390x libattr-devel-2.4.47-16.fc24.s390x libiscsi-devel-1.15.0-2.fc24.s390x gettext-0.19.8.1-3.fc25.s390x libjpeg-turbo-devel-1.5.1-0.fc25.s390x glusterfs-libs-3.9.1-1.fc25.s390x glusterfs-api-3.9.1-1.fc25.s390x hawkey-0.6.3-6.1.fc25.s390x nss-softokn-devel-3.28.1-1.0.fc25.s390x glusterfs-cli-3.9.1-1.fc25.s390x vim-common-8.0.206-1.fc25.s390x libX11-1.6.4-4.fc25.s390x pulseaudio-libs-devel-10.0-2.fc25.s390x dnf-yum-1.1.10-5.fc25.noarch tzdata-java-2016j-2.fc25.noarch ccache-3.3.3-1.fc25.s390x gpg-pubkey-8e1431d5-53bcbac7 zlib-1.2.8-10.fc24.s390x sed-4.2.2-15.fc24.s390x p11-kit-0.23.2-2.fc24.s390x psmisc-22.21-8.fc24.s390x gpm-libs-1.20.7-9.fc24.s390x zip-3.0-16.fc24.s390x hostname-3.15-7.fc24.s390x libyubikey-1.13-2.fc24.s390x sg3_utils-libs-1.41-3.fc24.s390x polkit-pkla-compat-0.1-7.fc24.s390x passwd-0.79-8.fc24.s390x trousers-0.3.13-6.fc24.s390x grubby-8.40-3.fc24.s390x rootfiles-8.1-19.fc24.noarch python-rpm-macros-3-10.fc25.noarch info-6.1-3.fc25.s390x libuuid-2.28.2-1.fc25.s390x iptables-libs-1.6.0-2.fc25.s390x nettle-3.3-1.fc25.s390x jansson-2.9-1.fc25.s390x libksba-1.3.5-1.fc25.s390x perl-Text-ParseWords-3.30-365.fc25.noarch perl-PathTools-3.63-366.fc25.s390x perl-File-Temp-0.23.04-365.fc25.noarch fuse-libs-2.9.7-1.fc25.s390x perl-Pod-Escapes-1.07-365.fc25.noarch perl-Term-ANSIColor-4.05-2.fc25.noarch perl-URI-1.71-5.fc25.noarch libXfont-1.5.2-1.fc25.s390x crypto-policies-20160921-2.git75b9b04.fc25.noarch python-six-1.10.0-3.fc25.noarch dbus-glib-0.108-1.fc25.s390x gobject-introspection-1.50.0-1.fc25.s390x libpwquality-1.3.0-6.fc25.s390x python-gobject-base-3.22.0-1.fc25.s390x python-html5lib-0.999-9.fc25.noarch python3-dbus-1.2.4-2.fc25.s390x python3-chardet-2.3.0-1.fc25.noarch python3-urllib3-1.15.1-3.fc25.noarch python-offtrac-0.1.0-7.fc25.noarch python2-cryptography-1.5.3-3.fc25.s390x python2-requests-kerberos-0.10.0-2.fc25.noarch libserf-1.3.9-1.fc25.s390x libdatrie-0.2.9-3.fc25.s390x s390utils-base-1.36.0-1.fc25.s390x kpartx-0.4.9-83.fc25.s390x s390utils-cpuplugd-1.36.0-1.fc25.s390x rpmconf-1.0.18-2.fc25.noarch s390utils-osasnmpd-1.36.0-1.fc25.s390x python-dnf-plugins-extras-common-0.0.12-4.fc25.noarch pango-1.40.3-1.fc25.s390x fpc-srpm-macros-1.0-1.fc25.noarch kernel-core-4.8.8-300.fc25.s390x fedora-upgrade-25.2-1.fc25.noarch net-tools-2.0-0.38.20160329git.fc25.s390x libuser-0.62-4.fc25.s390x screen-4.4.0-4.fc25.s390x man-db-2.7.5-3.fc25.s390x sqlite-3.14.2-1.fc25.s390x python-systemd-doc-232-1.fc25.s390x pcre-8.40-1.fc25.s390x libdb-5.3.28-16.fc25.s390x lz4-1.7.5-1.fc25.s390x tar-1.29-3.fc25.s390x emacs-common-25.1-3.fc25.s390x perl-threads-shared-1.54-1.fc25.s390x unzip-6.0-31.fc25.s390x mesa-libglapi-13.0.3-1.fc25.s390x rpm-libs-4.13.0-6.fc25.s390x selinux-policy-3.13.1-225.6.fc25.noarch pcre-utf16-8.40-1.fc25.s390x bodhi-client-0.9.12.2-6.fc25.noarch rpmlint-1.9-5.fc25.noarch glibc-headers-2.24-4.fc25.s390x dbus-1.11.8-1.fc25.s390x kernel-core-4.9.3-200.fc25.s390x cairo-1.14.8-1.fc25.s390x ca-certificates-2017.2.11-1.0.fc25.noarch openssh-clients-7.4p1-1.fc25.s390x python2-GitPython-2.1.1-2.fc25.noarch mariadb-libs-10.1.20-1.fc25.s390x NetworkManager-glib-1.4.4-3.fc25.s390x gcc-go-6.3.1-1.fc25.s390x cracklib-dicts-2.9.6-4.fc25.s390x iproute-tc-4.6.0-6.fc25.s390x libselinux-python3-2.5-13.fc25.s390x strace-4.15-1.fc25.s390x python2-enchant-1.6.8-1.fc25.noarch boost-iostreams-1.60.0-10.fc25.s390x bluez-libs-5.43-1.fc25.s390x ghostscript-9.20-5.fc25.s390x userspace-rcu-0.9.2-2.fc25.s390x mesa-libwayland-egl-devel-13.0.3-1.fc25.s390x libXext-devel-1.3.3-4.fc24.s390x libXrandr-devel-1.5.1-1.fc25.s390x perl-XML-XPath-1.39-1.fc25.noarch python3-lxml-3.7.2-1.fc25.s390x texlive-texlive.infra-bin-svn40312-30.20160520.fc25.s390x texlive-ifxetex-svn19685.0.5-30.fc25.noarch texlive-thumbpdf-bin-svn6898.0-30.20160520.fc25.noarch texlive-babelbib-svn25245.1.31-30.fc25.noarch texlive-index-svn24099.4.1beta-30.fc25.noarch texlive-caption-svn41409-30.fc25.noarch texlive-bibtex-bin-svn40473-30.20160520.fc25.s390x texlive-mfware-bin-svn40473-30.20160520.fc25.s390x texlive-texconfig-svn40768-30.fc25.noarch texlive-footmisc-svn23330.5.5b-30.fc25.noarch texlive-psfrag-svn15878.3.04-30.fc25.noarch texlive-eurosym-svn17265.1.4_subrfix-30.fc25.noarch texlive-symbol-svn31835.0-30.fc25.noarch texlive-euenc-svn19795.0.1h-30.fc25.noarch texlive-textcase-svn15878.0-30.fc25.noarch texlive-charter-svn15878.0-30.fc25.noarch texlive-wasysym-svn15878.2.0-30.fc25.noarch texlive-mflogo-svn38628-30.fc25.noarch texlive-soul-svn15878.2.4-30.fc25.noarch texlive-marginnote-svn41382-30.fc25.noarch texlive-filecontents-svn24250.1.3-30.fc25.noarch texlive-tipa-svn29349.1.3-30.fc25.noarch texlive-xcolor-svn41044-30.fc25.noarch texlive-breakurl-svn29901.1.40-30.fc25.noarch texlive-attachfile-svn38830-30.fc25.noarch texlive-pst-coil-svn37377.1.07-30.fc25.noarch texlive-auto-pst-pdf-svn23723.0.6-30.fc25.noarch texlive-ctable-svn38672-30.fc25.noarch texlive-extsizes-svn17263.1.4a-30.fc25.noarch texlive-beamer-svn36461.3.36-30.fc25.noarch texlive-dvipdfmx-bin-svn40273-30.20160520.fc25.s390x netpbm-progs-10.76.00-2.fc25.s390x vte-profile-0.46.1-1.fc25.s390x krb5-devel-1.14.4-4.fc25.s390x dbus-devel-1.11.8-1.fc25.s390x sqlite-devel-3.14.2-1.fc25.s390x libiscsi-1.15.0-2.fc24.s390x fontconfig-devel-2.12.1-1.fc25.s390x libfdt-devel-1.4.2-1.fc25.s390x ceph-devel-compat-10.2.4-2.fc25.s390x zlib-static-1.2.8-10.fc24.s390x chrpath-0.16-3.fc24.s390x python-2.7.13-1.fc25.s390x nss-3.28.1-1.3.fc25.s390x python2-hawkey-0.6.3-6.1.fc25.s390x gdk-pixbuf2-modules-2.36.4-1.fc25.s390x perl-Git-2.9.3-2.fc25.noarch kernel-core-4.9.5-200.fc25.s390x publicsuffix-list-dafsa-20170116-1.fc25.noarch perl-SelfLoader-1.23-382.fc25.noarch perl-open-1.10-382.fc25.noarch gpgme-1.8.0-8.fc25.s390x === TEST BEGIN === Using CC: /home/fam/bin/cc Install prefix /var/tmp/patchew-tester-tmp-_t3ms3un/src/install BIOS directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/share/qemu binary directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/bin library directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/lib module directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/lib/qemu libexec directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/libexec include directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/include config directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/etc local state directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/var Manual directory /var/tmp/patchew-tester-tmp-_t3ms3un/src/install/share/man ELF interp prefix /usr/gnemul/qemu-%M Source path /var/tmp/patchew-tester-tmp-_t3ms3un/src C compiler /home/fam/bin/cc Host C compiler cc C++ compiler c++ Objective-C compiler /home/fam/bin/cc ARFLAGS rv CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g QEMU_CFLAGS -I/usr/include/pixman-1 -Werror -DHAS_LIBSSH2_SFTP_FSYNC -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_GNU_SOURCE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1 -I/usr/include/libpng16 -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libusb-1.0 LDFLAGS -Wl,--warn-common -m64 -g make make install install python python -B smbd /usr/sbin/smbd module support no host CPU s390x host big endian yes target list aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user tcg debug enabled no gprof enabled no sparse enabled no strip binaries yes profiler no static build no pixman system SDL support yes (2.0.5) GTK support yes (3.22.7) GTK GL support yes VTE support yes (0.46.1) TLS priority NORMAL GNUTLS support yes GNUTLS rnd yes libgcrypt no libgcrypt kdf no nettle yes (3.3) nettle kdf yes libtasn1 yes curses support yes virgl support yes curl support yes mingw32 support no Audio drivers oss Block whitelist (rw) Block whitelist (ro) VirtFS support yes VNC support yes VNC SASL support yes VNC JPEG support yes VNC PNG support yes xen support no brlapi support yes bluez support yes Documentation yes PIE no vde support no netmap support no Linux AIO support yes ATTR/XATTR support yes Install blobs yes KVM support yes HAX support no RDMA support no TCG interpreter no fdt support yes preadv support yes fdatasync yes madvise yes posix_madvise yes libcap-ng support yes vhost-net support yes vhost-scsi support yes vhost-vsock support yes Trace backends log spice support no rbd support yes xfsctl support no smartcard support yes libusb yes usb net redir yes OpenGL support yes OpenGL dmabufs yes libiscsi support yes libnfs support yes build guest agent yes QGA VSS support no QGA w32 disk info no QGA MSI support no seccomp support no coroutine backend ucontext coroutine pool yes debug stack usage no GlusterFS support yes Archipelago support no gcov gcov gcov enabled no TPM support yes libssh2 support yes TPM passthrough no QOM debugging yes lzo support yes snappy support yes bzip2 support yes NUMA host support no tcmalloc support no jemalloc support no avx2 optimization no replication support yes GEN aarch64-softmmu/config-devices.mak.tmp GEN arm-softmmu/config-devices.mak.tmp GEN alpha-softmmu/config-devices.mak.tmp GEN cris-softmmu/config-devices.mak.tmp GEN cris-softmmu/config-devices.mak GEN i386-softmmu/config-devices.mak.tmp GEN alpha-softmmu/config-devices.mak GEN lm32-softmmu/config-devices.mak.tmp GEN aarch64-softmmu/config-devices.mak GEN m68k-softmmu/config-devices.mak.tmp GEN arm-softmmu/config-devices.mak GEN microblazeel-softmmu/config-devices.mak.tmp GEN lm32-softmmu/config-devices.mak GEN microblaze-softmmu/config-devices.mak.tmp GEN i386-softmmu/config-devices.mak GEN m68k-softmmu/config-devices.mak GEN mips64el-softmmu/config-devices.mak.tmp GEN microblazeel-softmmu/config-devices.mak GEN microblaze-softmmu/config-devices.mak GEN mips64-softmmu/config-devices.mak.tmp GEN mips-softmmu/config-devices.mak.tmp GEN mipsel-softmmu/config-devices.mak.tmp GEN mips64el-softmmu/config-devices.mak GEN moxie-softmmu/config-devices.mak.tmp GEN mips-softmmu/config-devices.mak GEN mipsel-softmmu/config-devices.mak GEN mips64-softmmu/config-devices.mak GEN nios2-softmmu/config-devices.mak.tmp GEN or1k-softmmu/config-devices.mak.tmp GEN ppc64-softmmu/config-devices.mak.tmp GEN moxie-softmmu/config-devices.mak GEN ppcemb-softmmu/config-devices.mak.tmp GEN nios2-softmmu/config-devices.mak GEN ppc-softmmu/config-devices.mak.tmp GEN or1k-softmmu/config-devices.mak GEN s390x-softmmu/config-devices.mak.tmp GEN ppc64-softmmu/config-devices.mak GEN ppcemb-softmmu/config-devices.mak GEN sh4eb-softmmu/config-devices.mak.tmp GEN s390x-softmmu/config-devices.mak GEN sparc64-softmmu/config-devices.mak.tmp GEN sh4-softmmu/config-devices.mak.tmp GEN ppc-softmmu/config-devices.mak GEN sh4eb-softmmu/config-devices.mak GEN sparc-softmmu/config-devices.mak.tmp GEN tricore-softmmu/config-devices.mak.tmp GEN tricore-softmmu/config-devices.mak GEN unicore32-softmmu/config-devices.mak.tmp GEN sh4-softmmu/config-devices.mak GEN sparc-softmmu/config-devices.mak GEN sparc64-softmmu/config-devices.mak GEN x86_64-softmmu/config-devices.mak.tmp GEN unicore32-softmmu/config-devices.mak GEN xtensa-softmmu/config-devices.mak.tmp GEN aarch64-linux-user/config-devices.mak.tmp GEN xtensaeb-softmmu/config-devices.mak.tmp GEN aarch64-linux-user/config-devices.mak GEN xtensa-softmmu/config-devices.mak GEN alpha-linux-user/config-devices.mak.tmp GEN armeb-linux-user/config-devices.mak.tmp GEN xtensaeb-softmmu/config-devices.mak GEN arm-linux-user/config-devices.mak.tmp GEN alpha-linux-user/config-devices.mak GEN cris-linux-user/config-devices.mak.tmp GEN x86_64-softmmu/config-devices.mak GEN armeb-linux-user/config-devices.mak GEN hppa-linux-user/config-devices.mak.tmp GEN i386-linux-user/config-devices.mak.tmp GEN cris-linux-user/config-devices.mak GEN hppa-linux-user/config-devices.mak GEN arm-linux-user/config-devices.mak GEN m68k-linux-user/config-devices.mak.tmp GEN microblazeel-linux-user/config-devices.mak.tmp GEN microblaze-linux-user/config-devices.mak.tmp GEN i386-linux-user/config-devices.mak GEN mips64el-linux-user/config-devices.mak.tmp GEN m68k-linux-user/config-devices.mak GEN mips64-linux-user/config-devices.mak.tmp GEN microblaze-linux-user/config-devices.mak GEN microblazeel-linux-user/config-devices.mak GEN mips64el-linux-user/config-devices.mak GEN mipsel-linux-user/config-devices.mak.tmp GEN mips64-linux-user/config-devices.mak GEN mips-linux-user/config-devices.mak.tmp GEN mipsn32el-linux-user/config-devices.mak.tmp GEN mipsn32-linux-user/config-devices.mak.tmp GEN mipsel-linux-user/config-devices.mak GEN nios2-linux-user/config-devices.mak.tmp GEN mips-linux-user/config-devices.mak GEN mipsn32el-linux-user/config-devices.mak GEN or1k-linux-user/config-devices.mak.tmp GEN mipsn32-linux-user/config-devices.mak GEN ppc64abi32-linux-user/config-devices.mak.tmp GEN nios2-linux-user/config-devices.mak GEN ppc64le-linux-user/config-devices.mak.tmp GEN ppc64-linux-user/config-devices.mak.tmp GEN ppc64le-linux-user/config-devices.mak GEN ppc64abi32-linux-user/config-devices.mak GEN or1k-linux-user/config-devices.mak GEN ppc-linux-user/config-devices.mak.tmp GEN s390x-linux-user/config-devices.mak.tmp GEN sh4eb-linux-user/config-devices.mak.tmp GEN ppc64-linux-user/config-devices.mak GEN sh4-linux-user/config-devices.mak.tmp GEN s390x-linux-user/config-devices.mak GEN sparc32plus-linux-user/config-devices.mak.tmp GEN sh4eb-linux-user/config-devices.mak GEN ppc-linux-user/config-devices.mak GEN sparc64-linux-user/config-devices.mak.tmp GEN sparc-linux-user/config-devices.mak.tmp GEN sh4-linux-user/config-devices.mak GEN sparc32plus-linux-user/config-devices.mak GEN x86_64-linux-user/config-devices.mak.tmp GEN sparc-linux-user/config-devices.mak GEN tilegx-linux-user/config-devices.mak.tmp GEN sparc64-linux-user/config-devices.mak GEN config-host.h GEN x86_64-linux-user/config-devices.mak GEN qemu-options.def GEN tilegx-linux-user/config-devices.mak GEN qmp-commands.h GEN qapi-types.h GEN qapi-visit.h GEN qapi-event.h GEN qmp-introspect.h GEN trace/generated-tcg-tracers.h GEN trace/generated-helpers-wrappers.h GEN trace/generated-helpers.h GEN module_block.h GEN tests/test-qapi-types.h GEN tests/test-qapi-visit.h GEN tests/test-qmp-commands.h GEN tests/test-qapi-event.h GEN tests/test-qmp-introspect.h GEN trace-root.h GEN util/trace.h GEN crypto/trace.h GEN io/trace.h GEN migration/trace.h GEN block/trace.h GEN backends/trace.h GEN hw/block/trace.h GEN hw/block/dataplane/trace.h GEN hw/char/trace.h GEN hw/intc/trace.h GEN hw/net/trace.h GEN hw/virtio/trace.h GEN hw/audio/trace.h GEN hw/misc/trace.h GEN hw/usb/trace.h GEN hw/scsi/trace.h GEN hw/nvram/trace.h GEN hw/display/trace.h GEN hw/input/trace.h GEN hw/timer/trace.h GEN hw/dma/trace.h GEN hw/sparc/trace.h GEN hw/sd/trace.h GEN hw/isa/trace.h GEN hw/i386/trace.h GEN hw/mem/trace.h GEN hw/9pfs/trace.h GEN hw/i386/xen/trace.h GEN hw/ppc/trace.h GEN hw/pci/trace.h GEN hw/s390x/trace.h GEN hw/vfio/trace.h GEN hw/acpi/trace.h GEN hw/arm/trace.h GEN hw/alpha/trace.h GEN hw/xen/trace.h GEN ui/trace.h GEN audio/trace.h GEN target/arm/trace.h GEN net/trace.h GEN target/sparc/trace.h GEN target/i386/trace.h GEN target/s390x/trace.h GEN target/ppc/trace.h GEN qom/trace.h GEN linux-user/trace.h GEN qapi/trace.h GEN config-all-devices.mak CC tests/qemu-iotests/socket_scm_helper.o GEN version.texi GEN qemu-img-cmds.texi GEN qemu-options.texi GEN qemu-monitor.texi GEN qemu-monitor-info.texi GEN qemu-img.1 GEN qemu-nbd.8 GEN qemu-ga.8 GEN qemu-qapi.texi GEN qemu-ga-qapi.texi GEN fsdev/virtfs-proxy-helper.1 GEN qga/qapi-generated/qga-qapi-types.h GEN qga/qapi-generated/qga-qapi-visit.h GEN qga/qapi-generated/qga-qapi-types.c GEN qga/qapi-generated/qga-qmp-commands.h GEN qga/qapi-generated/qga-qapi-visit.c GEN qga/qapi-generated/qga-qmp-marshal.c GEN trace-root.c GEN util/trace.c GEN crypto/trace.c GEN io/trace.c GEN migration/trace.c GEN block/trace.c GEN backends/trace.c GEN hw/block/trace.c GEN hw/block/dataplane/trace.c GEN hw/char/trace.c GEN hw/intc/trace.c GEN hw/net/trace.c GEN hw/virtio/trace.c GEN hw/audio/trace.c GEN hw/misc/trace.c GEN hw/scsi/trace.c GEN hw/usb/trace.c GEN hw/nvram/trace.c GEN hw/display/trace.c GEN hw/input/trace.c GEN hw/timer/trace.c GEN hw/dma/trace.c GEN hw/sparc/trace.c GEN hw/sd/trace.c GEN hw/isa/trace.c GEN hw/mem/trace.c GEN hw/i386/trace.c GEN hw/i386/xen/trace.c GEN hw/9pfs/trace.c GEN hw/ppc/trace.c GEN hw/pci/trace.c GEN hw/s390x/trace.c GEN hw/acpi/trace.c GEN hw/vfio/trace.c GEN hw/arm/trace.c GEN hw/alpha/trace.c GEN hw/xen/trace.c GEN ui/trace.c GEN audio/trace.c GEN net/trace.c GEN target/arm/trace.c GEN target/sparc/trace.c GEN target/i386/trace.c GEN target/s390x/trace.c GEN target/ppc/trace.c GEN qom/trace.c GEN linux-user/trace.c GEN qapi/trace.c GEN qmp-introspect.c GEN qapi-types.c GEN qapi-visit.c GEN qapi-event.c CC qapi/qapi-visit-core.o CC qapi/qapi-dealloc-visitor.o CC qapi/qobject-input-visitor.o CC qapi/qobject-output-visitor.o CC qapi/qmp-registry.o CC qapi/string-input-visitor.o CC qapi/qmp-dispatch.o CC qapi/string-output-visitor.o CC qapi/opts-visitor.o CC qapi/qapi-clone-visitor.o CC qapi/qmp-event.o CC qapi/qapi-util.o CC qobject/qnull.o CC qobject/qint.o CC qobject/qstring.o CC qobject/qdict.o CC qobject/qlist.o CC qobject/qfloat.o CC qobject/qbool.o CC qobject/qjson.o CC qobject/qobject.o CC qobject/json-lexer.o CC qobject/json-streamer.o CC qobject/json-parser.o CC trace/control.o CC trace/qmp.o CC util/osdep.o CC util/cutils.o CC util/unicode.o CC util/qemu-timer-common.o CC util/bufferiszero.o CC util/lockcnt.o CC util/aiocb.o CC util/async.o CC util/thread-pool.o CC util/qemu-timer.o CC util/main-loop.o CC util/iohandler.o CC util/aio-posix.o CC util/compatfd.o CC util/event_notifier-posix.o CC util/mmap-alloc.o CC util/oslib-posix.o CC util/qemu-openpty.o CC util/qemu-thread-posix.o CC util/memfd.o CC util/envlist.o CC util/path.o CC util/host-utils.o CC util/module.o CC util/bitmap.o CC util/bitops.o CC util/hbitmap.o CC util/fifo8.o CC util/acl.o CC util/error.o CC util/qemu-error.o CC util/id.o CC util/iov.o CC util/qemu-config.o CC util/qemu-sockets.o CC util/uri.o CC util/qemu-option.o CC util/notify.o CC util/qemu-progress.o CC util/hexdump.o CC util/crc32c.o CC util/uuid.o CC util/throttle.o CC util/getauxval.o CC util/readline.o CC util/rcu.o CC util/qemu-coroutine.o CC util/qemu-coroutine-lock.o CC util/qemu-coroutine-io.o CC util/qemu-coroutine-sleep.o CC util/coroutine-ucontext.o CC util/timed-average.o CC util/buffer.o CC util/base64.o CC util/log.o CC util/qdist.o CC util/qht.o CC util/range.o CC crypto/pbkdf-stub.o CC stubs/arch-query-cpu-def.o CC stubs/arch-query-cpu-model-expansion.o CC stubs/arch-query-cpu-model-comparison.o CC stubs/arch-query-cpu-model-baseline.o CC stubs/bdrv-next-monitor-owned.o CC stubs/blk-commit-all.o CC stubs/blockdev-close-all-bdrv-states.o CC stubs/cpu-get-clock.o CC stubs/clock-warp.o CC stubs/cpu-get-icount.o CC stubs/dump.o CC stubs/error-printf.o CC stubs/fdset.o CC stubs/gdbstub.o CC stubs/get-vm-name.o CC stubs/iothread.o CC stubs/iothread-lock.o CC stubs/is-daemonized.o CC stubs/linux-aio.o CC stubs/machine-init-done.o CC stubs/migr-blocker.o CC stubs/monitor.o CC stubs/notify-event.o CC stubs/qtest.o CC stubs/replay.o CC stubs/runstate-check.o CC stubs/set-fd-handler.o CC stubs/slirp.o CC stubs/sysbus.o CC stubs/trace-control.o CC stubs/uuid.o CC stubs/vm-stop.o CC stubs/vmstate.o CC stubs/qmp_pc_dimm_device_list.o CC stubs/target-monitor-defs.o CC stubs/target-get-monitor-def.o CC stubs/pc_madt_cpu_entry.o CC contrib/ivshmem-client/ivshmem-client.o CC contrib/ivshmem-client/main.o CC contrib/ivshmem-server/ivshmem-server.o CC contrib/ivshmem-server/main.o CC qemu-nbd.o CC block.o CC qemu-io-cmds.o CC blockjob.o CC replication.o CC block/raw-format.o CC block/qcow.o CC block/vdi.o CC block/vmdk.o CC block/cloop.o CC block/bochs.o CC block/vpc.o CC block/vvfat.o CC block/dmg.o CC block/qcow2.o CC block/qcow2-refcount.o CC block/qcow2-cluster.o CC block/qcow2-snapshot.o CC block/qcow2-cache.o CC block/qed.o CC block/qed-gencb.o CC block/qed-l2-cache.o CC block/qed-table.o CC block/qed-cluster.o CC block/qed-check.o CC block/vhdx.o CC block/vhdx-endian.o CC block/vhdx-log.o CC block/quorum.o CC block/parallels.o CC block/blkdebug.o CC block/blkverify.o CC block/blkreplay.o CC block/block-backend.o CC block/qapi.o CC block/snapshot.o CC block/file-posix.o CC block/linux-aio.o CC block/null.o CC block/mirror.o CC block/commit.o CC block/io.o CC block/throttle-groups.o CC block/nbd.o CC block/nbd-client.o CC block/sheepdog.o CC block/iscsi-opts.o CC block/accounting.o CC block/dirty-bitmap.o CC block/write-threshold.o CC block/backup.o CC block/replication.o CC block/crypto.o CC nbd/server.o CC nbd/client.o CC nbd/common.o CC block/iscsi.o CC block/nfs.o CC block/curl.o CC block/rbd.o CC block/gluster.o CC block/ssh.o CC block/dmg-bz2.o CC crypto/init.o CC crypto/hash.o CC crypto/hash-nettle.o CC crypto/hmac.o CC crypto/hmac-nettle.o CC crypto/aes.o CC crypto/cipher.o CC crypto/desrfb.o CC crypto/tlscreds.o CC crypto/tlscredsanon.o CC crypto/tlscredsx509.o CC crypto/tlssession.o CC crypto/random-gnutls.o CC crypto/secret.o CC crypto/pbkdf.o CC crypto/ivgen.o CC crypto/pbkdf-nettle.o CC crypto/ivgen-essiv.o CC crypto/ivgen-plain.o CC crypto/ivgen-plain64.o CC crypto/afsplit.o CC crypto/xts.o CC crypto/block.o CC crypto/block-qcow.o CC crypto/block-luks.o CC io/channel.o CC io/channel-buffer.o CC io/channel-command.o CC io/channel-file.o CC io/channel-socket.o CC io/channel-watch.o CC io/channel-websock.o CC io/channel-tls.o CC io/channel-util.o CC io/dns-resolver.o CC io/task.o CC qom/object.o CC qom/container.o CC qom/qom-qobject.o CC qom/object_interfaces.o GEN qemu-img-cmds.h CC qemu-io.o CC fsdev/virtfs-proxy-helper.o CC fsdev/9p-marshal.o CC fsdev/9p-iov-marshal.o CC qemu-bridge-helper.o CC blockdev.o CC blockdev-nbd.o CC iothread.o CC qdev-monitor.o CC device-hotplug.o CC os-posix.o CC page_cache.o CC accel.o CC bt-host.o CC bt-vhci.o CC dma-helpers.o CC vl.o CC tpm.o CC device_tree.o GEN qmp-marshal.c CC qmp.o CC hmp.o CC cpus-common.o CC audio/audio.o CC audio/noaudio.o CC audio/mixeng.o CC audio/wavaudio.o CC audio/sdlaudio.o CC audio/ossaudio.o CC audio/wavcapture.o CC backends/rng.o CC backends/rng-egd.o CC backends/msmouse.o CC backends/rng-random.o CC backends/wctablet.o CC backends/testdev.o CC backends/baum.o CC backends/tpm.o CC backends/hostmem.o CC backends/hostmem-ram.o CC backends/hostmem-file.o CC backends/cryptodev.o CC backends/cryptodev-builtin.o CC block/stream.o CC disas/alpha.o CC disas/arm.o CXX disas/arm-a64.o CC disas/cris.o CC disas/hppa.o CC disas/i386.o CC disas/m68k.o CC disas/microblaze.o CC disas/mips.o CC disas/nios2.o CC disas/moxie.o CC disas/ppc.o CC disas/s390.o CC disas/sh4.o CC disas/sparc.o CC disas/lm32.o CXX disas/libvixl/vixl/utils.o CXX disas/libvixl/vixl/compiler-intrinsics.o CXX disas/libvixl/vixl/a64/instructions-a64.o CXX disas/libvixl/vixl/a64/decoder-a64.o CXX disas/libvixl/vixl/a64/disasm-a64.o CC fsdev/qemu-fsdev.o CC fsdev/qemu-fsdev-opts.o CC fsdev/qemu-fsdev-dummy.o CC hw/9pfs/9p-local.o CC hw/9pfs/9p.o CC hw/9pfs/9p-xattr.o CC hw/9pfs/9p-xattr-user.o CC hw/9pfs/9p-posix-acl.o CC hw/9pfs/coth.o CC hw/9pfs/cofs.o CC hw/9pfs/codir.o CC hw/9pfs/cofile.o CC hw/9pfs/coxattr.o CC hw/9pfs/9p-synth.o CC hw/9pfs/9p-handle.o CC hw/9pfs/9p-proxy.o CC hw/acpi/core.o CC hw/acpi/piix4.o CC hw/acpi/pcihp.o CC hw/acpi/ich9.o CC hw/acpi/tco.o CC hw/acpi/cpu_hotplug.o CC hw/acpi/memory_hotplug.o CC hw/acpi/cpu.o CC hw/acpi/nvdimm.o CC hw/acpi/acpi_interface.o CC hw/acpi/bios-linker-loader.o CC hw/acpi/aml-build.o CC hw/acpi/ipmi.o CC hw/acpi/acpi-stub.o CC hw/acpi/ipmi-stub.o CC hw/audio/sb16.o CC hw/audio/es1370.o CC hw/audio/ac97.o CC hw/audio/fmopl.o CC hw/audio/adlib.o CC hw/audio/gus.o CC hw/audio/gusemu_hal.o CC hw/audio/gusemu_mixer.o CC hw/audio/cs4231a.o CC hw/audio/intel-hda.o CC hw/audio/hda-codec.o CC hw/audio/pcspk.o CC hw/audio/wm8750.o CC hw/audio/pl041.o CC hw/audio/lm4549.o CC hw/audio/cs4231.o CC hw/audio/marvell_88w8618.o CC hw/audio/milkymist-ac97.o CC hw/block/block.o CC hw/block/cdrom.o CC hw/block/fdc.o CC hw/block/hd-geometry.o CC hw/block/nand.o CC hw/block/m25p80.o CC hw/block/pflash_cfi01.o CC hw/block/pflash_cfi02.o CC hw/block/ecc.o CC hw/block/onenand.o CC hw/block/nvme.o CC hw/bt/core.o CC hw/bt/l2cap.o CC hw/bt/sdp.o CC hw/bt/hci.o CC hw/bt/hid.o CC hw/bt/hci-csr.o CC hw/char/ipoctal232.o CC hw/char/escc.o CC hw/char/parallel.o CC hw/char/pl011.o CC hw/char/serial.o CC hw/char/serial-isa.o CC hw/char/serial-pci.o CC hw/char/xilinx_uartlite.o CC hw/char/virtio-console.o CC hw/char/cadence_uart.o CC hw/char/etraxfs_ser.o CC hw/char/debugcon.o CC hw/char/grlib_apbuart.o CC hw/char/imx_serial.o CC hw/char/lm32_juart.o CC hw/char/lm32_uart.o CC hw/char/milkymist-uart.o CC hw/char/sclpconsole.o CC hw/char/sclpconsole-lm.o CC hw/core/qdev.o CC hw/core/qdev-properties.o CC hw/core/bus.o CC hw/core/reset.o CC hw/core/fw-path-provider.o CC hw/core/irq.o CC hw/core/hotplug.o CC hw/core/empty_slot.o CC hw/core/stream.o CC hw/core/ptimer.o CC hw/core/sysbus.o CC hw/core/machine.o CC hw/core/loader.o CC hw/core/loader-fit.o CC hw/core/qdev-properties-system.o CC hw/core/register.o CC hw/core/or-irq.o CC hw/core/platform-bus.o CC hw/display/ads7846.o CC hw/display/cirrus_vga.o CC hw/display/g364fb.o CC hw/display/jazz_led.o CC hw/display/pl110.o CC hw/display/ssd0303.o CC hw/display/ssd0323.o CC hw/display/vga-pci.o CC hw/display/vga-isa.o CC hw/display/vga-isa-mm.o CC hw/display/vmware_vga.o CC hw/display/blizzard.o CC hw/display/exynos4210_fimd.o CC hw/display/framebuffer.o CC hw/display/milkymist-vgafb.o CC hw/display/tc6393xb.o CC hw/dma/puv3_dma.o CC hw/display/milkymist-tmu2.o CC hw/dma/rc4030.o CC hw/dma/pl080.o CC hw/dma/pl330.o CC hw/dma/i82374.o CC hw/dma/i8257.o CC hw/dma/xilinx_axidma.o CC hw/dma/xlnx-zynq-devcfg.o CC hw/dma/etraxfs_dma.o CC hw/dma/sparc32_dma.o CC hw/dma/sun4m_iommu.o CC hw/gpio/pl061.o CC hw/gpio/max7310.o CC hw/gpio/puv3_gpio.o CC hw/gpio/zaurus.o CC hw/gpio/mpc8xxx.o CC hw/gpio/gpio_key.o CC hw/i2c/core.o CC hw/i2c/smbus.o CC hw/i2c/smbus_eeprom.o CC hw/i2c/i2c-ddc.o CC hw/i2c/versatile_i2c.o CC hw/i2c/smbus_ich9.o CC hw/i2c/pm_smbus.o CC hw/i2c/bitbang_i2c.o CC hw/i2c/exynos4210_i2c.o CC hw/i2c/imx_i2c.o CC hw/i2c/aspeed_i2c.o CC hw/ide/core.o CC hw/ide/atapi.o CC hw/ide/qdev.o CC hw/ide/pci.o CC hw/ide/isa.o CC hw/ide/piix.o CC hw/ide/cmd646.o CC hw/ide/macio.o CC hw/ide/mmio.o CC hw/ide/via.o CC hw/ide/microdrive.o CC hw/ide/ahci.o CC hw/ide/ich.o CC hw/input/adb.o CC hw/input/hid.o CC hw/input/lm832x.o CC hw/input/pckbd.o CC hw/input/pl050.o CC hw/input/stellaris_input.o CC hw/input/ps2.o CC hw/input/tsc2005.o CC hw/input/vmmouse.o CC hw/input/virtio-input.o CC hw/input/virtio-input-hid.o CC hw/input/virtio-input-host.o CC hw/intc/heathrow_pic.o CC hw/intc/i8259_common.o CC hw/intc/i8259.o CC hw/intc/pl190.o CC hw/intc/puv3_intc.o CC hw/intc/xilinx_intc.o CC hw/intc/imx_avic.o CC hw/intc/etraxfs_pic.o CC hw/intc/lm32_pic.o CC hw/intc/realview_gic.o CC hw/intc/slavio_intctl.o CC hw/intc/ioapic_common.o CC hw/intc/arm_gic_common.o CC hw/intc/arm_gic.o CC hw/intc/arm_gicv2m.o CC hw/intc/arm_gicv3_common.o CC hw/intc/arm_gicv3.o CC hw/intc/arm_gicv3_redist.o CC hw/intc/arm_gicv3_dist.o CC hw/intc/arm_gicv3_its_common.o CC hw/intc/openpic.o CC hw/intc/intc.o CC hw/ipack/ipack.o CC hw/ipack/tpci200.o CC hw/ipmi/ipmi.o CC hw/ipmi/ipmi_bmc_sim.o CC hw/ipmi/ipmi_bmc_extern.o CC hw/ipmi/isa_ipmi_kcs.o CC hw/ipmi/isa_ipmi_bt.o CC hw/isa/isa-bus.o CC hw/isa/apm.o CC hw/isa/i82378.o CC hw/isa/pc87312.o CC hw/isa/piix4.o CC hw/mem/pc-dimm.o CC hw/isa/vt82c686.o CC hw/mem/nvdimm.o CC hw/misc/applesmc.o CC hw/misc/max111x.o CC hw/misc/tmp105.o CC hw/misc/debugexit.o CC hw/misc/sga.o CC hw/misc/pci-testdev.o CC hw/misc/pc-testdev.o CC hw/misc/unimp.o CC hw/misc/arm_l2x0.o CC hw/misc/arm_integrator_debug.o CC hw/misc/a9scu.o CC hw/misc/arm11scu.o CC hw/misc/puv3_pm.o CC hw/misc/macio/macio.o CC hw/misc/macio/cuda.o CC hw/misc/macio/mac_dbdma.o CC hw/net/dp8393x.o CC hw/net/ne2000.o CC hw/net/eepro100.o CC hw/net/pcnet-pci.o CC hw/net/pcnet.o CC hw/net/e1000.o CC hw/net/e1000x_common.o CC hw/net/net_tx_pkt.o CC hw/net/net_rx_pkt.o CC hw/net/e1000e.o CC hw/net/e1000e_core.o CC hw/net/rtl8139.o CC hw/net/vmxnet3.o CC hw/net/smc91c111.o CC hw/net/lan9118.o CC hw/net/ne2000-isa.o CC hw/net/opencores_eth.o CC hw/net/xgmac.o CC hw/net/mipsnet.o CC hw/net/xilinx_axienet.o CC hw/net/allwinner_emac.o CC hw/net/imx_fec.o CC hw/net/cadence_gem.o CC hw/net/stellaris_enet.o CC hw/net/lance.o CC hw/net/rocker/rocker.o CC hw/net/rocker/rocker_fp.o CC hw/net/rocker/rocker_desc.o CC hw/net/rocker/rocker_world.o CC hw/net/rocker/rocker_of_dpa.o CC hw/nvram/ds1225y.o CC hw/nvram/eeprom93xx.o CC hw/nvram/fw_cfg.o CC hw/nvram/chrp_nvram.o CC hw/nvram/mac_nvram.o CC hw/pci-bridge/pci_bridge_dev.o CC hw/pci-bridge/pcie_root_port.o CC hw/pci-bridge/gen_pcie_root_port.o CC hw/pci-bridge/pci_expander_bridge.o CC hw/pci-bridge/xio3130_upstream.o CC hw/pci-bridge/xio3130_downstream.o CC hw/pci-bridge/ioh3420.o CC hw/pci-bridge/dec.o CC hw/pci-bridge/i82801b11.o CC hw/pci-host/pam.o CC hw/pci-host/prep.o CC hw/pci-host/grackle.o CC hw/pci-host/uninorth.o CC hw/pci-host/ppce500.o CC hw/pci-host/apb.o CC hw/pci-host/versatile.o CC hw/pci-host/bonito.o CC hw/pci-host/piix.o CC hw/pci-host/q35.o CC hw/pci-host/gpex.o CC hw/pci-host/xilinx-pcie.o CC hw/pci/pci.o CC hw/pci/pci_bridge.o CC hw/pci/msix.o CC hw/pci/msi.o CC hw/pci/shpc.o CC hw/pci/slotid_cap.o CC hw/pci/pci_host.o CC hw/pci/pcie_host.o CC hw/pci/pcie.o CC hw/pci/pcie_aer.o CC hw/pci/pcie_port.o CC hw/pci/pci-stub.o CC hw/pcmcia/pcmcia.o CC hw/scsi/scsi-disk.o CC hw/scsi/scsi-generic.o CC hw/scsi/scsi-bus.o CC hw/scsi/lsi53c895a.o CC hw/scsi/mptsas.o CC hw/scsi/mptconfig.o CC hw/scsi/mptendian.o CC hw/scsi/megasas.o CC hw/scsi/vmw_pvscsi.o CC hw/scsi/esp.o CC hw/scsi/esp-pci.o CC hw/sd/pl181.o CC hw/sd/ssi-sd.o CC hw/sd/sd.o CC hw/sd/core.o CC hw/smbios/smbios.o CC hw/sd/sdhci.o CC hw/smbios/smbios_type_38.o CC hw/smbios/smbios-stub.o CC hw/smbios/smbios_type_38-stub.o CC hw/ssi/pl022.o CC hw/ssi/xilinx_spi.o CC hw/ssi/ssi.o CC hw/ssi/xilinx_spips.o CC hw/ssi/aspeed_smc.o CC hw/ssi/stm32f2xx_spi.o CC hw/timer/arm_timer.o CC hw/timer/arm_mptimer.o CC hw/timer/a9gtimer.o CC hw/timer/cadence_ttc.o CC hw/timer/ds1338.o CC hw/timer/hpet.o CC hw/timer/i8254_common.o CC hw/timer/i8254.o CC hw/timer/m48t59.o CC hw/timer/m48t59-isa.o CC hw/timer/pl031.o CC hw/timer/puv3_ost.o CC hw/timer/twl92230.o CC hw/timer/xilinx_timer.o CC hw/timer/slavio_timer.o CC hw/timer/etraxfs_timer.o CC hw/timer/grlib_gptimer.o CC hw/timer/imx_epit.o CC hw/timer/imx_gpt.o CC hw/timer/lm32_timer.o CC hw/timer/milkymist-sysctl.o CC hw/timer/stm32f2xx_timer.o CC hw/timer/aspeed_timer.o CC hw/timer/sun4v-rtc.o CC hw/tpm/tpm_tis.o CC hw/usb/core.o CC hw/usb/combined-packet.o CC hw/usb/bus.o CC hw/usb/libhw.o CC hw/usb/desc.o CC hw/usb/desc-msos.o CC hw/usb/hcd-uhci.o CC hw/usb/hcd-ohci.o CC hw/usb/hcd-ehci.o CC hw/usb/hcd-ehci-pci.o CC hw/usb/hcd-ehci-sysbus.o CC hw/usb/hcd-xhci.o CC hw/usb/hcd-musb.o CC hw/usb/dev-hub.o CC hw/usb/dev-hid.o CC hw/usb/dev-wacom.o CC hw/usb/dev-storage.o CC hw/usb/dev-uas.o CC hw/usb/dev-audio.o CC hw/usb/dev-serial.o CC hw/usb/dev-bluetooth.o CC hw/usb/dev-network.o CC hw/usb/dev-smartcard-reader.o CC hw/usb/ccid-card-passthru.o CC hw/usb/ccid-card-emulated.o CC hw/usb/dev-mtp.o CC hw/usb/redirect.o CC hw/usb/quirks.o CC hw/usb/host-libusb.o CC hw/usb/host-legacy.o CC hw/virtio/virtio-rng.o CC hw/virtio/virtio-pci.o CC hw/virtio/virtio-bus.o CC hw/virtio/virtio-mmio.o CC hw/virtio/vhost-stub.o CC hw/watchdog/watchdog.o CC hw/watchdog/wdt_i6300esb.o CC hw/watchdog/wdt_ib700.o CC hw/watchdog/wdt_diag288.o CC hw/watchdog/wdt_aspeed.o CC migration/migration.o CC migration/fd.o CC migration/socket.o CC migration/exec.o CC migration/tls.o CC migration/colo-comm.o CC migration/colo.o CC migration/colo-failover.o CC migration/vmstate.o CC migration/qemu-file.o CC migration/qemu-file-channel.o CC migration/xbzrle.o CC migration/postcopy-ram.o CC migration/qjson.o CC migration/block.o CC net/net.o CC net/queue.o CC net/checksum.o CC net/util.o CC net/hub.o CC net/socket.o CC net/dump.o CC net/eth.o CC net/l2tpv3.o CC net/tap.o CC net/vhost-user.o CC net/tap-linux.o CC net/slirp.o CC net/filter.o CC net/filter-buffer.o CC net/filter-mirror.o CC net/colo-compare.o CC net/colo.o CC net/filter-rewriter.o CC net/filter-replay.o CC qom/cpu.o CC replay/replay.o CC replay/replay-events.o CC replay/replay-internal.o CC replay/replay-time.o CC replay/replay-input.o CC replay/replay-char.o CC replay/replay-snapshot.o CC replay/replay-net.o CC slirp/cksum.o CC slirp/if.o CC slirp/ip_icmp.o CC slirp/ip6_icmp.o CC slirp/ip6_input.o CC slirp/ip6_output.o CC slirp/ip_input.o CC slirp/ip_output.o CC slirp/dnssearch.o CC slirp/dhcpv6.o CC slirp/slirp.o CC slirp/mbuf.o CC slirp/misc.o CC slirp/sbuf.o CC slirp/socket.o CC slirp/tcp_input.o CC slirp/tcp_output.o CC slirp/tcp_subr.o CC slirp/tcp_timer.o CC slirp/udp.o CC slirp/udp6.o CC slirp/bootp.o CC slirp/tftp.o CC slirp/arp_table.o CC slirp/ndp_table.o CC ui/keymaps.o CC ui/console.o CC ui/cursor.o CC ui/qemu-pixman.o CC ui/input.o CC ui/input-keymap.o CC ui/input-legacy.o CC ui/input-linux.o CC ui/sdl2-input.o CC ui/sdl2.o CC ui/sdl2-2d.o CC ui/sdl2-gl.o CC ui/x_keymap.o CC ui/curses.o CC ui/vnc.o CC ui/vnc-enc-zlib.o CC ui/vnc-enc-hextile.o CC ui/vnc-enc-tight.o CC ui/vnc-palette.o CC ui/vnc-enc-zrle.o CC ui/vnc-auth-vencrypt.o CC ui/vnc-auth-sasl.o CC ui/vnc-ws.o CC ui/vnc-jobs.o CC ui/gtk.o CC ui/shader.o VERT ui/shader/texture-blit-vert.h FRAG ui/shader/texture-blit-frag.h CC ui/egl-helpers.o CC ui/egl-context.o CC ui/gtk-gl-area.o CC chardev/char.o CC chardev/char-fd.o CC chardev/char-file.o CC chardev/char-io.o CC chardev/char-mux.o CC chardev/char-null.o CC chardev/char-parallel.o CC chardev/char-pipe.o CC chardev/char-pty.o CC chardev/char-ringbuf.o CC chardev/char-serial.o CC chardev/char-socket.o CC chardev/char-stdio.o CC chardev/char-udp.o CCAS s390-ccw/start.o LINK tests/qemu-iotests/socket_scm_helper GEN qemu-doc.html CC s390-ccw/main.o GEN qemu-doc.txt GEN qemu.1 CC s390-ccw/bootmap.o CC s390-ccw/sclp-ascii.o CC s390-ccw/virtio.o GEN docs/qemu-qmp-ref.html CC s390-ccw/virtio-scsi.o BUILD s390-ccw/s390-ccw.elf STRIP s390-ccw/s390-ccw.img GEN docs/qemu-qmp-ref.txt GEN docs/qemu-qmp-ref.7 GEN docs/qemu-ga-ref.html GEN docs/qemu-ga-ref.txt GEN docs/qemu-ga-ref.7 CC qga/commands.o CC qga/guest-agent-command-state.o CC qga/main.o CC qga/commands-posix.o CC qga/channel-posix.o CC qga/qapi-generated/qga-qapi-types.o CC qga/qapi-generated/qga-qapi-visit.o CC qga/qapi-generated/qga-qmp-marshal.o CC qmp-introspect.o CC qapi-types.o CC qapi-visit.o CC qapi-event.o AR libqemustub.a CC qemu-img.o CC qmp-marshal.o CC ui/console-gl.o CC trace-root.o CC util/trace.o CC crypto/trace.o CC io/trace.o CC migration/trace.o CC block/trace.o CC backends/trace.o CC hw/block/trace.o CC hw/block/dataplane/trace.o CC hw/intc/trace.o CC hw/char/trace.o CC hw/net/trace.o CC hw/virtio/trace.o CC hw/audio/trace.o CC hw/misc/trace.o CC hw/usb/trace.o CC hw/scsi/trace.o CC hw/nvram/trace.o CC hw/display/trace.o CC hw/input/trace.o CC hw/timer/trace.o CC hw/dma/trace.o CC hw/sparc/trace.o CC hw/sd/trace.o CC hw/isa/trace.o CC hw/mem/trace.o CC hw/i386/trace.o CC hw/i386/xen/trace.o CC hw/9pfs/trace.o CC hw/ppc/trace.o CC hw/pci/trace.o CC hw/s390x/trace.o CC hw/vfio/trace.o CC hw/acpi/trace.o CC hw/arm/trace.o CC hw/alpha/trace.o CC hw/xen/trace.o CC ui/trace.o CC audio/trace.o CC net/trace.o CC target/arm/trace.o CC target/i386/trace.o CC target/sparc/trace.o CC target/s390x/trace.o CC target/ppc/trace.o CC qom/trace.o CC linux-user/trace.o CC qapi/trace.o AR libqemuutil.a LINK qemu-ga LINK ivshmem-client LINK ivshmem-server LINK qemu-nbd LINK qemu-img LINK qemu-io LINK fsdev/virtfs-proxy-helper LINK qemu-bridge-helper GEN alpha-softmmu/hmp-commands.h GEN cris-softmmu/hmp-commands.h GEN cris-softmmu/hmp-commands-info.h GEN cris-softmmu/config-target.h CC cris-softmmu/exec.o GEN alpha-softmmu/hmp-commands-info.h GEN alpha-softmmu/config-target.h GEN arm-softmmu/hmp-commands.h GEN aarch64-softmmu/hmp-commands.h GEN arm-softmmu/hmp-commands-info.h CC alpha-softmmu/exec.o GEN aarch64-softmmu/hmp-commands-info.h GEN arm-softmmu/config-target.h GEN aarch64-softmmu/config-target.h CC arm-softmmu/exec.o CC aarch64-softmmu/exec.o CC cris-softmmu/translate-all.o CC alpha-softmmu/translate-all.o CC aarch64-softmmu/translate-all.o CC cris-softmmu/cpu-exec.o CC arm-softmmu/translate-all.o CC alpha-softmmu/cpu-exec.o CC cris-softmmu/translate-common.o CC aarch64-softmmu/cpu-exec.o CC alpha-softmmu/translate-common.o CC cris-softmmu/cpu-exec-common.o CC arm-softmmu/cpu-exec.o CC alpha-softmmu/cpu-exec-common.o CC cris-softmmu/tcg/tcg.o CC alpha-softmmu/tcg/tcg.o CC aarch64-softmmu/translate-common.o CC arm-softmmu/translate-common.o CC aarch64-softmmu/cpu-exec-common.o CC arm-softmmu/cpu-exec-common.o CC aarch64-softmmu/tcg/tcg.o CC arm-softmmu/tcg/tcg.o CC cris-softmmu/tcg/tcg-op.o CC alpha-softmmu/tcg/tcg-op.o CC arm-softmmu/tcg/tcg-op.o CC aarch64-softmmu/tcg/tcg-op.o CC cris-softmmu/tcg/optimize.o CC alpha-softmmu/tcg/optimize.o CC cris-softmmu/tcg/tcg-common.o CC cris-softmmu/fpu/softfloat.o CC alpha-softmmu/tcg/tcg-common.o CC alpha-softmmu/fpu/softfloat.o CC arm-softmmu/tcg/optimize.o CC aarch64-softmmu/tcg/optimize.o CC arm-softmmu/tcg/tcg-common.o CC aarch64-softmmu/tcg/tcg-common.o CC arm-softmmu/fpu/softfloat.o CC aarch64-softmmu/fpu/softfloat.o CC cris-softmmu/disas.o CC alpha-softmmu/disas.o CC cris-softmmu/tcg-runtime.o CC alpha-softmmu/tcg-runtime.o CC alpha-softmmu/hax-stub.o CC cris-softmmu/hax-stub.o CC alpha-softmmu/kvm-stub.o CC cris-softmmu/kvm-stub.o CC alpha-softmmu/arch_init.o CC cris-softmmu/arch_init.o CC arm-softmmu/disas.o CC cris-softmmu/cpus.o CC alpha-softmmu/cpus.o CC arm-softmmu/tcg-runtime.o CC cris-softmmu/monitor.o GEN arm-softmmu/gdbstub-xml.c CC alpha-softmmu/monitor.o CC aarch64-softmmu/disas.o CC aarch64-softmmu/tcg-runtime.o CC arm-softmmu/hax-stub.o GEN aarch64-softmmu/gdbstub-xml.c CC arm-softmmu/kvm-stub.o CC cris-softmmu/gdbstub.o CC alpha-softmmu/gdbstub.o CC arm-softmmu/arch_init.o CC cris-softmmu/balloon.o CC alpha-softmmu/balloon.o CC arm-softmmu/cpus.o CC cris-softmmu/ioport.o CC aarch64-softmmu/hax-stub.o CC alpha-softmmu/ioport.o CC cris-softmmu/numa.o CC aarch64-softmmu/kvm-stub.o CC arm-softmmu/monitor.o CC alpha-softmmu/numa.o CC aarch64-softmmu/arch_init.o CC cris-softmmu/qtest.o CC aarch64-softmmu/cpus.o CC alpha-softmmu/qtest.o CC cris-softmmu/bootdevice.o CC cris-softmmu/memory.o CC alpha-softmmu/bootdevice.o CC aarch64-softmmu/monitor.o CC alpha-softmmu/memory.o CC arm-softmmu/gdbstub.o CC cris-softmmu/cputlb.o CC arm-softmmu/balloon.o CC alpha-softmmu/cputlb.o CC arm-softmmu/ioport.o CC aarch64-softmmu/gdbstub.o CC arm-softmmu/numa.o CC cris-softmmu/memory_mapping.o CC cris-softmmu/dump.o CC aarch64-softmmu/balloon.o CC arm-softmmu/qtest.o CC aarch64-softmmu/ioport.o CC arm-softmmu/bootdevice.o CC alpha-softmmu/memory_mapping.o CC cris-softmmu/migration/ram.o CC arm-softmmu/memory.o CC alpha-softmmu/dump.o CC aarch64-softmmu/numa.o CC cris-softmmu/migration/savevm.o CC aarch64-softmmu/qtest.o CC alpha-softmmu/migration/ram.o CC arm-softmmu/cputlb.o CC aarch64-softmmu/bootdevice.o CC cris-softmmu/xen-common-stub.o CC aarch64-softmmu/memory.o CC cris-softmmu/xen-hvm-stub.o CC alpha-softmmu/migration/savevm.o CC cris-softmmu/hw/core/nmi.o CC cris-softmmu/hw/core/generic-loader.o CC cris-softmmu/hw/core/null-machine.o CC aarch64-softmmu/cputlb.o CC arm-softmmu/memory_mapping.o CC cris-softmmu/hw/cpu/core.o CC arm-softmmu/dump.o CC cris-softmmu/hw/net/etraxfs_eth.o CC alpha-softmmu/xen-common-stub.o CC cris-softmmu/hw/net/vhost_net.o CC alpha-softmmu/xen-hvm-stub.o CC cris-softmmu/hw/net/rocker/qmp-norocker.o CC cris-softmmu/hw/vfio/common.o CC alpha-softmmu/hw/9pfs/virtio-9p-device.o CC arm-softmmu/migration/ram.o CC alpha-softmmu/hw/block/virtio-blk.o CC aarch64-softmmu/memory_mapping.o CC cris-softmmu/hw/vfio/platform.o CC aarch64-softmmu/dump.o CC cris-softmmu/hw/vfio/spapr.o CC arm-softmmu/migration/savevm.o CC alpha-softmmu/hw/block/dataplane/virtio-blk.o CC cris-softmmu/hw/cris/boot.o CC aarch64-softmmu/migration/ram.o CC alpha-softmmu/hw/char/virtio-serial-bus.o CC cris-softmmu/hw/cris/axis_dev88.o CC alpha-softmmu/hw/core/nmi.o CC arm-softmmu/xen-common-stub.o CC cris-softmmu/target/cris/translate.o CC alpha-softmmu/hw/core/generic-loader.o CC arm-softmmu/xen-hvm-stub.o CC alpha-softmmu/hw/core/null-machine.o CC arm-softmmu/hw/9pfs/virtio-9p-device.o CC aarch64-softmmu/migration/savevm.o CC arm-softmmu/hw/adc/stm32f2xx_adc.o CC alpha-softmmu/hw/cpu/core.o CC arm-softmmu/hw/block/virtio-blk.o CC alpha-softmmu/hw/display/vga.o CC aarch64-softmmu/xen-common-stub.o CC arm-softmmu/hw/block/dataplane/virtio-blk.o CC aarch64-softmmu/xen-hvm-stub.o CC cris-softmmu/target/cris/op_helper.o CC arm-softmmu/hw/char/exynos4210_uart.o CC alpha-softmmu/hw/display/virtio-gpu.o CC aarch64-softmmu/hw/9pfs/virtio-9p-device.o CC arm-softmmu/hw/char/omap_uart.o CC arm-softmmu/hw/char/digic-uart.o CC cris-softmmu/target/cris/helper.o CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o CC arm-softmmu/hw/char/stm32f2xx_usart.o CC alpha-softmmu/hw/display/virtio-gpu-3d.o CC cris-softmmu/target/cris/cpu.o CC aarch64-softmmu/hw/block/virtio-blk.o CC arm-softmmu/hw/char/bcm2835_aux.o CC cris-softmmu/target/cris/gdbstub.o CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o CC alpha-softmmu/hw/display/virtio-gpu-pci.o CC arm-softmmu/hw/char/virtio-serial-bus.o CC cris-softmmu/target/cris/mmu.o CC aarch64-softmmu/hw/char/exynos4210_uart.o CC cris-softmmu/target/cris/machine.o CC alpha-softmmu/hw/misc/ivshmem.o CC arm-softmmu/hw/core/nmi.o CC aarch64-softmmu/hw/char/omap_uart.o GEN trace/generated-helpers.c CC cris-softmmu/trace/control-target.o CC arm-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/hw/char/digic-uart.o CC alpha-softmmu/hw/misc/edu.o CC arm-softmmu/hw/core/null-machine.o CC cris-softmmu/trace/generated-helpers.o CC aarch64-softmmu/hw/char/stm32f2xx_usart.o CC alpha-softmmu/hw/net/virtio-net.o LINK cris-softmmu/qemu-system-cris CC arm-softmmu/hw/cpu/arm11mpcore.o CC aarch64-softmmu/hw/char/bcm2835_aux.o CC arm-softmmu/hw/cpu/realview_mpcore.o CC arm-softmmu/hw/cpu/a9mpcore.o CC aarch64-softmmu/hw/char/virtio-serial-bus.o CC alpha-softmmu/hw/net/vhost_net.o CC arm-softmmu/hw/cpu/a15mpcore.o CC alpha-softmmu/hw/scsi/virtio-scsi.o CC arm-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/core/nmi.o CC arm-softmmu/hw/display/omap_dss.o CC aarch64-softmmu/hw/core/generic-loader.o CC alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-softmmu/hw/core/null-machine.o CC aarch64-softmmu/hw/cpu/arm11mpcore.o CC arm-softmmu/hw/display/omap_lcdc.o CC alpha-softmmu/hw/scsi/vhost-scsi.o CC arm-softmmu/hw/display/pxa2xx_lcd.o CC aarch64-softmmu/hw/cpu/realview_mpcore.o CC aarch64-softmmu/hw/cpu/a9mpcore.o CC alpha-softmmu/hw/timer/mc146818rtc.o CC aarch64-softmmu/hw/cpu/a15mpcore.o CC aarch64-softmmu/hw/cpu/core.o CC alpha-softmmu/hw/vfio/common.o CC aarch64-softmmu/hw/display/omap_dss.o CC arm-softmmu/hw/display/bcm2835_fb.o GEN i386-softmmu/hmp-commands.h GEN i386-softmmu/hmp-commands-info.h CC aarch64-softmmu/hw/display/omap_lcdc.o GEN i386-softmmu/config-target.h CC i386-softmmu/exec.o CC alpha-softmmu/hw/vfio/pci.o CC arm-softmmu/hw/display/vga.o CC aarch64-softmmu/hw/display/pxa2xx_lcd.o CC arm-softmmu/hw/display/virtio-gpu.o CC alpha-softmmu/hw/vfio/pci-quirks.o CC aarch64-softmmu/hw/display/bcm2835_fb.o CC i386-softmmu/translate-all.o CC arm-softmmu/hw/display/virtio-gpu-3d.o CC alpha-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/display/vga.o CC i386-softmmu/cpu-exec.o CC alpha-softmmu/hw/vfio/spapr.o CC arm-softmmu/hw/display/virtio-gpu-pci.o CC alpha-softmmu/hw/virtio/virtio.o CC i386-softmmu/translate-common.o CC arm-softmmu/hw/dma/omap_dma.o CC i386-softmmu/cpu-exec-common.o CC aarch64-softmmu/hw/display/virtio-gpu.o CC alpha-softmmu/hw/virtio/virtio-balloon.o CC i386-softmmu/tcg/tcg.o CC arm-softmmu/hw/dma/soc_dma.o CC alpha-softmmu/hw/virtio/vhost.o CC aarch64-softmmu/hw/display/virtio-gpu-3d.o CC arm-softmmu/hw/dma/pxa2xx_dma.o CC arm-softmmu/hw/dma/bcm2835_dma.o CC aarch64-softmmu/hw/display/virtio-gpu-pci.o CC alpha-softmmu/hw/virtio/vhost-backend.o CC arm-softmmu/hw/gpio/omap_gpio.o CC aarch64-softmmu/hw/display/dpcd.o CC alpha-softmmu/hw/virtio/vhost-user.o CC arm-softmmu/hw/gpio/imx_gpio.o CC aarch64-softmmu/hw/display/xlnx_dp.o CC alpha-softmmu/hw/virtio/vhost-vsock.o CC i386-softmmu/tcg/tcg-op.o CC arm-softmmu/hw/gpio/bcm2835_gpio.o CC alpha-softmmu/hw/virtio/virtio-crypto.o CC aarch64-softmmu/hw/dma/xlnx_dpdma.o CC arm-softmmu/hw/i2c/omap_i2c.o CC alpha-softmmu/hw/virtio/virtio-crypto-pci.o CC alpha-softmmu/hw/alpha/dp264.o CC arm-softmmu/hw/input/pxa2xx_keypad.o CC aarch64-softmmu/hw/dma/omap_dma.o CC alpha-softmmu/hw/alpha/pci.o CC arm-softmmu/hw/input/tsc210x.o CC alpha-softmmu/hw/alpha/typhoon.o CC aarch64-softmmu/hw/dma/soc_dma.o CC alpha-softmmu/target/alpha/machine.o CC arm-softmmu/hw/intc/armv7m_nvic.o CC alpha-softmmu/target/alpha/translate.o CC aarch64-softmmu/hw/dma/pxa2xx_dma.o CC i386-softmmu/tcg/optimize.o CC aarch64-softmmu/hw/dma/bcm2835_dma.o CC arm-softmmu/hw/intc/exynos4210_gic.o CC aarch64-softmmu/hw/gpio/omap_gpio.o CC arm-softmmu/hw/intc/exynos4210_combiner.o CC alpha-softmmu/target/alpha/helper.o CC arm-softmmu/hw/intc/omap_intc.o CC aarch64-softmmu/hw/gpio/imx_gpio.o CC alpha-softmmu/target/alpha/cpu.o CC i386-softmmu/tcg/tcg-common.o CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o CC alpha-softmmu/target/alpha/int_helper.o CC i386-softmmu/fpu/softfloat.o CC arm-softmmu/hw/intc/bcm2835_ic.o CC aarch64-softmmu/hw/i2c/omap_i2c.o CC alpha-softmmu/target/alpha/fpu_helper.o CC arm-softmmu/hw/intc/bcm2836_control.o CC aarch64-softmmu/hw/input/pxa2xx_keypad.o CC arm-softmmu/hw/intc/allwinner-a10-pic.o CC aarch64-softmmu/hw/input/tsc210x.o CC alpha-softmmu/target/alpha/vax_helper.o CC arm-softmmu/hw/intc/aspeed_vic.o CC alpha-softmmu/target/alpha/sys_helper.o CC arm-softmmu/hw/intc/arm_gicv3_cpuif.o CC aarch64-softmmu/hw/intc/armv7m_nvic.o CC alpha-softmmu/target/alpha/mem_helper.o CC alpha-softmmu/target/alpha/gdbstub.o CC aarch64-softmmu/hw/intc/exynos4210_gic.o CC arm-softmmu/hw/misc/ivshmem.o CC i386-softmmu/disas.o GEN trace/generated-helpers.c CC aarch64-softmmu/hw/intc/exynos4210_combiner.o CC alpha-softmmu/trace/control-target.o CC aarch64-softmmu/hw/intc/omap_intc.o CC alpha-softmmu/trace/generated-helpers.o CC i386-softmmu/tcg-runtime.o CC arm-softmmu/hw/misc/arm_sysctl.o LINK alpha-softmmu/qemu-system-alpha CC i386-softmmu/hax-stub.o CC arm-softmmu/hw/misc/cbus.o CC aarch64-softmmu/hw/intc/bcm2835_ic.o CC i386-softmmu/kvm-stub.o CC i386-softmmu/arch_init.o CC arm-softmmu/hw/misc/exynos4210_pmu.o CC aarch64-softmmu/hw/intc/bcm2836_control.o CC i386-softmmu/cpus.o CC arm-softmmu/hw/misc/exynos4210_clk.o CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o CC i386-softmmu/monitor.o CC arm-softmmu/hw/misc/imx_ccm.o CC aarch64-softmmu/hw/intc/aspeed_vic.o CC arm-softmmu/hw/misc/imx31_ccm.o CC arm-softmmu/hw/misc/imx25_ccm.o CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o CC arm-softmmu/hw/misc/imx6_ccm.o CC arm-softmmu/hw/misc/imx6_src.o CC arm-softmmu/hw/misc/mst_fpga.o CC i386-softmmu/gdbstub.o CC arm-softmmu/hw/misc/omap_clk.o CC aarch64-softmmu/hw/misc/ivshmem.o GEN lm32-softmmu/hmp-commands.h GEN lm32-softmmu/hmp-commands-info.h GEN lm32-softmmu/config-target.h CC arm-softmmu/hw/misc/omap_gpmc.o CC aarch64-softmmu/hw/misc/arm_sysctl.o CC lm32-softmmu/exec.o CC i386-softmmu/balloon.o CC arm-softmmu/hw/misc/omap_l4.o CC aarch64-softmmu/hw/misc/cbus.o CC i386-softmmu/ioport.o CC arm-softmmu/hw/misc/omap_sdrc.o CC aarch64-softmmu/hw/misc/exynos4210_pmu.o CC i386-softmmu/numa.o CC arm-softmmu/hw/misc/omap_tap.o CC aarch64-softmmu/hw/misc/exynos4210_clk.o CC arm-softmmu/hw/misc/bcm2835_mbox.o CC i386-softmmu/qtest.o CC aarch64-softmmu/hw/misc/imx_ccm.o CC arm-softmmu/hw/misc/bcm2835_property.o CC aarch64-softmmu/hw/misc/imx31_ccm.o CC lm32-softmmu/translate-all.o CC i386-softmmu/bootdevice.o CC arm-softmmu/hw/misc/bcm2835_rng.o CC i386-softmmu/memory.o CC aarch64-softmmu/hw/misc/imx25_ccm.o CC arm-softmmu/hw/misc/zynq_slcr.o CC aarch64-softmmu/hw/misc/imx6_ccm.o CC lm32-softmmu/cpu-exec.o CC arm-softmmu/hw/misc/zynq-xadc.o CC aarch64-softmmu/hw/misc/imx6_src.o CC aarch64-softmmu/hw/misc/mst_fpga.o CC arm-softmmu/hw/misc/stm32f2xx_syscfg.o CC lm32-softmmu/translate-common.o CC aarch64-softmmu/hw/misc/omap_clk.o CC i386-softmmu/cputlb.o CC arm-softmmu/hw/misc/edu.o CC lm32-softmmu/cpu-exec-common.o CC aarch64-softmmu/hw/misc/omap_gpmc.o CC lm32-softmmu/tcg/tcg.o CC arm-softmmu/hw/misc/aspeed_scu.o CC aarch64-softmmu/hw/misc/omap_l4.o CC arm-softmmu/hw/misc/aspeed_sdmc.o CC i386-softmmu/memory_mapping.o CC aarch64-softmmu/hw/misc/omap_sdrc.o CC arm-softmmu/hw/net/virtio-net.o CC i386-softmmu/dump.o CC aarch64-softmmu/hw/misc/omap_tap.o CC aarch64-softmmu/hw/misc/bcm2835_mbox.o CC lm32-softmmu/tcg/tcg-op.o CC i386-softmmu/migration/ram.o CC aarch64-softmmu/hw/misc/bcm2835_property.o CC arm-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/misc/bcm2835_rng.o CC arm-softmmu/hw/pcmcia/pxa2xx.o CC aarch64-softmmu/hw/misc/zynq_slcr.o CC arm-softmmu/hw/scsi/virtio-scsi.o CC i386-softmmu/migration/savevm.o CC aarch64-softmmu/hw/misc/zynq-xadc.o CC arm-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o CC aarch64-softmmu/hw/misc/edu.o CC arm-softmmu/hw/scsi/vhost-scsi.o CC i386-softmmu/xen-common-stub.o CC aarch64-softmmu/hw/misc/auxbus.o CC lm32-softmmu/tcg/optimize.o CC arm-softmmu/hw/sd/omap_mmc.o CC i386-softmmu/xen-hvm-stub.o CC aarch64-softmmu/hw/misc/aspeed_scu.o CC arm-softmmu/hw/sd/pxa2xx_mmci.o CC i386-softmmu/hw/9pfs/virtio-9p-device.o CC aarch64-softmmu/hw/misc/aspeed_sdmc.o CC lm32-softmmu/tcg/tcg-common.o CC i386-softmmu/hw/block/virtio-blk.o CC arm-softmmu/hw/sd/bcm2835_sdhost.o CC lm32-softmmu/fpu/softfloat.o CC aarch64-softmmu/hw/net/virtio-net.o CC arm-softmmu/hw/ssi/omap_spi.o CC i386-softmmu/hw/block/dataplane/virtio-blk.o CC arm-softmmu/hw/ssi/imx_spi.o CC i386-softmmu/hw/char/virtio-serial-bus.o CC aarch64-softmmu/hw/net/vhost_net.o CC arm-softmmu/hw/timer/exynos4210_mct.o CC aarch64-softmmu/hw/pcmcia/pxa2xx.o CC arm-softmmu/hw/timer/exynos4210_pwm.o CC i386-softmmu/hw/core/nmi.o CC aarch64-softmmu/hw/scsi/virtio-scsi.o CC arm-softmmu/hw/timer/exynos4210_rtc.o CC i386-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC i386-softmmu/hw/core/null-machine.o CC arm-softmmu/hw/timer/omap_gptimer.o CC aarch64-softmmu/hw/scsi/vhost-scsi.o CC i386-softmmu/hw/cpu/core.o CC arm-softmmu/hw/timer/omap_synctimer.o CC lm32-softmmu/disas.o CC i386-softmmu/hw/display/vga.o CC aarch64-softmmu/hw/sd/omap_mmc.o CC arm-softmmu/hw/timer/pxa2xx_timer.o CC lm32-softmmu/tcg-runtime.o CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o CC arm-softmmu/hw/timer/digic-timer.o CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o CC lm32-softmmu/hax-stub.o CC arm-softmmu/hw/timer/allwinner-a10-pit.o CC i386-softmmu/hw/display/virtio-gpu.o CC aarch64-softmmu/hw/ssi/omap_spi.o CC arm-softmmu/hw/usb/tusb6010.o CC lm32-softmmu/kvm-stub.o CC lm32-softmmu/arch_init.o CC arm-softmmu/hw/vfio/common.o CC aarch64-softmmu/hw/ssi/imx_spi.o CC lm32-softmmu/cpus.o CC aarch64-softmmu/hw/timer/exynos4210_mct.o CC i386-softmmu/hw/display/virtio-gpu-3d.o CC arm-softmmu/hw/vfio/pci.o CC aarch64-softmmu/hw/timer/exynos4210_pwm.o CC i386-softmmu/hw/display/virtio-gpu-pci.o CC lm32-softmmu/monitor.o CC i386-softmmu/hw/display/virtio-vga.o CC aarch64-softmmu/hw/timer/exynos4210_rtc.o CC aarch64-softmmu/hw/timer/omap_gptimer.o CC arm-softmmu/hw/vfio/pci-quirks.o CC i386-softmmu/hw/intc/apic.o CC aarch64-softmmu/hw/timer/omap_synctimer.o CC aarch64-softmmu/hw/timer/pxa2xx_timer.o CC lm32-softmmu/gdbstub.o CC i386-softmmu/hw/intc/apic_common.o CC arm-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/timer/digic-timer.o CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o CC i386-softmmu/hw/intc/ioapic.o CC arm-softmmu/hw/vfio/calxeda-xgmac.o CC lm32-softmmu/balloon.o CC arm-softmmu/hw/vfio/amd-xgbe.o CC aarch64-softmmu/hw/usb/tusb6010.o CC lm32-softmmu/ioport.o CC i386-softmmu/hw/isa/lpc_ich9.o CC arm-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/vfio/common.o CC lm32-softmmu/numa.o CC i386-softmmu/hw/misc/vmport.o CC arm-softmmu/hw/virtio/virtio.o CC aarch64-softmmu/hw/vfio/pci.o CC i386-softmmu/hw/misc/ivshmem.o CC lm32-softmmu/qtest.o CC i386-softmmu/hw/misc/pvpanic.o CC arm-softmmu/hw/virtio/virtio-balloon.o CC i386-softmmu/hw/misc/edu.o CC lm32-softmmu/bootdevice.o CC arm-softmmu/hw/virtio/vhost.o CC aarch64-softmmu/hw/vfio/pci-quirks.o CC lm32-softmmu/memory.o CC i386-softmmu/hw/net/virtio-net.o CC arm-softmmu/hw/virtio/vhost-backend.o CC aarch64-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o CC arm-softmmu/hw/virtio/vhost-user.o CC aarch64-softmmu/hw/vfio/amd-xgbe.o CC i386-softmmu/hw/net/vhost_net.o CC arm-softmmu/hw/virtio/vhost-vsock.o CC aarch64-softmmu/hw/vfio/spapr.o CC i386-softmmu/hw/scsi/virtio-scsi.o CC lm32-softmmu/cputlb.o CC arm-softmmu/hw/virtio/virtio-crypto.o CC aarch64-softmmu/hw/virtio/virtio.o CC arm-softmmu/hw/virtio/virtio-crypto-pci.o CC i386-softmmu/hw/scsi/virtio-scsi-dataplane.o CC arm-softmmu/hw/arm/boot.o CC i386-softmmu/hw/scsi/vhost-scsi.o CC arm-softmmu/hw/arm/collie.o CC i386-softmmu/hw/timer/mc146818rtc.o CC aarch64-softmmu/hw/virtio/virtio-balloon.o CC lm32-softmmu/memory_mapping.o CC lm32-softmmu/dump.o CC arm-softmmu/hw/arm/exynos4_boards.o CC aarch64-softmmu/hw/virtio/vhost.o CC i386-softmmu/hw/vfio/common.o CC arm-softmmu/hw/arm/gumstix.o CC arm-softmmu/hw/arm/highbank.o CC lm32-softmmu/migration/ram.o CC i386-softmmu/hw/vfio/pci.o CC aarch64-softmmu/hw/virtio/vhost-backend.o CC arm-softmmu/hw/arm/digic_boards.o CC i386-softmmu/hw/vfio/pci-quirks.o CC arm-softmmu/hw/arm/integratorcp.o CC aarch64-softmmu/hw/virtio/vhost-user.o CC lm32-softmmu/migration/savevm.o CC aarch64-softmmu/hw/virtio/vhost-vsock.o CC i386-softmmu/hw/vfio/platform.o CC arm-softmmu/hw/arm/mainstone.o CC aarch64-softmmu/hw/virtio/virtio-crypto.o CC arm-softmmu/hw/arm/musicpal.o CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o CC i386-softmmu/hw/vfio/spapr.o CC lm32-softmmu/xen-common-stub.o CC aarch64-softmmu/hw/arm/boot.o CC lm32-softmmu/xen-hvm-stub.o CC i386-softmmu/hw/virtio/virtio.o CC lm32-softmmu/hw/core/nmi.o CC arm-softmmu/hw/arm/nseries.o CC aarch64-softmmu/hw/arm/collie.o CC lm32-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/hw/arm/exynos4_boards.o CC lm32-softmmu/hw/core/null-machine.o CC arm-softmmu/hw/arm/omap_sx1.o CC i386-softmmu/hw/virtio/virtio-balloon.o CC aarch64-softmmu/hw/arm/gumstix.o CC lm32-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/arm/highbank.o CC i386-softmmu/hw/virtio/vhost.o CC arm-softmmu/hw/arm/palm.o CC lm32-softmmu/hw/input/milkymist-softusb.o CC arm-softmmu/hw/arm/realview.o CC aarch64-softmmu/hw/arm/digic_boards.o CC i386-softmmu/hw/virtio/vhost-backend.o CC arm-softmmu/hw/arm/spitz.o CC lm32-softmmu/hw/misc/milkymist-hpdmc.o CC aarch64-softmmu/hw/arm/integratorcp.o CC i386-softmmu/hw/virtio/vhost-user.o CC aarch64-softmmu/hw/arm/mainstone.o CC lm32-softmmu/hw/misc/milkymist-pfpu.o CC arm-softmmu/hw/arm/stellaris.o CC aarch64-softmmu/hw/arm/musicpal.o CC i386-softmmu/hw/virtio/vhost-vsock.o CC lm32-softmmu/hw/net/milkymist-minimac2.o CC i386-softmmu/hw/virtio/virtio-crypto.o CC arm-softmmu/hw/arm/tosa.o CC lm32-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/arm/nseries.o CC lm32-softmmu/hw/net/rocker/qmp-norocker.o CC arm-softmmu/hw/arm/versatilepb.o CC i386-softmmu/hw/virtio/virtio-crypto-pci.o CC lm32-softmmu/hw/sd/milkymist-memcard.o CC arm-softmmu/hw/arm/vexpress.o CC aarch64-softmmu/hw/arm/omap_sx1.o CC i386-softmmu/hw/i386/multiboot.o CC lm32-softmmu/hw/vfio/common.o CC arm-softmmu/hw/arm/virt.o CC i386-softmmu/hw/i386/pc.o CC aarch64-softmmu/hw/arm/palm.o CC lm32-softmmu/hw/vfio/platform.o CC arm-softmmu/hw/arm/xilinx_zynq.o CC aarch64-softmmu/hw/arm/realview.o CC arm-softmmu/hw/arm/z2.o CC lm32-softmmu/hw/vfio/spapr.o CC i386-softmmu/hw/i386/pc_piix.o CC aarch64-softmmu/hw/arm/spitz.o CC lm32-softmmu/hw/lm32/lm32_boards.o CC arm-softmmu/hw/arm/virt-acpi-build.o CC aarch64-softmmu/hw/arm/stellaris.o CC i386-softmmu/hw/i386/pc_q35.o CC lm32-softmmu/hw/lm32/milkymist.o CC arm-softmmu/hw/arm/netduino2.o CC aarch64-softmmu/hw/arm/tosa.o CC arm-softmmu/hw/arm/sysbus-fdt.o CC i386-softmmu/hw/i386/pc_sysfw.o CC aarch64-softmmu/hw/arm/versatilepb.o CC lm32-softmmu/target/lm32/translate.o CC arm-softmmu/hw/arm/armv7m.o CC i386-softmmu/hw/i386/x86-iommu.o CC aarch64-softmmu/hw/arm/vexpress.o CC i386-softmmu/hw/i386/intel_iommu.o CC arm-softmmu/hw/arm/exynos4210.o CC aarch64-softmmu/hw/arm/virt.o CC lm32-softmmu/target/lm32/op_helper.o CC arm-softmmu/hw/arm/pxa2xx.o CC lm32-softmmu/target/lm32/helper.o CC aarch64-softmmu/hw/arm/xilinx_zynq.o CC lm32-softmmu/target/lm32/cpu.o CC i386-softmmu/hw/i386/amd_iommu.o CC aarch64-softmmu/hw/arm/z2.o CC lm32-softmmu/target/lm32/gdbstub.o CC lm32-softmmu/target/lm32/lm32-semi.o CC arm-softmmu/hw/arm/pxa2xx_gpio.o CC i386-softmmu/hw/i386/kvmvapic.o CC aarch64-softmmu/hw/arm/virt-acpi-build.o CC lm32-softmmu/target/lm32/machine.o CC arm-softmmu/hw/arm/pxa2xx_pic.o CC i386-softmmu/hw/i386/acpi-build.o GEN trace/generated-helpers.c CC aarch64-softmmu/hw/arm/netduino2.o CC lm32-softmmu/trace/control-target.o CC arm-softmmu/hw/arm/digic.o CC aarch64-softmmu/hw/arm/sysbus-fdt.o CC lm32-softmmu/trace/generated-helpers.o CC arm-softmmu/hw/arm/omap1.o LINK lm32-softmmu/qemu-system-lm32 CC aarch64-softmmu/hw/arm/armv7m.o CC i386-softmmu/hw/i386/pci-assign-load-rom.o CC aarch64-softmmu/hw/arm/exynos4210.o CC arm-softmmu/hw/arm/omap2.o CC i386-softmmu/target/i386/translate.o CC aarch64-softmmu/hw/arm/pxa2xx.o CC arm-softmmu/hw/arm/strongarm.o GEN m68k-softmmu/hmp-commands.h GEN m68k-softmmu/hmp-commands-info.h CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o GEN m68k-softmmu/config-target.h CC m68k-softmmu/exec.o CC aarch64-softmmu/hw/arm/pxa2xx_pic.o CC arm-softmmu/hw/arm/allwinner-a10.o CC aarch64-softmmu/hw/arm/digic.o CC arm-softmmu/hw/arm/cubieboard.o CC aarch64-softmmu/hw/arm/omap1.o CC arm-softmmu/hw/arm/bcm2835_peripherals.o CC arm-softmmu/hw/arm/bcm2836.o CC m68k-softmmu/translate-all.o CC arm-softmmu/hw/arm/raspi.o CC aarch64-softmmu/hw/arm/omap2.o CC m68k-softmmu/cpu-exec.o CC arm-softmmu/hw/arm/stm32f205_soc.o CC m68k-softmmu/translate-common.o CC aarch64-softmmu/hw/arm/strongarm.o CC arm-softmmu/hw/arm/fsl-imx25.o CC m68k-softmmu/cpu-exec-common.o CC arm-softmmu/hw/arm/imx25_pdk.o CC m68k-softmmu/tcg/tcg.o CC aarch64-softmmu/hw/arm/allwinner-a10.o CC arm-softmmu/hw/arm/fsl-imx31.o CC arm-softmmu/hw/arm/kzm.o CC aarch64-softmmu/hw/arm/cubieboard.o CC arm-softmmu/hw/arm/fsl-imx6.o CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o CC i386-softmmu/target/i386/helper.o CC arm-softmmu/hw/arm/sabrelite.o CC aarch64-softmmu/hw/arm/bcm2836.o CC m68k-softmmu/tcg/tcg-op.o CC i386-softmmu/target/i386/cpu.o CC arm-softmmu/hw/arm/aspeed_soc.o CC aarch64-softmmu/hw/arm/raspi.o CC arm-softmmu/hw/arm/aspeed.o CC i386-softmmu/target/i386/bpt_helper.o CC arm-softmmu/target/arm/arm-semi.o CC aarch64-softmmu/hw/arm/stm32f205_soc.o CC i386-softmmu/target/i386/excp_helper.o CC arm-softmmu/target/arm/machine.o CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o CC arm-softmmu/target/arm/psci.o CC i386-softmmu/target/i386/fpu_helper.o CC aarch64-softmmu/hw/arm/xlnx-ep108.o CC arm-softmmu/target/arm/arch_dump.o CC m68k-softmmu/tcg/optimize.o CC arm-softmmu/target/arm/monitor.o CC aarch64-softmmu/hw/arm/fsl-imx25.o CC arm-softmmu/target/arm/kvm-stub.o CC aarch64-softmmu/hw/arm/imx25_pdk.o CC arm-softmmu/target/arm/translate.o CC aarch64-softmmu/hw/arm/fsl-imx31.o CC m68k-softmmu/tcg/tcg-common.o CC aarch64-softmmu/hw/arm/kzm.o CC m68k-softmmu/fpu/softfloat.o CC aarch64-softmmu/hw/arm/fsl-imx6.o CC aarch64-softmmu/hw/arm/sabrelite.o CC aarch64-softmmu/hw/arm/aspeed_soc.o CC i386-softmmu/target/i386/cc_helper.o CC aarch64-softmmu/hw/arm/aspeed.o CC i386-softmmu/target/i386/int_helper.o CC aarch64-softmmu/target/arm/arm-semi.o CC i386-softmmu/target/i386/svm_helper.o CC aarch64-softmmu/target/arm/machine.o CC m68k-softmmu/disas.o CC i386-softmmu/target/i386/smm_helper.o CC aarch64-softmmu/target/arm/psci.o CC m68k-softmmu/tcg-runtime.o CC i386-softmmu/target/i386/misc_helper.o GEN m68k-softmmu/gdbstub-xml.c CC aarch64-softmmu/target/arm/arch_dump.o CC i386-softmmu/target/i386/mem_helper.o CC m68k-softmmu/hax-stub.o CC aarch64-softmmu/target/arm/monitor.o CC m68k-softmmu/kvm-stub.o CC i386-softmmu/target/i386/seg_helper.o CC aarch64-softmmu/target/arm/kvm-stub.o CC m68k-softmmu/arch_init.o CC aarch64-softmmu/target/arm/translate.o CC m68k-softmmu/cpus.o CC arm-softmmu/target/arm/op_helper.o CC m68k-softmmu/monitor.o CC arm-softmmu/target/arm/helper.o CC i386-softmmu/target/i386/mpx_helper.o CC m68k-softmmu/gdbstub.o CC i386-softmmu/target/i386/gdbstub.o CC i386-softmmu/target/i386/machine.o CC m68k-softmmu/balloon.o CC m68k-softmmu/ioport.o CC i386-softmmu/target/i386/arch_memory_mapping.o CC m68k-softmmu/numa.o CC i386-softmmu/target/i386/arch_dump.o CC m68k-softmmu/qtest.o CC i386-softmmu/target/i386/monitor.o CC arm-softmmu/target/arm/cpu.o CC m68k-softmmu/bootdevice.o CC i386-softmmu/target/i386/kvm-stub.o CC arm-softmmu/target/arm/neon_helper.o CC m68k-softmmu/memory.o GEN trace/generated-helpers.c CC i386-softmmu/trace/control-target.o CC aarch64-softmmu/target/arm/op_helper.o CC i386-softmmu/trace/generated-helpers.o LINK i386-softmmu/qemu-system-i386 CC arm-softmmu/target/arm/iwmmxt_helper.o CC m68k-softmmu/cputlb.o CC aarch64-softmmu/target/arm/helper.o CC arm-softmmu/target/arm/gdbstub.o CC arm-softmmu/target/arm/crypto_helper.o CC m68k-softmmu/memory_mapping.o GEN microblazeel-softmmu/hmp-commands.h GEN microblazeel-softmmu/hmp-commands-info.h CC arm-softmmu/target/arm/arm-powerctl.o GEN microblazeel-softmmu/config-target.h CC microblazeel-softmmu/exec.o CC m68k-softmmu/dump.o GEN trace/generated-helpers.c CC arm-softmmu/trace/control-target.o CC arm-softmmu/gdbstub-xml.o CC m68k-softmmu/migration/ram.o CC arm-softmmu/trace/generated-helpers.o CC aarch64-softmmu/target/arm/cpu.o CC m68k-softmmu/migration/savevm.o LINK arm-softmmu/qemu-system-arm CC microblazeel-softmmu/translate-all.o CC aarch64-softmmu/target/arm/neon_helper.o CC microblazeel-softmmu/cpu-exec.o CC m68k-softmmu/xen-common-stub.o CC microblazeel-softmmu/translate-common.o CC m68k-softmmu/xen-hvm-stub.o CC m68k-softmmu/hw/char/mcf_uart.o CC microblazeel-softmmu/cpu-exec-common.o CC aarch64-softmmu/target/arm/iwmmxt_helper.o CC microblazeel-softmmu/tcg/tcg.o CC m68k-softmmu/hw/core/nmi.o CC m68k-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/target/arm/gdbstub.o CC m68k-softmmu/hw/core/null-machine.o GEN microblaze-softmmu/hmp-commands.h CC m68k-softmmu/hw/cpu/core.o GEN microblaze-softmmu/hmp-commands-info.h CC aarch64-softmmu/target/arm/cpu64.o GEN microblaze-softmmu/config-target.h CC microblaze-softmmu/exec.o CC m68k-softmmu/hw/net/mcf_fec.o CC aarch64-softmmu/target/arm/translate-a64.o CC m68k-softmmu/hw/net/vhost_net.o CC microblazeel-softmmu/tcg/tcg-op.o CC m68k-softmmu/hw/net/rocker/qmp-norocker.o CC m68k-softmmu/hw/vfio/common.o CC microblaze-softmmu/translate-all.o CC m68k-softmmu/hw/vfio/platform.o CC microblazeel-softmmu/tcg/optimize.o CC m68k-softmmu/hw/vfio/spapr.o CC microblaze-softmmu/cpu-exec.o CC m68k-softmmu/hw/m68k/an5206.o CC microblaze-softmmu/translate-common.o CC m68k-softmmu/hw/m68k/mcf5208.o CC microblaze-softmmu/cpu-exec-common.o CC microblaze-softmmu/tcg/tcg.o CC m68k-softmmu/hw/m68k/mcf5206.o CC microblazeel-softmmu/tcg/tcg-common.o CC microblazeel-softmmu/fpu/softfloat.o CC m68k-softmmu/hw/m68k/mcf_intc.o CC aarch64-softmmu/target/arm/helper-a64.o CC m68k-softmmu/target/m68k/m68k-semi.o CC aarch64-softmmu/target/arm/gdbstub64.o CC m68k-softmmu/target/m68k/translate.o CC aarch64-softmmu/target/arm/crypto_helper.o CC microblaze-softmmu/tcg/tcg-op.o CC aarch64-softmmu/target/arm/arm-powerctl.o GEN trace/generated-helpers.c CC aarch64-softmmu/trace/control-target.o CC aarch64-softmmu/gdbstub-xml.o CC microblazeel-softmmu/disas.o CC aarch64-softmmu/trace/generated-helpers.o CC m68k-softmmu/target/m68k/op_helper.o CC microblazeel-softmmu/tcg-runtime.o LINK aarch64-softmmu/qemu-system-aarch64 CC microblazeel-softmmu/hax-stub.o CC microblaze-softmmu/tcg/optimize.o CC m68k-softmmu/target/m68k/helper.o CC microblazeel-softmmu/kvm-stub.o CC microblazeel-softmmu/arch_init.o CC m68k-softmmu/target/m68k/cpu.o CC microblazeel-softmmu/cpus.o CC microblaze-softmmu/tcg/tcg-common.o CC m68k-softmmu/target/m68k/gdbstub.o CC microblaze-softmmu/fpu/softfloat.o GEN trace/generated-helpers.c CC m68k-softmmu/trace/control-target.o CC microblazeel-softmmu/monitor.o CC m68k-softmmu/gdbstub-xml.o CC m68k-softmmu/trace/generated-helpers.o LINK m68k-softmmu/qemu-system-m68k GEN mips64el-softmmu/hmp-commands.h CC microblazeel-softmmu/gdbstub.o GEN mips64el-softmmu/hmp-commands-info.h GEN mips64el-softmmu/config-target.h CC mips64el-softmmu/exec.o CC microblazeel-softmmu/balloon.o CC microblazeel-softmmu/ioport.o CC microblaze-softmmu/disas.o CC microblazeel-softmmu/numa.o CC microblaze-softmmu/tcg-runtime.o CC microblazeel-softmmu/qtest.o CC microblaze-softmmu/hax-stub.o CC mips64el-softmmu/translate-all.o CC microblaze-softmmu/kvm-stub.o CC microblazeel-softmmu/bootdevice.o CC microblaze-softmmu/arch_init.o CC microblazeel-softmmu/memory.o CC mips64el-softmmu/cpu-exec.o CC microblaze-softmmu/cpus.o CC mips64el-softmmu/translate-common.o CC mips64el-softmmu/cpu-exec-common.o GEN mips64-softmmu/hmp-commands.h GEN mips64-softmmu/hmp-commands-info.h GEN mips64-softmmu/config-target.h CC mips64-softmmu/exec.o CC microblaze-softmmu/monitor.o CC mips64el-softmmu/tcg/tcg.o CC microblazeel-softmmu/cputlb.o CC microblaze-softmmu/gdbstub.o CC mips64-softmmu/translate-all.o CC microblazeel-softmmu/memory_mapping.o CC microblaze-softmmu/balloon.o CC mips64el-softmmu/tcg/tcg-op.o CC microblazeel-softmmu/dump.o CC mips64-softmmu/cpu-exec.o CC microblaze-softmmu/ioport.o CC mips64-softmmu/translate-common.o CC microblaze-softmmu/numa.o CC microblazeel-softmmu/migration/ram.o CC mips64-softmmu/cpu-exec-common.o CC microblaze-softmmu/qtest.o CC mips64-softmmu/tcg/tcg.o CC microblaze-softmmu/bootdevice.o CC microblaze-softmmu/memory.o CC microblazeel-softmmu/migration/savevm.o CC mips64el-softmmu/tcg/optimize.o CC microblazeel-softmmu/xen-common-stub.o CC microblaze-softmmu/cputlb.o CC microblazeel-softmmu/xen-hvm-stub.o CC mips64-softmmu/tcg/tcg-op.o CC microblazeel-softmmu/hw/core/nmi.o CC microblazeel-softmmu/hw/core/generic-loader.o CC microblazeel-softmmu/hw/core/null-machine.o CC mips64el-softmmu/tcg/tcg-common.o CC microblazeel-softmmu/hw/cpu/core.o CC mips64el-softmmu/fpu/softfloat.o CC microblazeel-softmmu/hw/net/xilinx_ethlite.o CC microblaze-softmmu/memory_mapping.o CC microblaze-softmmu/dump.o CC microblazeel-softmmu/hw/net/vhost_net.o CC microblazeel-softmmu/hw/net/rocker/qmp-norocker.o CC microblaze-softmmu/migration/ram.o CC microblazeel-softmmu/hw/vfio/common.o CC mips64-softmmu/tcg/optimize.o CC microblazeel-softmmu/hw/vfio/platform.o CC microblaze-softmmu/migration/savevm.o CC microblazeel-softmmu/hw/vfio/spapr.o CC mips64el-softmmu/disas.o CC microblazeel-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o CC mips64-softmmu/tcg/tcg-common.o CC mips64el-softmmu/tcg-runtime.o CC microblaze-softmmu/xen-common-stub.o CC microblazeel-softmmu/hw/microblaze/petalogix_ml605_mmu.o CC mips64-softmmu/fpu/softfloat.o CC microblaze-softmmu/xen-hvm-stub.o CC mips64el-softmmu/hax-stub.o CC microblaze-softmmu/hw/core/nmi.o CC microblazeel-softmmu/hw/microblaze/boot.o CC microblaze-softmmu/hw/core/generic-loader.o CC mips64el-softmmu/kvm-stub.o CC microblazeel-softmmu/target/microblaze/translate.o CC microblaze-softmmu/hw/core/null-machine.o CC mips64el-softmmu/arch_init.o CC microblaze-softmmu/hw/cpu/core.o CC mips64el-softmmu/cpus.o CC microblaze-softmmu/hw/net/xilinx_ethlite.o CC microblazeel-softmmu/target/microblaze/op_helper.o CC microblaze-softmmu/hw/net/vhost_net.o CC mips64el-softmmu/monitor.o CC microblaze-softmmu/hw/net/rocker/qmp-norocker.o CC microblazeel-softmmu/target/microblaze/helper.o CC microblaze-softmmu/hw/vfio/common.o CC mips64-softmmu/disas.o CC microblazeel-softmmu/target/microblaze/cpu.o CC mips64-softmmu/tcg-runtime.o CC microblazeel-softmmu/target/microblaze/gdbstub.o CC microblaze-softmmu/hw/vfio/platform.o CC mips64-softmmu/hax-stub.o CC mips64el-softmmu/gdbstub.o CC microblazeel-softmmu/target/microblaze/mmu.o CC mips64-softmmu/kvm-stub.o CC microblaze-softmmu/hw/vfio/spapr.o GEN trace/generated-helpers.c CC microblazeel-softmmu/trace/control-target.o CC mips64el-softmmu/balloon.o CC microblaze-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o CC mips64-softmmu/arch_init.o CC microblazeel-softmmu/trace/generated-helpers.o CC mips64el-softmmu/ioport.o CC microblaze-softmmu/hw/microblaze/petalogix_ml605_mmu.o CC mips64-softmmu/cpus.o LINK microblazeel-softmmu/qemu-system-microblazeel CC microblaze-softmmu/hw/microblaze/boot.o CC mips64el-softmmu/numa.o CC microblaze-softmmu/target/microblaze/translate.o CC mips64-softmmu/monitor.o CC mips64el-softmmu/qtest.o CC mips64el-softmmu/bootdevice.o CC microblaze-softmmu/target/microblaze/op_helper.o CC microblaze-softmmu/target/microblaze/helper.o CC mips64el-softmmu/memory.o CC microblaze-softmmu/target/microblaze/cpu.o CC microblaze-softmmu/target/microblaze/gdbstub.o CC mips64-softmmu/gdbstub.o CC microblaze-softmmu/target/microblaze/mmu.o CC mips64el-softmmu/cputlb.o GEN mipsel-softmmu/hmp-commands.h GEN trace/generated-helpers.c CC microblaze-softmmu/trace/control-target.o GEN mipsel-softmmu/hmp-commands-info.h GEN mipsel-softmmu/config-target.h CC mips64-softmmu/balloon.o CC mipsel-softmmu/exec.o CC mips64-softmmu/ioport.o CC microblaze-softmmu/trace/generated-helpers.o LINK microblaze-softmmu/qemu-system-microblaze CC mips64-softmmu/numa.o CC mips64el-softmmu/memory_mapping.o CC mips64-softmmu/qtest.o CC mips64el-softmmu/dump.o CC mips64-softmmu/bootdevice.o CC mips64el-softmmu/migration/ram.o CC mips64-softmmu/memory.o CC mips64el-softmmu/migration/savevm.o CC mipsel-softmmu/translate-all.o CC mipsel-softmmu/cpu-exec.o CC mips64-softmmu/cputlb.o CC mips64el-softmmu/xen-common-stub.o CC mipsel-softmmu/translate-common.o CC mips64el-softmmu/xen-hvm-stub.o GEN mips-softmmu/hmp-commands.h CC mipsel-softmmu/cpu-exec-common.o CC mips64el-softmmu/hw/9pfs/virtio-9p-device.o GEN mips-softmmu/hmp-commands-info.h GEN mips-softmmu/config-target.h CC mips-softmmu/exec.o CC mips64el-softmmu/hw/block/virtio-blk.o CC mipsel-softmmu/tcg/tcg.o CC mips64-softmmu/memory_mapping.o CC mips64el-softmmu/hw/block/dataplane/virtio-blk.o CC mips64-softmmu/dump.o CC mips64el-softmmu/hw/char/virtio-serial-bus.o CC mips64-softmmu/migration/ram.o CC mips64el-softmmu/hw/core/nmi.o CC mips-softmmu/translate-all.o CC mips64el-softmmu/hw/core/generic-loader.o CC mipsel-softmmu/tcg/tcg-op.o CC mips64-softmmu/migration/savevm.o CC mips64el-softmmu/hw/core/null-machine.o CC mips64el-softmmu/hw/cpu/core.o CC mips-softmmu/cpu-exec.o CC mips64el-softmmu/hw/display/vga.o CC mips-softmmu/translate-common.o CC mips64-softmmu/xen-common-stub.o CC mips-softmmu/cpu-exec-common.o CC mips64-softmmu/xen-hvm-stub.o CC mips-softmmu/tcg/tcg.o CC mips64el-softmmu/hw/display/virtio-gpu.o CC mips64-softmmu/hw/9pfs/virtio-9p-device.o CC mips64-softmmu/hw/block/virtio-blk.o CC mipsel-softmmu/tcg/optimize.o CC mips64-softmmu/hw/block/dataplane/virtio-blk.o CC mips64el-softmmu/hw/display/virtio-gpu-3d.o CC mips64-softmmu/hw/char/virtio-serial-bus.o CC mips64-softmmu/hw/core/nmi.o CC mips64el-softmmu/hw/display/virtio-gpu-pci.o CC mipsel-softmmu/tcg/tcg-common.o CC mips-softmmu/tcg/tcg-op.o CC mips64-softmmu/hw/core/generic-loader.o CC mipsel-softmmu/fpu/softfloat.o CC mips64-softmmu/hw/core/null-machine.o CC mips64el-softmmu/hw/intc/mips_gic.o CC mips64-softmmu/hw/cpu/core.o CC mips64el-softmmu/hw/misc/ivshmem.o CC mips64-softmmu/hw/display/vga.o CC mips64el-softmmu/hw/misc/mips_cmgcr.o CC mips64el-softmmu/hw/misc/mips_cpc.o CC mips64-softmmu/hw/display/virtio-gpu.o CC mips64el-softmmu/hw/misc/mips_itu.o CC mips-softmmu/tcg/optimize.o CC mipsel-softmmu/disas.o CC mips64el-softmmu/hw/misc/edu.o CC mipsel-softmmu/tcg-runtime.o CC mips64-softmmu/hw/display/virtio-gpu-3d.o CC mips64el-softmmu/hw/net/virtio-net.o CC mipsel-softmmu/hax-stub.o CC mips-softmmu/tcg/tcg-common.o CC mipsel-softmmu/kvm-stub.o CC mips-softmmu/fpu/softfloat.o CC mips64el-softmmu/hw/net/vhost_net.o CC mips64-softmmu/hw/display/virtio-gpu-pci.o CC mipsel-softmmu/arch_init.o CC mips64el-softmmu/hw/scsi/virtio-scsi.o CC mips64-softmmu/hw/intc/mips_gic.o CC mips64-softmmu/hw/misc/ivshmem.o CC mipsel-softmmu/cpus.o CC mips64el-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mips64el-softmmu/hw/scsi/vhost-scsi.o CC mips64-softmmu/hw/misc/mips_cmgcr.o CC mipsel-softmmu/monitor.o CC mips64el-softmmu/hw/timer/mips_gictimer.o CC mips64el-softmmu/hw/timer/mc146818rtc.o CC mips64-softmmu/hw/misc/mips_cpc.o CC mips64-softmmu/hw/misc/mips_itu.o CC mips64el-softmmu/hw/vfio/common.o CC mips-softmmu/disas.o CC mips64-softmmu/hw/misc/edu.o CC mipsel-softmmu/gdbstub.o CC mips-softmmu/tcg-runtime.o CC mips64-softmmu/hw/net/virtio-net.o CC mips64el-softmmu/hw/vfio/pci.o CC mips-softmmu/hax-stub.o CC mipsel-softmmu/balloon.o CC mips-softmmu/kvm-stub.o CC mips64-softmmu/hw/net/vhost_net.o CC mipsel-softmmu/ioport.o CC mips-softmmu/arch_init.o CC mips64el-softmmu/hw/vfio/pci-quirks.o CC mips64-softmmu/hw/scsi/virtio-scsi.o CC mipsel-softmmu/numa.o CC mips-softmmu/cpus.o CC mipsel-softmmu/qtest.o CC mips64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mips64el-softmmu/hw/vfio/platform.o CC mips-softmmu/monitor.o CC mips64-softmmu/hw/scsi/vhost-scsi.o CC mips64el-softmmu/hw/vfio/spapr.o CC mipsel-softmmu/bootdevice.o CC mips64-softmmu/hw/timer/mips_gictimer.o CC mipsel-softmmu/memory.o CC mips64el-softmmu/hw/virtio/virtio.o CC mips64-softmmu/hw/timer/mc146818rtc.o CC mips-softmmu/gdbstub.o CC mips64-softmmu/hw/vfio/common.o CC mips64el-softmmu/hw/virtio/virtio-balloon.o CC mipsel-softmmu/cputlb.o CC mips64-softmmu/hw/vfio/pci.o CC mips64el-softmmu/hw/virtio/vhost.o CC mips-softmmu/balloon.o CC mips-softmmu/ioport.o CC mips64el-softmmu/hw/virtio/vhost-backend.o CC mips-softmmu/numa.o CC mips64-softmmu/hw/vfio/pci-quirks.o CC mips64el-softmmu/hw/virtio/vhost-user.o CC mipsel-softmmu/memory_mapping.o CC mips-softmmu/qtest.o CC mipsel-softmmu/dump.o CC mips64el-softmmu/hw/virtio/vhost-vsock.o CC mips64-softmmu/hw/vfio/platform.o CC mips-softmmu/bootdevice.o CC mips64-softmmu/hw/vfio/spapr.o CC mips64el-softmmu/hw/virtio/virtio-crypto.o CC mips-softmmu/memory.o CC mipsel-softmmu/migration/ram.o CC mips64-softmmu/hw/virtio/virtio.o CC mips64el-softmmu/hw/virtio/virtio-crypto-pci.o CC mipsel-softmmu/migration/savevm.o CC mips64el-softmmu/hw/mips/mips_r4k.o CC mips-softmmu/cputlb.o CC mips64-softmmu/hw/virtio/virtio-balloon.o CC mips64el-softmmu/hw/mips/mips_malta.o CC mips64-softmmu/hw/virtio/vhost.o CC mipsel-softmmu/xen-common-stub.o CC mips64el-softmmu/hw/mips/mips_mipssim.o CC mipsel-softmmu/xen-hvm-stub.o CC mips64-softmmu/hw/virtio/vhost-backend.o CC mips64el-softmmu/hw/mips/addr.o CC mipsel-softmmu/hw/9pfs/virtio-9p-device.o CC mips64-softmmu/hw/virtio/vhost-user.o CC mips-softmmu/memory_mapping.o CC mips64el-softmmu/hw/mips/cputimer.o CC mips64el-softmmu/hw/mips/mips_int.o CC mips-softmmu/dump.o CC mipsel-softmmu/hw/block/virtio-blk.o CC mips64-softmmu/hw/virtio/vhost-vsock.o CC mips64el-softmmu/hw/mips/mips_jazz.o CC mipsel-softmmu/hw/block/dataplane/virtio-blk.o CC mips64-softmmu/hw/virtio/virtio-crypto.o CC mips-softmmu/migration/ram.o CC mips64el-softmmu/hw/mips/mips_fulong2e.o CC mipsel-softmmu/hw/char/virtio-serial-bus.o CC mips64el-softmmu/hw/mips/gt64xxx_pci.o CC mips64-softmmu/hw/virtio/virtio-crypto-pci.o CC mips64el-softmmu/hw/mips/cps.o CC mips64-softmmu/hw/mips/mips_r4k.o CC mips-softmmu/migration/savevm.o CC mipsel-softmmu/hw/core/nmi.o CC mips64el-softmmu/hw/mips/boston.o CC mipsel-softmmu/hw/core/generic-loader.o CC mips64-softmmu/hw/mips/mips_malta.o CC mips64el-softmmu/target/mips/translate.o CC mipsel-softmmu/hw/core/null-machine.o CC mips64-softmmu/hw/mips/mips_mipssim.o CC mips-softmmu/xen-common-stub.o CC mips64-softmmu/hw/mips/addr.o CC mipsel-softmmu/hw/cpu/core.o CC mips-softmmu/xen-hvm-stub.o CC mipsel-softmmu/hw/display/vga.o CC mips64-softmmu/hw/mips/cputimer.o CC mips-softmmu/hw/9pfs/virtio-9p-device.o CC mips64-softmmu/hw/mips/mips_int.o CC mips-softmmu/hw/block/virtio-blk.o CC mipsel-softmmu/hw/display/virtio-gpu.o CC mips64-softmmu/hw/mips/mips_jazz.o CC mips-softmmu/hw/block/dataplane/virtio-blk.o CC mipsel-softmmu/hw/display/virtio-gpu-3d.o CC mips64-softmmu/hw/mips/gt64xxx_pci.o CC mips64-softmmu/hw/mips/cps.o CC mips-softmmu/hw/char/virtio-serial-bus.o CC mips64-softmmu/target/mips/translate.o CC mipsel-softmmu/hw/display/virtio-gpu-pci.o CC mips-softmmu/hw/core/nmi.o CC mips-softmmu/hw/core/generic-loader.o CC mipsel-softmmu/hw/intc/mips_gic.o CC mips-softmmu/hw/core/null-machine.o CC mipsel-softmmu/hw/misc/ivshmem.o CC mips-softmmu/hw/cpu/core.o CC mipsel-softmmu/hw/misc/mips_cmgcr.o CC mips-softmmu/hw/display/vga.o CC mipsel-softmmu/hw/misc/mips_cpc.o CC mipsel-softmmu/hw/misc/mips_itu.o CC mips-softmmu/hw/display/virtio-gpu.o CC mipsel-softmmu/hw/misc/edu.o CC mips64el-softmmu/target/mips/dsp_helper.o CC mipsel-softmmu/hw/net/virtio-net.o CC mips-softmmu/hw/display/virtio-gpu-3d.o CC mipsel-softmmu/hw/net/vhost_net.o CC mips-softmmu/hw/display/virtio-gpu-pci.o CC mipsel-softmmu/hw/scsi/virtio-scsi.o CC mips64el-softmmu/target/mips/op_helper.o CC mipsel-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mips-softmmu/hw/intc/mips_gic.o CC mipsel-softmmu/hw/scsi/vhost-scsi.o CC mips-softmmu/hw/misc/ivshmem.o CC mipsel-softmmu/hw/timer/mips_gictimer.o CC mipsel-softmmu/hw/timer/mc146818rtc.o CC mips-softmmu/hw/misc/mips_cmgcr.o CC mipsel-softmmu/hw/vfio/common.o CC mips-softmmu/hw/misc/mips_cpc.o CC mips64-softmmu/target/mips/dsp_helper.o CC mips-softmmu/hw/misc/mips_itu.o CC mipsel-softmmu/hw/vfio/pci.o CC mips64el-softmmu/target/mips/lmi_helper.o CC mips-softmmu/hw/misc/edu.o CC mips64el-softmmu/target/mips/helper.o CC mips-softmmu/hw/net/virtio-net.o CC mipsel-softmmu/hw/vfio/pci-quirks.o CC mips64el-softmmu/target/mips/cpu.o CC mips64-softmmu/target/mips/op_helper.o CC mips64el-softmmu/target/mips/gdbstub.o CC mips-softmmu/hw/net/vhost_net.o CC mipsel-softmmu/hw/vfio/platform.o CC mips64el-softmmu/target/mips/msa_helper.o CC mips-softmmu/hw/scsi/virtio-scsi.o CC mipsel-softmmu/hw/vfio/spapr.o CC mips-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mipsel-softmmu/hw/virtio/virtio.o CC mips-softmmu/hw/scsi/vhost-scsi.o CC mips-softmmu/hw/timer/mips_gictimer.o CC mips-softmmu/hw/timer/mc146818rtc.o CC mipsel-softmmu/hw/virtio/virtio-balloon.o CC mips64-softmmu/target/mips/lmi_helper.o CC mips-softmmu/hw/vfio/common.o CC mipsel-softmmu/hw/virtio/vhost.o CC mips64-softmmu/target/mips/helper.o CC mips-softmmu/hw/vfio/pci.o CC mipsel-softmmu/hw/virtio/vhost-backend.o CC mips64-softmmu/target/mips/cpu.o CC mips64-softmmu/target/mips/gdbstub.o CC mipsel-softmmu/hw/virtio/vhost-user.o CC mips64-softmmu/target/mips/msa_helper.o CC mips64el-softmmu/target/mips/mips-semi.o CC mipsel-softmmu/hw/virtio/vhost-vsock.o CC mips-softmmu/hw/vfio/pci-quirks.o CC mipsel-softmmu/hw/virtio/virtio-crypto.o CC mips64el-softmmu/target/mips/machine.o CC mips-softmmu/hw/vfio/platform.o GEN trace/generated-helpers.c CC mips64el-softmmu/trace/control-target.o CC mipsel-softmmu/hw/virtio/virtio-crypto-pci.o CC mips-softmmu/hw/vfio/spapr.o CC mipsel-softmmu/hw/mips/mips_r4k.o CC mips64el-softmmu/trace/generated-helpers.o CC mips-softmmu/hw/virtio/virtio.o CC mipsel-softmmu/hw/mips/mips_malta.o LINK mips64el-softmmu/qemu-system-mips64el CC mipsel-softmmu/hw/mips/mips_mipssim.o CC mips-softmmu/hw/virtio/virtio-balloon.o CC mipsel-softmmu/hw/mips/addr.o CC mipsel-softmmu/hw/mips/cputimer.o CC mips-softmmu/hw/virtio/vhost.o CC mipsel-softmmu/hw/mips/mips_int.o CC mipsel-softmmu/hw/mips/gt64xxx_pci.o CC mips64-softmmu/target/mips/mips-semi.o CC mipsel-softmmu/hw/mips/cps.o CC mips-softmmu/hw/virtio/vhost-backend.o CC mips-softmmu/hw/virtio/vhost-user.o CC mips64-softmmu/target/mips/machine.o CC mipsel-softmmu/target/mips/translate.o CC mipsel-softmmu/target/mips/dsp_helper.o GEN trace/generated-helpers.c CC mips-softmmu/hw/virtio/vhost-vsock.o CC mips64-softmmu/trace/control-target.o CC mips64-softmmu/trace/generated-helpers.o CC mips-softmmu/hw/virtio/virtio-crypto.o LINK mips64-softmmu/qemu-system-mips64 CC mips-softmmu/hw/virtio/virtio-crypto-pci.o CC mips-softmmu/hw/mips/mips_r4k.o GEN moxie-softmmu/hmp-commands.h GEN moxie-softmmu/hmp-commands-info.h GEN moxie-softmmu/config-target.h CC mips-softmmu/hw/mips/mips_malta.o CC moxie-softmmu/exec.o CC mipsel-softmmu/target/mips/op_helper.o CC mips-softmmu/hw/mips/mips_mipssim.o CC mips-softmmu/hw/mips/addr.o CC mips-softmmu/hw/mips/cputimer.o CC mips-softmmu/hw/mips/mips_int.o CC mips-softmmu/hw/mips/gt64xxx_pci.o CC mips-softmmu/hw/mips/cps.o CC moxie-softmmu/translate-all.o CC mipsel-softmmu/target/mips/lmi_helper.o CC mips-softmmu/target/mips/translate.o CC mipsel-softmmu/target/mips/helper.o CC moxie-softmmu/cpu-exec.o CC moxie-softmmu/translate-common.o CC mips-softmmu/target/mips/dsp_helper.o CC mipsel-softmmu/target/mips/cpu.o CC moxie-softmmu/cpu-exec-common.o CC mipsel-softmmu/target/mips/gdbstub.o CC moxie-softmmu/tcg/tcg.o CC mipsel-softmmu/target/mips/msa_helper.o CC mips-softmmu/target/mips/op_helper.o CC moxie-softmmu/tcg/tcg-op.o CC moxie-softmmu/tcg/optimize.o CC mips-softmmu/target/mips/lmi_helper.o CC mipsel-softmmu/target/mips/mips-semi.o CC moxie-softmmu/tcg/tcg-common.o CC mipsel-softmmu/target/mips/machine.o CC mips-softmmu/target/mips/helper.o CC moxie-softmmu/fpu/softfloat.o GEN trace/generated-helpers.c CC mipsel-softmmu/trace/control-target.o CC mips-softmmu/target/mips/cpu.o GEN nios2-softmmu/hmp-commands.h GEN nios2-softmmu/hmp-commands-info.h GEN nios2-softmmu/config-target.h CC nios2-softmmu/exec.o CC mipsel-softmmu/trace/generated-helpers.o CC mips-softmmu/target/mips/gdbstub.o LINK mipsel-softmmu/qemu-system-mipsel CC mips-softmmu/target/mips/msa_helper.o CC moxie-softmmu/disas.o GEN or1k-softmmu/hmp-commands.h GEN or1k-softmmu/hmp-commands-info.h GEN or1k-softmmu/config-target.h CC or1k-softmmu/exec.o CC nios2-softmmu/translate-all.o CC moxie-softmmu/tcg-runtime.o CC nios2-softmmu/cpu-exec.o CC moxie-softmmu/hax-stub.o CC nios2-softmmu/translate-common.o CC moxie-softmmu/kvm-stub.o CC moxie-softmmu/arch_init.o CC nios2-softmmu/cpu-exec-common.o CC or1k-softmmu/translate-all.o CC mips-softmmu/target/mips/mips-semi.o CC moxie-softmmu/cpus.o CC nios2-softmmu/tcg/tcg.o CC mips-softmmu/target/mips/machine.o CC or1k-softmmu/cpu-exec.o CC moxie-softmmu/monitor.o GEN trace/generated-helpers.c CC mips-softmmu/trace/control-target.o CC or1k-softmmu/translate-common.o CC mips-softmmu/trace/generated-helpers.o CC or1k-softmmu/cpu-exec-common.o CC nios2-softmmu/tcg/tcg-op.o LINK mips-softmmu/qemu-system-mips CC or1k-softmmu/tcg/tcg.o CC moxie-softmmu/gdbstub.o CC moxie-softmmu/balloon.o CC moxie-softmmu/ioport.o CC or1k-softmmu/tcg/tcg-op.o CC moxie-softmmu/numa.o CC nios2-softmmu/tcg/optimize.o GEN ppc64-softmmu/hmp-commands.h GEN ppc64-softmmu/hmp-commands-info.h GEN ppc64-softmmu/config-target.h CC moxie-softmmu/qtest.o CC ppc64-softmmu/exec.o CC nios2-softmmu/tcg/tcg-common.o CC nios2-softmmu/fpu/softfloat.o CC moxie-softmmu/bootdevice.o CC or1k-softmmu/tcg/optimize.o CC moxie-softmmu/memory.o CC or1k-softmmu/tcg/tcg-common.o CC moxie-softmmu/cputlb.o CC or1k-softmmu/fpu/softfloat.o CC ppc64-softmmu/translate-all.o CC ppc64-softmmu/cpu-exec.o CC nios2-softmmu/disas.o CC moxie-softmmu/memory_mapping.o CC ppc64-softmmu/translate-common.o CC moxie-softmmu/dump.o CC ppc64-softmmu/cpu-exec-common.o CC nios2-softmmu/tcg-runtime.o CC ppc64-softmmu/tcg/tcg.o CC nios2-softmmu/hax-stub.o CC moxie-softmmu/migration/ram.o CC nios2-softmmu/kvm-stub.o CC or1k-softmmu/disas.o CC nios2-softmmu/arch_init.o CC moxie-softmmu/migration/savevm.o CC or1k-softmmu/tcg-runtime.o CC nios2-softmmu/cpus.o CC or1k-softmmu/hax-stub.o CC moxie-softmmu/xen-common-stub.o CC or1k-softmmu/kvm-stub.o CC ppc64-softmmu/tcg/tcg-op.o CC moxie-softmmu/xen-hvm-stub.o CC nios2-softmmu/monitor.o CC moxie-softmmu/hw/core/nmi.o CC or1k-softmmu/arch_init.o CC moxie-softmmu/hw/core/generic-loader.o CC or1k-softmmu/cpus.o CC moxie-softmmu/hw/core/null-machine.o CC moxie-softmmu/hw/cpu/core.o CC nios2-softmmu/gdbstub.o CC or1k-softmmu/monitor.o CC moxie-softmmu/hw/display/vga.o CC nios2-softmmu/balloon.o CC ppc64-softmmu/tcg/optimize.o CC nios2-softmmu/ioport.o CC moxie-softmmu/hw/net/vhost_net.o CC nios2-softmmu/numa.o CC or1k-softmmu/gdbstub.o CC moxie-softmmu/hw/net/rocker/qmp-norocker.o CC ppc64-softmmu/tcg/tcg-common.o CC nios2-softmmu/qtest.o CC or1k-softmmu/balloon.o CC moxie-softmmu/hw/timer/mc146818rtc.o CC ppc64-softmmu/fpu/softfloat.o CC or1k-softmmu/ioport.o CC nios2-softmmu/bootdevice.o CC moxie-softmmu/hw/vfio/common.o CC nios2-softmmu/memory.o CC or1k-softmmu/numa.o CC moxie-softmmu/hw/vfio/platform.o CC or1k-softmmu/qtest.o CC moxie-softmmu/hw/vfio/spapr.o CC nios2-softmmu/cputlb.o CC or1k-softmmu/bootdevice.o CC moxie-softmmu/hw/moxie/moxiesim.o CC or1k-softmmu/memory.o CC ppc64-softmmu/disas.o CC moxie-softmmu/target/moxie/translate.o CC ppc64-softmmu/tcg-runtime.o GEN ppc64-softmmu/gdbstub-xml.c CC moxie-softmmu/target/moxie/helper.o CC nios2-softmmu/memory_mapping.o CC moxie-softmmu/target/moxie/machine.o CC moxie-softmmu/target/moxie/cpu.o CC nios2-softmmu/dump.o CC or1k-softmmu/cputlb.o CC moxie-softmmu/target/moxie/mmu.o CC ppc64-softmmu/hax-stub.o CC nios2-softmmu/migration/ram.o GEN trace/generated-helpers.c CC ppc64-softmmu/kvm-stub.o CC moxie-softmmu/trace/control-target.o CC ppc64-softmmu/libdecnumber/decContext.o CC moxie-softmmu/trace/generated-helpers.o CC nios2-softmmu/migration/savevm.o CC or1k-softmmu/memory_mapping.o CC ppc64-softmmu/libdecnumber/decNumber.o LINK moxie-softmmu/qemu-system-moxie CC or1k-softmmu/dump.o CC nios2-softmmu/xen-common-stub.o CC nios2-softmmu/xen-hvm-stub.o CC or1k-softmmu/migration/ram.o CC nios2-softmmu/hw/core/nmi.o CC ppc64-softmmu/libdecnumber/dpd/decimal32.o CC nios2-softmmu/hw/core/generic-loader.o CC nios2-softmmu/hw/core/null-machine.o CC ppc64-softmmu/libdecnumber/dpd/decimal64.o CC or1k-softmmu/migration/savevm.o CC nios2-softmmu/hw/cpu/core.o CC or1k-softmmu/xen-common-stub.o CC ppc64-softmmu/libdecnumber/dpd/decimal128.o CC nios2-softmmu/hw/intc/nios2_iic.o CC ppc64-softmmu/arch_init.o CC nios2-softmmu/hw/net/vhost_net.o CC nios2-softmmu/hw/net/rocker/qmp-norocker.o CC nios2-softmmu/hw/timer/altera_timer.o CC ppc64-softmmu/cpus.o CC or1k-softmmu/xen-hvm-stub.o CC nios2-softmmu/hw/vfio/common.o CC or1k-softmmu/hw/core/nmi.o GEN ppcemb-softmmu/hmp-commands.h CC ppc64-softmmu/monitor.o GEN ppcemb-softmmu/hmp-commands-info.h GEN ppcemb-softmmu/config-target.h CC or1k-softmmu/hw/core/generic-loader.o CC ppcemb-softmmu/exec.o CC nios2-softmmu/hw/vfio/platform.o CC or1k-softmmu/hw/core/null-machine.o CC or1k-softmmu/hw/cpu/core.o CC nios2-softmmu/hw/vfio/spapr.o CC or1k-softmmu/hw/net/vhost_net.o CC nios2-softmmu/hw/nios2/boot.o CC or1k-softmmu/hw/net/rocker/qmp-norocker.o CC ppc64-softmmu/gdbstub.o CC nios2-softmmu/hw/nios2/cpu_pic.o CC or1k-softmmu/hw/vfio/common.o CC nios2-softmmu/hw/nios2/10m50_devboard.o CC ppc64-softmmu/balloon.o CC nios2-softmmu/target/nios2/translate.o CC ppcemb-softmmu/translate-all.o CC or1k-softmmu/hw/vfio/platform.o CC ppc64-softmmu/ioport.o CC ppcemb-softmmu/cpu-exec.o CC or1k-softmmu/hw/vfio/spapr.o CC nios2-softmmu/target/nios2/op_helper.o CC ppc64-softmmu/numa.o CC ppcemb-softmmu/translate-common.o CC or1k-softmmu/hw/openrisc/pic_cpu.o CC nios2-softmmu/target/nios2/helper.o CC ppcemb-softmmu/cpu-exec-common.o CC ppc64-softmmu/qtest.o CC or1k-softmmu/hw/openrisc/cputimer.o CC ppcemb-softmmu/tcg/tcg.o CC nios2-softmmu/target/nios2/cpu.o CC or1k-softmmu/hw/openrisc/openrisc_sim.o CC ppc64-softmmu/bootdevice.o CC or1k-softmmu/target/openrisc/machine.o CC nios2-softmmu/target/nios2/mmu.o CC or1k-softmmu/target/openrisc/cpu.o CC ppc64-softmmu/memory.o CC nios2-softmmu/target/nios2/monitor.o CC or1k-softmmu/target/openrisc/exception.o CC or1k-softmmu/target/openrisc/interrupt.o GEN trace/generated-helpers.c CC nios2-softmmu/trace/control-target.o CC ppcemb-softmmu/tcg/tcg-op.o CC or1k-softmmu/target/openrisc/mmu.o CC ppc64-softmmu/cputlb.o CC nios2-softmmu/trace/generated-helpers.o CC or1k-softmmu/target/openrisc/translate.o LINK nios2-softmmu/qemu-system-nios2 CC or1k-softmmu/target/openrisc/exception_helper.o CC ppc64-softmmu/memory_mapping.o CC or1k-softmmu/target/openrisc/fpu_helper.o CC or1k-softmmu/target/openrisc/interrupt_helper.o CC ppc64-softmmu/dump.o CC or1k-softmmu/target/openrisc/mmu_helper.o CC ppc64-softmmu/migration/ram.o CC or1k-softmmu/target/openrisc/sys_helper.o CC ppcemb-softmmu/tcg/optimize.o CC or1k-softmmu/target/openrisc/gdbstub.o GEN trace/generated-helpers.c GEN ppc-softmmu/hmp-commands.h CC or1k-softmmu/trace/control-target.o GEN ppc-softmmu/hmp-commands-info.h GEN ppc-softmmu/config-target.h CC ppc64-softmmu/migration/savevm.o CC ppc-softmmu/exec.o CC or1k-softmmu/trace/generated-helpers.o CC ppcemb-softmmu/tcg/tcg-common.o LINK or1k-softmmu/qemu-system-or1k CC ppc64-softmmu/xen-common-stub.o CC ppcemb-softmmu/fpu/softfloat.o CC ppc64-softmmu/xen-hvm-stub.o CC ppc64-softmmu/hw/9pfs/virtio-9p-device.o CC ppc64-softmmu/hw/block/virtio-blk.o CC ppc-softmmu/translate-all.o CC ppcemb-softmmu/disas.o CC ppc64-softmmu/hw/block/dataplane/virtio-blk.o CC ppc-softmmu/cpu-exec.o CC ppc64-softmmu/hw/char/spapr_vty.o CC ppc-softmmu/translate-common.o GEN s390x-softmmu/hmp-commands.h CC ppc64-softmmu/hw/char/virtio-serial-bus.o GEN s390x-softmmu/hmp-commands-info.h CC s390x-softmmu/gen-features CC ppcemb-softmmu/tcg-runtime.o CC ppc-softmmu/cpu-exec-common.o GEN s390x-softmmu/config-target.h GEN s390x-softmmu/gen-features.h CC s390x-softmmu/exec.o CC ppc-softmmu/tcg/tcg.o GEN ppcemb-softmmu/gdbstub-xml.c CC ppc64-softmmu/hw/core/nmi.o CC ppc64-softmmu/hw/core/generic-loader.o CC ppcemb-softmmu/hax-stub.o CC ppc64-softmmu/hw/core/null-machine.o CC ppc-softmmu/tcg/tcg-op.o CC ppcemb-softmmu/kvm-stub.o CC ppc64-softmmu/hw/cpu/core.o CC s390x-softmmu/translate-all.o CC ppcemb-softmmu/libdecnumber/decContext.o CC ppc64-softmmu/hw/display/vga.o CC s390x-softmmu/cpu-exec.o CC ppcemb-softmmu/libdecnumber/decNumber.o CC s390x-softmmu/translate-common.o CC s390x-softmmu/cpu-exec-common.o CC s390x-softmmu/tcg/tcg.o CC ppc64-softmmu/hw/display/virtio-gpu.o CC ppc64-softmmu/hw/display/virtio-gpu-3d.o CC ppcemb-softmmu/libdecnumber/dpd/decimal32.o CC ppc-softmmu/tcg/optimize.o CC ppcemb-softmmu/libdecnumber/dpd/decimal64.o CC s390x-softmmu/tcg/tcg-op.o CC ppcemb-softmmu/libdecnumber/dpd/decimal128.o CC ppc64-softmmu/hw/display/virtio-gpu-pci.o CC ppcemb-softmmu/arch_init.o CC ppc64-softmmu/hw/display/virtio-vga.o CC ppc-softmmu/tcg/tcg-common.o CC ppcemb-softmmu/cpus.o CC ppc64-softmmu/hw/intc/xics.o CC ppc-softmmu/fpu/softfloat.o CC ppc64-softmmu/hw/intc/xics_spapr.o CC ppcemb-softmmu/monitor.o CC ppc64-softmmu/hw/misc/ivshmem.o CC ppc64-softmmu/hw/misc/edu.o CC s390x-softmmu/tcg/optimize.o CC ppc64-softmmu/hw/net/spapr_llan.o CC ppcemb-softmmu/gdbstub.o CC s390x-softmmu/tcg/tcg-common.o CC ppc64-softmmu/hw/net/xilinx_ethlite.o CC ppcemb-softmmu/balloon.o CC s390x-softmmu/fpu/softfloat.o CC ppc64-softmmu/hw/net/virtio-net.o CC ppc-softmmu/disas.o CC ppcemb-softmmu/ioport.o CC ppc-softmmu/tcg-runtime.o CC ppcemb-softmmu/numa.o GEN ppc-softmmu/gdbstub-xml.c CC ppcemb-softmmu/qtest.o CC ppc64-softmmu/hw/net/vhost_net.o CC ppcemb-softmmu/bootdevice.o CC ppc64-softmmu/hw/net/fsl_etsec/etsec.o CC ppc-softmmu/hax-stub.o CC ppc64-softmmu/hw/net/fsl_etsec/registers.o CC ppc-softmmu/kvm-stub.o CC ppcemb-softmmu/memory.o CC ppc-softmmu/libdecnumber/decContext.o CC ppc64-softmmu/hw/net/fsl_etsec/rings.o CC ppc-softmmu/libdecnumber/decNumber.o CC ppc64-softmmu/hw/net/fsl_etsec/miim.o CC s390x-softmmu/disas.o CC ppc64-softmmu/hw/nvram/spapr_nvram.o CC s390x-softmmu/tcg-runtime.o CC ppcemb-softmmu/cputlb.o CC ppc64-softmmu/hw/scsi/spapr_vscsi.o GEN s390x-softmmu/gdbstub-xml.c CC ppc64-softmmu/hw/scsi/virtio-scsi.o CC ppc64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppc-softmmu/libdecnumber/dpd/decimal32.o CC ppc64-softmmu/hw/scsi/vhost-scsi.o CC s390x-softmmu/hax-stub.o CC ppc-softmmu/libdecnumber/dpd/decimal64.o CC ppc64-softmmu/hw/timer/mc146818rtc.o CC s390x-softmmu/arch_init.o CC ppcemb-softmmu/memory_mapping.o CC ppc-softmmu/libdecnumber/dpd/decimal128.o CC s390x-softmmu/cpus.o CC ppc64-softmmu/hw/vfio/common.o CC ppcemb-softmmu/dump.o CC ppc-softmmu/arch_init.o CC ppc64-softmmu/hw/vfio/pci.o CC s390x-softmmu/monitor.o CC ppc-softmmu/cpus.o CC ppcemb-softmmu/migration/ram.o CC ppc-softmmu/monitor.o CC ppc64-softmmu/hw/vfio/pci-quirks.o CC ppcemb-softmmu/migration/savevm.o CC s390x-softmmu/gdbstub.o CC ppc64-softmmu/hw/vfio/platform.o CC ppc-softmmu/gdbstub.o CC ppc64-softmmu/hw/vfio/spapr.o CC s390x-softmmu/balloon.o CC ppc64-softmmu/hw/virtio/virtio.o CC ppcemb-softmmu/xen-common-stub.o CC s390x-softmmu/ioport.o CC ppc-softmmu/balloon.o CC s390x-softmmu/numa.o CC ppcemb-softmmu/xen-hvm-stub.o CC ppc-softmmu/ioport.o CC s390x-softmmu/qtest.o CC ppcemb-softmmu/hw/9pfs/virtio-9p-device.o CC ppc-softmmu/numa.o CC ppc64-softmmu/hw/virtio/virtio-balloon.o CC s390x-softmmu/bootdevice.o CC ppcemb-softmmu/hw/block/virtio-blk.o CC s390x-softmmu/kvm-all.o CC ppc-softmmu/qtest.o CC ppc64-softmmu/hw/virtio/vhost.o CC ppcemb-softmmu/hw/block/dataplane/virtio-blk.o CC ppc-softmmu/bootdevice.o CC ppcemb-softmmu/hw/char/virtio-serial-bus.o CC s390x-softmmu/memory.o CC ppc-softmmu/memory.o CC ppc64-softmmu/hw/virtio/vhost-backend.o CC ppcemb-softmmu/hw/core/nmi.o CC ppc64-softmmu/hw/virtio/vhost-user.o CC ppcemb-softmmu/hw/core/generic-loader.o CC s390x-softmmu/cputlb.o CC ppc64-softmmu/hw/virtio/vhost-vsock.o CC ppc-softmmu/cputlb.o CC ppcemb-softmmu/hw/core/null-machine.o CC ppc64-softmmu/hw/virtio/virtio-crypto.o CC ppcemb-softmmu/hw/cpu/core.o CC ppc64-softmmu/hw/virtio/virtio-crypto-pci.o CC ppcemb-softmmu/hw/display/vga.o CC ppc64-softmmu/hw/ppc/ppc.o CC ppc64-softmmu/hw/ppc/ppc_booke.o CC ppcemb-softmmu/hw/display/virtio-gpu.o CC ppc64-softmmu/hw/ppc/fdt.o CC s390x-softmmu/memory_mapping.o CC ppc64-softmmu/hw/ppc/spapr.o CC ppc-softmmu/memory_mapping.o CC s390x-softmmu/dump.o CC ppcemb-softmmu/hw/display/virtio-gpu-3d.o CC ppc-softmmu/dump.o CC ppc64-softmmu/hw/ppc/spapr_vio.o CC s390x-softmmu/migration/ram.o CC ppc-softmmu/migration/ram.o CC ppcemb-softmmu/hw/display/virtio-gpu-pci.o CC ppc64-softmmu/hw/ppc/spapr_events.o CC ppcemb-softmmu/hw/misc/ivshmem.o CC s390x-softmmu/migration/savevm.o CC ppc64-softmmu/hw/ppc/spapr_hcall.o CC ppc-softmmu/migration/savevm.o CC ppcemb-softmmu/hw/misc/edu.o CC ppc64-softmmu/hw/ppc/spapr_iommu.o CC s390x-softmmu/xen-common-stub.o CC ppcemb-softmmu/hw/net/xilinx_ethlite.o CC ppc-softmmu/xen-common-stub.o CC s390x-softmmu/xen-hvm-stub.o CC ppc64-softmmu/hw/ppc/spapr_rtas.o CC ppcemb-softmmu/hw/net/virtio-net.o CC ppc-softmmu/xen-hvm-stub.o CC s390x-softmmu/hw/9pfs/virtio-9p-device.o CC ppc-softmmu/hw/9pfs/virtio-9p-device.o CC ppc64-softmmu/hw/ppc/spapr_pci.o CC s390x-softmmu/hw/block/virtio-blk.o CC ppc-softmmu/hw/block/virtio-blk.o CC ppcemb-softmmu/hw/net/vhost_net.o CC ppcemb-softmmu/hw/scsi/virtio-scsi.o CC s390x-softmmu/hw/block/dataplane/virtio-blk.o CC ppc64-softmmu/hw/ppc/spapr_rtc.o CC ppc-softmmu/hw/block/dataplane/virtio-blk.o CC s390x-softmmu/hw/char/virtio-serial-bus.o CC ppc64-softmmu/hw/ppc/spapr_drc.o CC ppcemb-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppc-softmmu/hw/char/virtio-serial-bus.o CC s390x-softmmu/hw/core/nmi.o CC ppcemb-softmmu/hw/scsi/vhost-scsi.o CC ppc64-softmmu/hw/ppc/spapr_rng.o CC ppc-softmmu/hw/core/nmi.o CC s390x-softmmu/hw/core/generic-loader.o CC ppc-softmmu/hw/core/generic-loader.o CC ppc64-softmmu/hw/ppc/spapr_cpu_core.o CC s390x-softmmu/hw/core/null-machine.o CC ppcemb-softmmu/hw/vfio/common.o CC ppc-softmmu/hw/core/null-machine.o CC s390x-softmmu/hw/cpu/core.o CC ppc64-softmmu/hw/ppc/spapr_ovec.o CC s390x-softmmu/hw/display/virtio-gpu.o CC ppc-softmmu/hw/cpu/core.o CC ppc64-softmmu/hw/ppc/pnv.o CC ppc-softmmu/hw/display/vga.o CC ppcemb-softmmu/hw/vfio/pci.o CC ppc64-softmmu/hw/ppc/pnv_xscom.o CC s390x-softmmu/hw/display/virtio-gpu-3d.o CC ppc64-softmmu/hw/ppc/pnv_core.o CC ppc-softmmu/hw/display/virtio-gpu.o CC ppc64-softmmu/hw/ppc/pnv_lpc.o CC ppcemb-softmmu/hw/vfio/pci-quirks.o CC s390x-softmmu/hw/display/virtio-gpu-pci.o CC ppc64-softmmu/hw/ppc/spapr_pci_vfio.o CC s390x-softmmu/hw/intc/s390_flic.o CC ppc64-softmmu/hw/ppc/spapr_rtas_ddw.o CC s390x-softmmu/hw/intc/s390_flic_kvm.o CC ppcemb-softmmu/hw/vfio/platform.o CC ppc-softmmu/hw/display/virtio-gpu-3d.o CC ppc64-softmmu/hw/ppc/ppc405_boards.o CC s390x-softmmu/hw/net/virtio-net.o CC ppcemb-softmmu/hw/vfio/spapr.o CC ppc64-softmmu/hw/ppc/ppc4xx_devs.o CC ppc-softmmu/hw/display/virtio-gpu-pci.o CC ppcemb-softmmu/hw/virtio/virtio.o CC ppc64-softmmu/hw/ppc/ppc405_uc.o CC s390x-softmmu/hw/net/vhost_net.o CC ppc-softmmu/hw/misc/ivshmem.o CC s390x-softmmu/hw/net/rocker/qmp-norocker.o CC ppc64-softmmu/hw/ppc/ppc440_bamboo.o CC ppc-softmmu/hw/misc/edu.o CC s390x-softmmu/hw/scsi/virtio-scsi.o CC ppcemb-softmmu/hw/virtio/virtio-balloon.o CC ppc-softmmu/hw/net/xilinx_ethlite.o CC s390x-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppc64-softmmu/hw/ppc/ppc4xx_pci.o CC s390x-softmmu/hw/scsi/vhost-scsi.o CC ppcemb-softmmu/hw/virtio/vhost.o CC ppc-softmmu/hw/net/virtio-net.o CC ppc64-softmmu/hw/ppc/prep.o CC s390x-softmmu/hw/vfio/common.o CC ppc-softmmu/hw/net/vhost_net.o CC ppc64-softmmu/hw/ppc/prep_systemio.o CC ppcemb-softmmu/hw/virtio/vhost-backend.o CC ppc-softmmu/hw/net/fsl_etsec/etsec.o CC s390x-softmmu/hw/vfio/pci.o CC ppcemb-softmmu/hw/virtio/vhost-user.o CC ppc64-softmmu/hw/ppc/rs6000_mc.o CC ppc-softmmu/hw/net/fsl_etsec/registers.o CC ppcemb-softmmu/hw/virtio/vhost-vsock.o CC ppc-softmmu/hw/net/fsl_etsec/rings.o CC ppc64-softmmu/hw/ppc/mac_oldworld.o CC ppcemb-softmmu/hw/virtio/virtio-crypto.o CC ppc-softmmu/hw/net/fsl_etsec/miim.o CC s390x-softmmu/hw/vfio/pci-quirks.o CC ppcemb-softmmu/hw/virtio/virtio-crypto-pci.o CC ppc64-softmmu/hw/ppc/mac_newworld.o CC ppc-softmmu/hw/scsi/virtio-scsi.o CC ppcemb-softmmu/hw/ppc/ppc.o CC ppc64-softmmu/hw/ppc/e500.o CC ppc-softmmu/hw/scsi/virtio-scsi-dataplane.o CC s390x-softmmu/hw/vfio/platform.o CC ppc-softmmu/hw/scsi/vhost-scsi.o CC ppcemb-softmmu/hw/ppc/ppc_booke.o CC ppc64-softmmu/hw/ppc/mpc8544ds.o CC s390x-softmmu/hw/vfio/spapr.o CC s390x-softmmu/hw/virtio/virtio.o CC ppc64-softmmu/hw/ppc/e500plat.o CC ppcemb-softmmu/hw/ppc/fdt.o CC ppc-softmmu/hw/timer/mc146818rtc.o CC ppc64-softmmu/hw/ppc/mpc8544_guts.o CC ppcemb-softmmu/hw/ppc/ppc405_boards.o CC ppc64-softmmu/hw/ppc/ppce500_spin.o CC ppc-softmmu/hw/vfio/common.o CC ppcemb-softmmu/hw/ppc/ppc4xx_devs.o CC s390x-softmmu/hw/virtio/virtio-balloon.o CC ppc64-softmmu/hw/ppc/virtex_ml507.o CC ppcemb-softmmu/hw/ppc/ppc405_uc.o CC ppc-softmmu/hw/vfio/pci.o CC ppc64-softmmu/target/ppc/cpu-models.o CC s390x-softmmu/hw/virtio/vhost.o CC ppcemb-softmmu/hw/ppc/ppc440_bamboo.o CC ppcemb-softmmu/hw/ppc/ppc4xx_pci.o CC s390x-softmmu/hw/virtio/vhost-backend.o CC ppcemb-softmmu/hw/ppc/virtex_ml507.o CC s390x-softmmu/hw/virtio/vhost-user.o CC ppcemb-softmmu/target/ppc/cpu-models.o CC ppc-softmmu/hw/vfio/pci-quirks.o CC s390x-softmmu/hw/virtio/vhost-vsock.o CC s390x-softmmu/hw/virtio/virtio-crypto.o CC ppc64-softmmu/target/ppc/translate.o CC ppc-softmmu/hw/vfio/platform.o CC s390x-softmmu/hw/virtio/virtio-crypto-pci.o CC ppc-softmmu/hw/vfio/spapr.o CC s390x-softmmu/hw/s390x/s390-virtio.o CC ppc-softmmu/hw/virtio/virtio.o CC ppcemb-softmmu/target/ppc/translate.o CC s390x-softmmu/hw/s390x/s390-virtio-hcall.o CC s390x-softmmu/hw/s390x/sclp.o CC s390x-softmmu/hw/s390x/event-facility.o CC s390x-softmmu/hw/s390x/sclpquiesce.o CC ppc-softmmu/hw/virtio/virtio-balloon.o CC s390x-softmmu/hw/s390x/sclpcpu.o CC ppc-softmmu/hw/virtio/vhost.o CC s390x-softmmu/hw/s390x/ipl.o CC s390x-softmmu/hw/s390x/css.o CC ppc-softmmu/hw/virtio/vhost-backend.o CC ppc-softmmu/hw/virtio/vhost-user.o CC s390x-softmmu/hw/s390x/s390-virtio-ccw.o CC ppc-softmmu/hw/virtio/vhost-vsock.o CC s390x-softmmu/hw/s390x/virtio-ccw.o CC ppc-softmmu/hw/virtio/virtio-crypto.o CC ppc-softmmu/hw/virtio/virtio-crypto-pci.o CC s390x-softmmu/hw/s390x/css-bridge.o CC ppc-softmmu/hw/ppc/ppc.o CC s390x-softmmu/hw/s390x/ccw-device.o CC s390x-softmmu/hw/s390x/s390-pci-bus.o CC ppc-softmmu/hw/ppc/ppc_booke.o CC ppc-softmmu/hw/ppc/fdt.o CC s390x-softmmu/hw/s390x/s390-pci-inst.o CC ppc-softmmu/hw/ppc/ppc405_boards.o CC s390x-softmmu/hw/s390x/s390-skeys.o CC ppc-softmmu/hw/ppc/ppc4xx_devs.o CC s390x-softmmu/hw/s390x/s390-skeys-kvm.o CC ppc-softmmu/hw/ppc/ppc405_uc.o CC s390x-softmmu/target/s390x/translate.o CC ppc-softmmu/hw/ppc/ppc440_bamboo.o CC ppc-softmmu/hw/ppc/ppc4xx_pci.o CC ppc-softmmu/hw/ppc/prep.o CC ppc-softmmu/hw/ppc/prep_systemio.o CC ppc-softmmu/hw/ppc/rs6000_mc.o CC s390x-softmmu/target/s390x/helper.o CC ppc-softmmu/hw/ppc/mac_oldworld.o CC s390x-softmmu/target/s390x/cpu.o CC ppc-softmmu/hw/ppc/mac_newworld.o CC ppcemb-softmmu/target/ppc/machine.o CC s390x-softmmu/target/s390x/interrupt.o CC ppc-softmmu/hw/ppc/e500.o CC s390x-softmmu/target/s390x/int_helper.o CC ppcemb-softmmu/target/ppc/mmu_helper.o CC ppc64-softmmu/target/ppc/machine.o CC s390x-softmmu/target/s390x/fpu_helper.o CC ppc-softmmu/hw/ppc/mpc8544ds.o CC ppc-softmmu/hw/ppc/e500plat.o CC ppc64-softmmu/target/ppc/mmu_helper.o CC ppc-softmmu/hw/ppc/mpc8544_guts.o CC ppcemb-softmmu/target/ppc/mmu-hash32.o CC s390x-softmmu/target/s390x/cc_helper.o CC ppc-softmmu/hw/ppc/ppce500_spin.o CC ppcemb-softmmu/target/ppc/monitor.o CC s390x-softmmu/target/s390x/mem_helper.o CC ppc-softmmu/hw/ppc/virtex_ml507.o CC ppcemb-softmmu/target/ppc/kvm-stub.o CC ppc64-softmmu/target/ppc/mmu-hash32.o CC ppcemb-softmmu/target/ppc/dfp_helper.o CC ppc-softmmu/target/ppc/cpu-models.o CC ppc64-softmmu/target/ppc/monitor.o CC s390x-softmmu/target/s390x/misc_helper.o CC ppcemb-softmmu/target/ppc/excp_helper.o CC ppc64-softmmu/target/ppc/mmu-hash64.o CC s390x-softmmu/target/s390x/gdbstub.o CC ppc64-softmmu/target/ppc/arch_dump.o CC ppcemb-softmmu/target/ppc/fpu_helper.o CC s390x-softmmu/target/s390x/cpu_models.o CC ppc64-softmmu/target/ppc/compat.o CC ppc-softmmu/target/ppc/translate.o CC s390x-softmmu/target/s390x/cpu_features.o CC ppc64-softmmu/target/ppc/kvm-stub.o CC s390x-softmmu/target/s390x/machine.o CC ppc64-softmmu/target/ppc/dfp_helper.o CC s390x-softmmu/target/s390x/ioinst.o CC s390x-softmmu/target/s390x/arch_dump.o CC ppc64-softmmu/target/ppc/excp_helper.o CC s390x-softmmu/target/s390x/mmu_helper.o CC s390x-softmmu/target/s390x/kvm.o CC ppc64-softmmu/target/ppc/fpu_helper.o GEN trace/generated-helpers.c CC s390x-softmmu/trace/control-target.o CC s390x-softmmu/gdbstub-xml.o CC ppcemb-softmmu/target/ppc/int_helper.o CC s390x-softmmu/trace/generated-helpers.o LINK s390x-softmmu/qemu-system-s390x CC ppcemb-softmmu/target/ppc/timebase_helper.o CC ppc-softmmu/target/ppc/machine.o CC ppcemb-softmmu/target/ppc/misc_helper.o CC ppc-softmmu/target/ppc/mmu_helper.o CC ppcemb-softmmu/target/ppc/mem_helper.o CC ppc64-softmmu/target/ppc/int_helper.o CC ppc64-softmmu/target/ppc/timebase_helper.o CC ppcemb-softmmu/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC ppcemb-softmmu/trace/control-target.o CC ppcemb-softmmu/gdbstub-xml.o GEN sh4eb-softmmu/hmp-commands.h GEN sh4eb-softmmu/hmp-commands-info.h GEN sh4eb-softmmu/config-target.h CC sh4eb-softmmu/exec.o CC ppc64-softmmu/target/ppc/misc_helper.o CC ppcemb-softmmu/trace/generated-helpers.o CC ppc64-softmmu/target/ppc/mem_helper.o LINK ppcemb-softmmu/qemu-system-ppcemb CC ppc64-softmmu/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC ppc64-softmmu/trace/control-target.o CC sh4eb-softmmu/translate-all.o CC ppc64-softmmu/gdbstub-xml.o CC sh4eb-softmmu/cpu-exec.o CC sh4eb-softmmu/translate-common.o CC ppc64-softmmu/trace/generated-helpers.o CC ppc-softmmu/target/ppc/mmu-hash32.o CC ppc-softmmu/target/ppc/monitor.o CC sh4eb-softmmu/cpu-exec-common.o CC sh4eb-softmmu/tcg/tcg.o LINK ppc64-softmmu/qemu-system-ppc64 CC ppc-softmmu/target/ppc/kvm-stub.o CC ppc-softmmu/target/ppc/dfp_helper.o CC sh4eb-softmmu/tcg/tcg-op.o CC ppc-softmmu/target/ppc/excp_helper.o CC ppc-softmmu/target/ppc/fpu_helper.o CC sh4eb-softmmu/tcg/optimize.o GEN sh4-softmmu/hmp-commands.h GEN sh4-softmmu/hmp-commands-info.h GEN sh4-softmmu/config-target.h CC sh4-softmmu/exec.o CC sh4eb-softmmu/tcg/tcg-common.o GEN sparc64-softmmu/hmp-commands.h CC sh4eb-softmmu/fpu/softfloat.o GEN sparc64-softmmu/hmp-commands-info.h GEN sparc64-softmmu/config-target.h CC sparc64-softmmu/exec.o CC sh4-softmmu/translate-all.o CC sh4-softmmu/cpu-exec.o CC sh4-softmmu/translate-common.o CC ppc-softmmu/target/ppc/int_helper.o CC sparc64-softmmu/translate-all.o CC sh4-softmmu/cpu-exec-common.o CC sh4eb-softmmu/disas.o CC sh4-softmmu/tcg/tcg.o CC sh4eb-softmmu/tcg-runtime.o CC sparc64-softmmu/cpu-exec.o CC sh4eb-softmmu/hax-stub.o CC sparc64-softmmu/translate-common.o CC sh4eb-softmmu/kvm-stub.o CC ppc-softmmu/target/ppc/timebase_helper.o CC sparc64-softmmu/cpu-exec-common.o CC ppc-softmmu/target/ppc/misc_helper.o CC sh4eb-softmmu/arch_init.o CC sparc64-softmmu/tcg/tcg.o CC sh4-softmmu/tcg/tcg-op.o CC ppc-softmmu/target/ppc/mem_helper.o CC sh4eb-softmmu/cpus.o CC sh4eb-softmmu/monitor.o CC ppc-softmmu/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC sparc64-softmmu/tcg/tcg-op.o CC ppc-softmmu/trace/control-target.o CC ppc-softmmu/gdbstub-xml.o CC sh4-softmmu/tcg/optimize.o CC sh4eb-softmmu/gdbstub.o CC ppc-softmmu/trace/generated-helpers.o LINK ppc-softmmu/qemu-system-ppc CC sh4-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/balloon.o CC sh4-softmmu/fpu/softfloat.o CC sh4eb-softmmu/ioport.o CC sh4eb-softmmu/numa.o CC sparc64-softmmu/tcg/optimize.o CC sh4eb-softmmu/qtest.o GEN sparc-softmmu/hmp-commands.h GEN sparc-softmmu/hmp-commands-info.h GEN sparc-softmmu/config-target.h CC sparc-softmmu/exec.o CC sparc64-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/bootdevice.o CC sparc64-softmmu/fpu/softfloat.o CC sh4eb-softmmu/memory.o CC sh4-softmmu/disas.o CC sh4-softmmu/tcg-runtime.o CC sh4-softmmu/hax-stub.o CC sh4-softmmu/kvm-stub.o CC sh4eb-softmmu/cputlb.o CC sh4-softmmu/arch_init.o CC sparc-softmmu/translate-all.o CC sh4-softmmu/cpus.o CC sparc-softmmu/cpu-exec.o CC sparc-softmmu/translate-common.o CC sh4-softmmu/monitor.o CC sh4eb-softmmu/memory_mapping.o CC sparc-softmmu/cpu-exec-common.o CC sparc64-softmmu/disas.o CC sh4eb-softmmu/dump.o CC sparc-softmmu/tcg/tcg.o CC sparc64-softmmu/tcg-runtime.o CC sparc64-softmmu/hax-stub.o CC sh4-softmmu/gdbstub.o CC sh4eb-softmmu/migration/ram.o CC sparc64-softmmu/kvm-stub.o CC sh4-softmmu/balloon.o CC sparc64-softmmu/arch_init.o CC sh4-softmmu/ioport.o CC sparc64-softmmu/cpus.o CC sh4eb-softmmu/migration/savevm.o CC sparc-softmmu/tcg/tcg-op.o CC sh4-softmmu/numa.o CC sh4-softmmu/qtest.o CC sparc64-softmmu/monitor.o CC sh4eb-softmmu/xen-common-stub.o CC sh4-softmmu/bootdevice.o CC sh4eb-softmmu/xen-hvm-stub.o CC sh4-softmmu/memory.o CC sh4eb-softmmu/hw/9pfs/virtio-9p-device.o CC sh4eb-softmmu/hw/block/tc58128.o CC sparc64-softmmu/gdbstub.o CC sh4-softmmu/cputlb.o CC sh4eb-softmmu/hw/block/virtio-blk.o CC sparc-softmmu/tcg/optimize.o CC sparc64-softmmu/balloon.o CC sh4eb-softmmu/hw/block/dataplane/virtio-blk.o CC sparc64-softmmu/ioport.o CC sparc64-softmmu/numa.o CC sparc-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/hw/char/sh_serial.o CC sparc-softmmu/fpu/softfloat.o CC sh4eb-softmmu/hw/char/virtio-serial-bus.o CC sparc64-softmmu/qtest.o CC sh4-softmmu/memory_mapping.o CC sh4eb-softmmu/hw/core/nmi.o CC sparc64-softmmu/bootdevice.o CC sh4-softmmu/dump.o CC sh4eb-softmmu/hw/core/generic-loader.o CC sparc64-softmmu/memory.o CC sh4eb-softmmu/hw/core/null-machine.o CC sh4-softmmu/migration/ram.o CC sh4eb-softmmu/hw/cpu/core.o CC sh4eb-softmmu/hw/display/sm501.o CC sparc64-softmmu/cputlb.o CC sh4-softmmu/migration/savevm.o CC sparc-softmmu/disas.o CC sh4eb-softmmu/hw/display/vga.o CC sparc-softmmu/tcg-runtime.o CC sh4-softmmu/xen-common-stub.o CC sparc-softmmu/hax-stub.o CC sh4eb-softmmu/hw/display/virtio-gpu.o CC sparc-softmmu/kvm-stub.o CC sh4-softmmu/xen-hvm-stub.o CC sparc64-softmmu/memory_mapping.o CC sparc-softmmu/arch_init.o CC sh4-softmmu/hw/9pfs/virtio-9p-device.o CC sparc64-softmmu/dump.o CC sparc-softmmu/cpus.o CC sh4-softmmu/hw/block/tc58128.o CC sh4eb-softmmu/hw/display/virtio-gpu-3d.o CC sh4-softmmu/hw/block/virtio-blk.o CC sparc-softmmu/monitor.o CC sparc64-softmmu/migration/ram.o CC sh4eb-softmmu/hw/display/virtio-gpu-pci.o CC sh4-softmmu/hw/block/dataplane/virtio-blk.o CC sparc64-softmmu/migration/savevm.o CC sh4eb-softmmu/hw/intc/sh_intc.o CC sh4-softmmu/hw/char/sh_serial.o CC sh4-softmmu/hw/char/virtio-serial-bus.o CC sparc-softmmu/gdbstub.o CC sh4eb-softmmu/hw/misc/ivshmem.o CC sparc64-softmmu/xen-common-stub.o CC sh4-softmmu/hw/core/nmi.o CC sh4eb-softmmu/hw/misc/edu.o CC sparc-softmmu/balloon.o CC sparc64-softmmu/xen-hvm-stub.o CC sh4-softmmu/hw/core/generic-loader.o CC sh4eb-softmmu/hw/net/virtio-net.o CC sparc64-softmmu/hw/9pfs/virtio-9p-device.o CC sparc-softmmu/ioport.o CC sh4-softmmu/hw/core/null-machine.o CC sparc-softmmu/numa.o CC sparc64-softmmu/hw/block/virtio-blk.o CC sh4-softmmu/hw/cpu/core.o CC sh4-softmmu/hw/display/sm501.o CC sparc-softmmu/qtest.o CC sh4eb-softmmu/hw/net/vhost_net.o CC sparc64-softmmu/hw/block/dataplane/virtio-blk.o CC sh4eb-softmmu/hw/scsi/virtio-scsi.o CC sparc64-softmmu/hw/char/virtio-serial-bus.o CC sparc-softmmu/bootdevice.o CC sh4-softmmu/hw/display/vga.o CC sparc-softmmu/memory.o CC sh4eb-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sparc64-softmmu/hw/core/nmi.o CC sh4eb-softmmu/hw/scsi/vhost-scsi.o CC sparc64-softmmu/hw/core/generic-loader.o CC sh4-softmmu/hw/display/virtio-gpu.o CC sh4eb-softmmu/hw/timer/sh_timer.o CC sparc-softmmu/cputlb.o CC sparc64-softmmu/hw/core/null-machine.o CC sh4eb-softmmu/hw/timer/mc146818rtc.o CC sparc64-softmmu/hw/cpu/core.o CC sh4-softmmu/hw/display/virtio-gpu-3d.o CC sparc64-softmmu/hw/display/vga.o CC sh4eb-softmmu/hw/vfio/common.o CC sparc-softmmu/memory_mapping.o CC sh4-softmmu/hw/display/virtio-gpu-pci.o CC sparc-softmmu/dump.o CC sh4-softmmu/hw/intc/sh_intc.o CC sh4eb-softmmu/hw/vfio/pci.o CC sparc64-softmmu/hw/display/virtio-gpu.o CC sh4-softmmu/hw/misc/ivshmem.o CC sparc-softmmu/migration/ram.o CC sh4-softmmu/hw/misc/edu.o CC sparc64-softmmu/hw/display/virtio-gpu-3d.o CC sh4-softmmu/hw/net/virtio-net.o CC sh4eb-softmmu/hw/vfio/pci-quirks.o CC sparc-softmmu/migration/savevm.o CC sparc64-softmmu/hw/display/virtio-gpu-pci.o CC sh4eb-softmmu/hw/vfio/platform.o CC sh4-softmmu/hw/net/vhost_net.o CC sh4eb-softmmu/hw/vfio/spapr.o CC sparc64-softmmu/hw/misc/ivshmem.o CC sh4-softmmu/hw/scsi/virtio-scsi.o CC sh4eb-softmmu/hw/virtio/virtio.o CC sparc-softmmu/xen-common-stub.o CC sparc64-softmmu/hw/misc/edu.o CC sparc-softmmu/xen-hvm-stub.o CC sh4-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sparc-softmmu/hw/core/nmi.o CC sh4-softmmu/hw/scsi/vhost-scsi.o CC sparc64-softmmu/hw/net/virtio-net.o CC sparc-softmmu/hw/core/generic-loader.o CC sh4eb-softmmu/hw/virtio/virtio-balloon.o CC sh4-softmmu/hw/timer/sh_timer.o CC sparc-softmmu/hw/core/null-machine.o CC sh4-softmmu/hw/timer/mc146818rtc.o CC sparc-softmmu/hw/cpu/core.o CC sh4eb-softmmu/hw/virtio/vhost.o CC sh4-softmmu/hw/vfio/common.o CC sparc-softmmu/hw/display/tcx.o CC sparc64-softmmu/hw/net/vhost_net.o CC sparc64-softmmu/hw/scsi/virtio-scsi.o CC sh4eb-softmmu/hw/virtio/vhost-backend.o CC sh4-softmmu/hw/vfio/pci.o CC sh4eb-softmmu/hw/virtio/vhost-user.o CC sparc64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sparc-softmmu/hw/display/cg3.o CC sparc64-softmmu/hw/scsi/vhost-scsi.o CC sh4eb-softmmu/hw/virtio/vhost-vsock.o CC sparc64-softmmu/hw/timer/mc146818rtc.o CC sparc-softmmu/hw/intc/grlib_irqmp.o CC sparc64-softmmu/hw/vfio/common.o CC sh4eb-softmmu/hw/virtio/virtio-crypto.o CC sparc-softmmu/hw/misc/eccmemctl.o CC sh4-softmmu/hw/vfio/pci-quirks.o CC sh4eb-softmmu/hw/virtio/virtio-crypto-pci.o CC sparc64-softmmu/hw/vfio/pci.o CC sparc-softmmu/hw/misc/slavio_misc.o CC sh4-softmmu/hw/vfio/platform.o CC sh4eb-softmmu/hw/sh4/shix.o CC sh4-softmmu/hw/vfio/spapr.o CC sparc-softmmu/hw/net/vhost_net.o CC sh4-softmmu/hw/virtio/virtio.o CC sparc64-softmmu/hw/vfio/pci-quirks.o CC sh4eb-softmmu/hw/sh4/r2d.o CC sparc-softmmu/hw/net/rocker/qmp-norocker.o CC sparc-softmmu/hw/vfio/common.o CC sh4eb-softmmu/hw/sh4/sh7750.o CC sparc64-softmmu/hw/vfio/platform.o CC sh4-softmmu/hw/virtio/virtio-balloon.o CC sparc-softmmu/hw/vfio/platform.o CC sh4eb-softmmu/hw/sh4/sh7750_regnames.o CC sparc64-softmmu/hw/vfio/spapr.o CC sh4-softmmu/hw/virtio/vhost.o CC sparc-softmmu/hw/vfio/spapr.o CC sh4eb-softmmu/hw/sh4/sh_pci.o CC sparc64-softmmu/hw/virtio/virtio.o CC sparc-softmmu/hw/sparc/sun4m.o CC sh4eb-softmmu/target/sh4/translate.o CC sh4-softmmu/hw/virtio/vhost-backend.o CC sparc-softmmu/hw/sparc/leon3.o CC sh4-softmmu/hw/virtio/vhost-user.o CC sparc64-softmmu/hw/virtio/virtio-balloon.o CC sh4-softmmu/hw/virtio/vhost-vsock.o CC sparc-softmmu/target/sparc/machine.o CC sparc64-softmmu/hw/virtio/vhost.o CC sh4-softmmu/hw/virtio/virtio-crypto.o CC sparc-softmmu/target/sparc/monitor.o CC sh4-softmmu/hw/virtio/virtio-crypto-pci.o CC sparc-softmmu/target/sparc/translate.o CC sparc64-softmmu/hw/virtio/vhost-backend.o CC sh4-softmmu/hw/sh4/shix.o CC sh4-softmmu/hw/sh4/r2d.o CC sparc64-softmmu/hw/virtio/vhost-user.o CC sh4eb-softmmu/target/sh4/op_helper.o CC sh4-softmmu/hw/sh4/sh7750.o CC sh4-softmmu/hw/sh4/sh7750_regnames.o CC sparc64-softmmu/hw/virtio/vhost-vsock.o CC sh4eb-softmmu/target/sh4/helper.o CC sh4-softmmu/hw/sh4/sh_pci.o CC sparc-softmmu/target/sparc/helper.o CC sparc64-softmmu/hw/virtio/virtio-crypto.o CC sparc-softmmu/target/sparc/cpu.o CC sh4-softmmu/target/sh4/translate.o CC sh4eb-softmmu/target/sh4/cpu.o CC sparc64-softmmu/hw/virtio/virtio-crypto-pci.o CC sparc-softmmu/target/sparc/fop_helper.o CC sh4eb-softmmu/target/sh4/monitor.o CC sparc-softmmu/target/sparc/cc_helper.o CC sh4eb-softmmu/target/sh4/gdbstub.o CC sparc64-softmmu/hw/sparc64/sparc64.o CC sparc-softmmu/target/sparc/win_helper.o CC sparc64-softmmu/hw/sparc64/sun4u.o GEN trace/generated-helpers.c CC sh4eb-softmmu/trace/control-target.o CC sparc-softmmu/target/sparc/mmu_helper.o CC sparc-softmmu/target/sparc/ldst_helper.o CC sh4eb-softmmu/trace/generated-helpers.o CC sparc-softmmu/target/sparc/int32_helper.o CC sparc64-softmmu/hw/sparc64/niagara.o CC sparc-softmmu/target/sparc/gdbstub.o LINK sh4eb-softmmu/qemu-system-sh4eb CC sparc64-softmmu/target/sparc/machine.o GEN trace/generated-helpers.c CC sparc-softmmu/trace/control-target.o CC sh4-softmmu/target/sh4/op_helper.o CC sparc64-softmmu/target/sparc/monitor.o CC sparc-softmmu/trace/generated-helpers.o CC sh4-softmmu/target/sh4/helper.o CC sparc64-softmmu/target/sparc/translate.o LINK sparc-softmmu/qemu-system-sparc CC sh4-softmmu/target/sh4/cpu.o CC sh4-softmmu/target/sh4/monitor.o CC sh4-softmmu/target/sh4/gdbstub.o GEN trace/generated-helpers.c CC sh4-softmmu/trace/control-target.o GEN tricore-softmmu/hmp-commands.h GEN tricore-softmmu/hmp-commands-info.h GEN tricore-softmmu/config-target.h CC tricore-softmmu/exec.o CC sh4-softmmu/trace/generated-helpers.o GEN unicore32-softmmu/hmp-commands.h GEN unicore32-softmmu/hmp-commands-info.h GEN unicore32-softmmu/config-target.h CC unicore32-softmmu/exec.o LINK sh4-softmmu/qemu-system-sh4 CC sparc64-softmmu/target/sparc/helper.o CC sparc64-softmmu/target/sparc/cpu.o CC sparc64-softmmu/target/sparc/fop_helper.o CC sparc64-softmmu/target/sparc/cc_helper.o CC tricore-softmmu/translate-all.o CC sparc64-softmmu/target/sparc/win_helper.o CC tricore-softmmu/cpu-exec.o CC sparc64-softmmu/target/sparc/mmu_helper.o CC unicore32-softmmu/translate-all.o CC sparc64-softmmu/target/sparc/ldst_helper.o CC tricore-softmmu/translate-common.o GEN x86_64-softmmu/hmp-commands.h CC sparc64-softmmu/target/sparc/int64_helper.o GEN x86_64-softmmu/hmp-commands-info.h CC unicore32-softmmu/cpu-exec.o GEN x86_64-softmmu/config-target.h CC tricore-softmmu/cpu-exec-common.o CC sparc64-softmmu/target/sparc/vis_helper.o CC x86_64-softmmu/exec.o CC tricore-softmmu/tcg/tcg.o CC unicore32-softmmu/translate-common.o CC sparc64-softmmu/target/sparc/gdbstub.o CC unicore32-softmmu/cpu-exec-common.o GEN trace/generated-helpers.c CC sparc64-softmmu/trace/control-target.o CC unicore32-softmmu/tcg/tcg.o CC sparc64-softmmu/trace/generated-helpers.o LINK sparc64-softmmu/qemu-system-sparc64 CC x86_64-softmmu/translate-all.o CC tricore-softmmu/tcg/tcg-op.o CC x86_64-softmmu/cpu-exec.o CC unicore32-softmmu/tcg/tcg-op.o CC x86_64-softmmu/translate-common.o CC x86_64-softmmu/cpu-exec-common.o CC x86_64-softmmu/tcg/tcg.o GEN xtensaeb-softmmu/hmp-commands.h GEN xtensaeb-softmmu/hmp-commands-info.h GEN xtensaeb-softmmu/config-target.h CC xtensaeb-softmmu/exec.o CC tricore-softmmu/tcg/optimize.o CC unicore32-softmmu/tcg/optimize.o CC tricore-softmmu/tcg/tcg-common.o CC x86_64-softmmu/tcg/tcg-op.o CC tricore-softmmu/fpu/softfloat.o CC xtensaeb-softmmu/translate-all.o CC unicore32-softmmu/tcg/tcg-common.o CC unicore32-softmmu/fpu/softfloat.o CC xtensaeb-softmmu/cpu-exec.o CC xtensaeb-softmmu/translate-common.o CC xtensaeb-softmmu/cpu-exec-common.o CC x86_64-softmmu/tcg/optimize.o CC xtensaeb-softmmu/tcg/tcg.o CC tricore-softmmu/disas.o CC tricore-softmmu/tcg-runtime.o CC tricore-softmmu/hax-stub.o CC x86_64-softmmu/tcg/tcg-common.o CC xtensaeb-softmmu/tcg/tcg-op.o CC tricore-softmmu/kvm-stub.o CC unicore32-softmmu/disas.o CC x86_64-softmmu/fpu/softfloat.o CC tricore-softmmu/arch_init.o CC unicore32-softmmu/tcg-runtime.o CC tricore-softmmu/cpus.o CC unicore32-softmmu/hax-stub.o CC unicore32-softmmu/kvm-stub.o CC tricore-softmmu/monitor.o CC unicore32-softmmu/arch_init.o CC unicore32-softmmu/cpus.o CC tricore-softmmu/gdbstub.o CC xtensaeb-softmmu/tcg/optimize.o CC unicore32-softmmu/monitor.o CC x86_64-softmmu/disas.o CC tricore-softmmu/balloon.o CC x86_64-softmmu/tcg-runtime.o CC tricore-softmmu/ioport.o CC xtensaeb-softmmu/tcg/tcg-common.o CC tricore-softmmu/numa.o CC x86_64-softmmu/hax-stub.o CC xtensaeb-softmmu/fpu/softfloat.o CC x86_64-softmmu/kvm-stub.o CC tricore-softmmu/qtest.o CC x86_64-softmmu/arch_init.o CC unicore32-softmmu/gdbstub.o CC tricore-softmmu/bootdevice.o CC x86_64-softmmu/cpus.o CC unicore32-softmmu/balloon.o CC tricore-softmmu/memory.o CC unicore32-softmmu/ioport.o CC x86_64-softmmu/monitor.o CC unicore32-softmmu/numa.o CC tricore-softmmu/cputlb.o CC unicore32-softmmu/qtest.o CC xtensaeb-softmmu/disas.o CC xtensaeb-softmmu/tcg-runtime.o CC unicore32-softmmu/bootdevice.o CC x86_64-softmmu/gdbstub.o CC xtensaeb-softmmu/hax-stub.o CC unicore32-softmmu/memory.o CC xtensaeb-softmmu/kvm-stub.o CC tricore-softmmu/memory_mapping.o CC xtensaeb-softmmu/arch_init.o CC x86_64-softmmu/balloon.o CC tricore-softmmu/dump.o CC xtensaeb-softmmu/cpus.o CC x86_64-softmmu/ioport.o CC unicore32-softmmu/cputlb.o CC x86_64-softmmu/numa.o CC tricore-softmmu/migration/ram.o CC xtensaeb-softmmu/monitor.o CC x86_64-softmmu/qtest.o CC x86_64-softmmu/bootdevice.o CC tricore-softmmu/migration/savevm.o CC unicore32-softmmu/memory_mapping.o CC xtensaeb-softmmu/gdbstub.o CC x86_64-softmmu/memory.o CC unicore32-softmmu/dump.o CC xtensaeb-softmmu/balloon.o CC tricore-softmmu/xen-common-stub.o CC tricore-softmmu/xen-hvm-stub.o CC xtensaeb-softmmu/ioport.o CC unicore32-softmmu/migration/ram.o CC tricore-softmmu/hw/core/nmi.o CC tricore-softmmu/hw/core/generic-loader.o CC x86_64-softmmu/cputlb.o CC xtensaeb-softmmu/numa.o CC tricore-softmmu/hw/core/null-machine.o CC unicore32-softmmu/migration/savevm.o CC tricore-softmmu/hw/cpu/core.o CC xtensaeb-softmmu/qtest.o CC tricore-softmmu/hw/net/vhost_net.o CC xtensaeb-softmmu/bootdevice.o CC tricore-softmmu/hw/net/rocker/qmp-norocker.o CC tricore-softmmu/hw/vfio/common.o CC x86_64-softmmu/memory_mapping.o CC xtensaeb-softmmu/memory.o CC unicore32-softmmu/xen-common-stub.o CC x86_64-softmmu/dump.o CC tricore-softmmu/hw/vfio/platform.o CC unicore32-softmmu/xen-hvm-stub.o CC unicore32-softmmu/hw/core/nmi.o CC tricore-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/migration/ram.o CC tricore-softmmu/hw/tricore/tricore_testboard.o CC unicore32-softmmu/hw/core/generic-loader.o CC xtensaeb-softmmu/cputlb.o CC tricore-softmmu/target/tricore/translate.o CC unicore32-softmmu/hw/core/null-machine.o CC x86_64-softmmu/migration/savevm.o CC unicore32-softmmu/hw/cpu/core.o CC unicore32-softmmu/hw/net/vhost_net.o CC x86_64-softmmu/xen-common-stub.o CC unicore32-softmmu/hw/net/rocker/qmp-norocker.o CC xtensaeb-softmmu/memory_mapping.o CC x86_64-softmmu/xen-hvm-stub.o CC unicore32-softmmu/hw/vfio/common.o CC xtensaeb-softmmu/dump.o CC x86_64-softmmu/hw/9pfs/virtio-9p-device.o CC unicore32-softmmu/hw/vfio/platform.o CC x86_64-softmmu/hw/block/virtio-blk.o CC xtensaeb-softmmu/migration/ram.o CC unicore32-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o CC unicore32-softmmu/hw/unicore32/puv3.o CC xtensaeb-softmmu/migration/savevm.o CC x86_64-softmmu/hw/char/virtio-serial-bus.o CC unicore32-softmmu/target/unicore32/translate.o CC x86_64-softmmu/hw/core/nmi.o CC x86_64-softmmu/hw/core/generic-loader.o CC tricore-softmmu/target/tricore/helper.o CC xtensaeb-softmmu/xen-common-stub.o CC tricore-softmmu/target/tricore/cpu.o CC x86_64-softmmu/hw/core/null-machine.o CC xtensaeb-softmmu/xen-hvm-stub.o CC unicore32-softmmu/target/unicore32/op_helper.o CC tricore-softmmu/target/tricore/op_helper.o CC x86_64-softmmu/hw/cpu/core.o CC xtensaeb-softmmu/hw/core/nmi.o CC unicore32-softmmu/target/unicore32/helper.o CC x86_64-softmmu/hw/display/vga.o CC xtensaeb-softmmu/hw/core/generic-loader.o CC unicore32-softmmu/target/unicore32/cpu.o CC xtensaeb-softmmu/hw/core/null-machine.o CC unicore32-softmmu/target/unicore32/ucf64_helper.o CC xtensaeb-softmmu/hw/cpu/core.o CC tricore-softmmu/target/tricore/fpu_helper.o CC unicore32-softmmu/target/unicore32/softmmu.o CC xtensaeb-softmmu/hw/net/vhost_net.o GEN trace/generated-helpers.c CC tricore-softmmu/trace/control-target.o CC x86_64-softmmu/hw/display/virtio-gpu.o GEN trace/generated-helpers.c CC unicore32-softmmu/trace/control-target.o CC xtensaeb-softmmu/hw/net/rocker/qmp-norocker.o CC tricore-softmmu/trace/generated-helpers.o CC xtensaeb-softmmu/hw/vfio/common.o LINK tricore-softmmu/qemu-system-tricore CC unicore32-softmmu/trace/generated-helpers.o CC x86_64-softmmu/hw/display/virtio-gpu-3d.o LINK unicore32-softmmu/qemu-system-unicore32 CC xtensaeb-softmmu/hw/vfio/platform.o CC xtensaeb-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/hw/display/virtio-gpu-pci.o CC xtensaeb-softmmu/hw/xtensa/pic_cpu.o CC xtensaeb-softmmu/hw/xtensa/sim.o CC x86_64-softmmu/hw/display/virtio-vga.o CC x86_64-softmmu/hw/intc/apic.o CC xtensaeb-softmmu/hw/xtensa/xtfpga.o GEN xtensa-softmmu/hmp-commands.h GEN xtensa-softmmu/hmp-commands-info.h GEN xtensa-softmmu/config-target.h CC xtensaeb-softmmu/target/xtensa/xtensa-semi.o CC x86_64-softmmu/hw/intc/apic_common.o CC xtensa-softmmu/exec.o CC xtensaeb-softmmu/target/xtensa/core-dc232b.o CC x86_64-softmmu/hw/intc/ioapic.o CC xtensaeb-softmmu/target/xtensa/core-dc233c.o CC xtensa-softmmu/translate-all.o CC x86_64-softmmu/hw/isa/lpc_ich9.o CC xtensaeb-softmmu/target/xtensa/core-fsf.o CC xtensa-softmmu/cpu-exec.o CC x86_64-softmmu/hw/misc/vmport.o CC xtensa-softmmu/translate-common.o CC xtensaeb-softmmu/target/xtensa/monitor.o CC x86_64-softmmu/hw/misc/ivshmem.o CC xtensa-softmmu/cpu-exec-common.o CC xtensaeb-softmmu/target/xtensa/translate.o CC xtensa-softmmu/tcg/tcg.o CC x86_64-softmmu/hw/misc/pvpanic.o CC x86_64-softmmu/hw/misc/edu.o GEN aarch64-linux-user/config-target.h CC x86_64-softmmu/hw/net/virtio-net.o CC aarch64-linux-user/exec.o CC aarch64-linux-user/translate-all.o CC x86_64-softmmu/hw/net/vhost_net.o CC x86_64-softmmu/hw/scsi/virtio-scsi.o CC xtensaeb-softmmu/target/xtensa/op_helper.o CC aarch64-linux-user/cpu-exec.o CC xtensa-softmmu/tcg/tcg-op.o CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC x86_64-softmmu/hw/scsi/vhost-scsi.o CC aarch64-linux-user/translate-common.o CC xtensaeb-softmmu/target/xtensa/helper.o CC x86_64-softmmu/hw/timer/mc146818rtc.o CC aarch64-linux-user/cpu-exec-common.o CC xtensaeb-softmmu/target/xtensa/cpu.o CC aarch64-linux-user/tcg/tcg.o CC xtensaeb-softmmu/target/xtensa/gdbstub.o CC x86_64-softmmu/hw/vfio/common.o GEN trace/generated-helpers.c CC xtensaeb-softmmu/trace/control-target.o CC xtensa-softmmu/tcg/optimize.o CC xtensaeb-softmmu/trace/generated-helpers.o CC x86_64-softmmu/hw/vfio/pci.o LINK xtensaeb-softmmu/qemu-system-xtensaeb CC xtensa-softmmu/tcg/tcg-common.o CC aarch64-linux-user/tcg/tcg-op.o CC xtensa-softmmu/fpu/softfloat.o CC x86_64-softmmu/hw/vfio/pci-quirks.o CC x86_64-softmmu/hw/vfio/platform.o GEN alpha-linux-user/config-target.h CC alpha-linux-user/exec.o CC x86_64-softmmu/hw/vfio/spapr.o CC alpha-linux-user/translate-all.o CC x86_64-softmmu/hw/virtio/virtio.o CC alpha-linux-user/cpu-exec.o CC aarch64-linux-user/tcg/optimize.o CC alpha-linux-user/translate-common.o CC xtensa-softmmu/disas.o CC alpha-linux-user/cpu-exec-common.o CC x86_64-softmmu/hw/virtio/virtio-balloon.o CC xtensa-softmmu/tcg-runtime.o CC alpha-linux-user/tcg/tcg.o CC xtensa-softmmu/hax-stub.o CC x86_64-softmmu/hw/virtio/vhost.o CC aarch64-linux-user/tcg/tcg-common.o CC xtensa-softmmu/kvm-stub.o CC aarch64-linux-user/fpu/softfloat.o CC xtensa-softmmu/arch_init.o CC xtensa-softmmu/cpus.o CC x86_64-softmmu/hw/virtio/vhost-backend.o CC xtensa-softmmu/monitor.o CC alpha-linux-user/tcg/tcg-op.o CC x86_64-softmmu/hw/virtio/vhost-user.o CC x86_64-softmmu/hw/virtio/vhost-vsock.o CC x86_64-softmmu/hw/virtio/virtio-crypto.o CC aarch64-linux-user/disas.o CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o CC xtensa-softmmu/gdbstub.o CC aarch64-linux-user/tcg-runtime.o CC alpha-linux-user/tcg/optimize.o CC x86_64-softmmu/hw/i386/multiboot.o CC x86_64-softmmu/hw/i386/pc.o CC xtensa-softmmu/balloon.o GEN aarch64-linux-user/gdbstub-xml.c CC xtensa-softmmu/ioport.o CC alpha-linux-user/tcg/tcg-common.o CC x86_64-softmmu/hw/i386/pc_piix.o CC xtensa-softmmu/numa.o CC aarch64-linux-user/hax-stub.o CC alpha-linux-user/fpu/softfloat.o CC aarch64-linux-user/kvm-stub.o CC xtensa-softmmu/qtest.o CC x86_64-softmmu/hw/i386/pc_q35.o CC aarch64-linux-user/gdbstub.o CC xtensa-softmmu/bootdevice.o CC x86_64-softmmu/hw/i386/pc_sysfw.o CC xtensa-softmmu/memory.o CC aarch64-linux-user/thunk.o CC x86_64-softmmu/hw/i386/x86-iommu.o CC x86_64-softmmu/hw/i386/intel_iommu.o CC aarch64-linux-user/user-exec.o CC aarch64-linux-user/user-exec-stub.o CC xtensa-softmmu/cputlb.o CC alpha-linux-user/disas.o CC aarch64-linux-user/linux-user/main.o CC x86_64-softmmu/hw/i386/amd_iommu.o CC alpha-linux-user/tcg-runtime.o CC aarch64-linux-user/linux-user/syscall.o CC x86_64-softmmu/hw/i386/kvmvapic.o CC alpha-linux-user/hax-stub.o CC xtensa-softmmu/memory_mapping.o CC alpha-linux-user/kvm-stub.o CC x86_64-softmmu/hw/i386/acpi-build.o CC xtensa-softmmu/dump.o CC alpha-linux-user/gdbstub.o CC xtensa-softmmu/migration/ram.o CC alpha-linux-user/thunk.o CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o CC alpha-linux-user/user-exec.o CC x86_64-softmmu/target/i386/translate.o CC xtensa-softmmu/migration/savevm.o CC alpha-linux-user/user-exec-stub.o CC alpha-linux-user/linux-user/main.o CC aarch64-linux-user/linux-user/strace.o CC xtensa-softmmu/xen-common-stub.o CC alpha-linux-user/linux-user/syscall.o CC xtensa-softmmu/xen-hvm-stub.o CC aarch64-linux-user/linux-user/mmap.o CC xtensa-softmmu/hw/core/nmi.o CC xtensa-softmmu/hw/core/generic-loader.o CC aarch64-linux-user/linux-user/signal.o CC xtensa-softmmu/hw/core/null-machine.o CC aarch64-linux-user/linux-user/elfload.o CC xtensa-softmmu/hw/cpu/core.o CC xtensa-softmmu/hw/net/vhost_net.o CC aarch64-linux-user/linux-user/linuxload.o CC xtensa-softmmu/hw/net/rocker/qmp-norocker.o CC xtensa-softmmu/hw/vfio/common.o CC aarch64-linux-user/linux-user/uaccess.o CC alpha-linux-user/linux-user/strace.o CC aarch64-linux-user/linux-user/uname.o CCAS aarch64-linux-user/linux-user/safe-syscall.o CC xtensa-softmmu/hw/vfio/platform.o CC aarch64-linux-user/linux-user/flatload.o CC alpha-linux-user/linux-user/mmap.o CC aarch64-linux-user/target/arm/arm-semi.o CC xtensa-softmmu/hw/vfio/spapr.o CC alpha-linux-user/linux-user/signal.o CC x86_64-softmmu/target/i386/helper.o CC aarch64-linux-user/target/arm/kvm-stub.o CC xtensa-softmmu/hw/xtensa/pic_cpu.o CC aarch64-linux-user/target/arm/translate.o CC alpha-linux-user/linux-user/elfload.o CC x86_64-softmmu/target/i386/cpu.o CC xtensa-softmmu/hw/xtensa/sim.o CC xtensa-softmmu/hw/xtensa/xtfpga.o CC alpha-linux-user/linux-user/linuxload.o CC xtensa-softmmu/target/xtensa/xtensa-semi.o CC alpha-linux-user/linux-user/uaccess.o CC x86_64-softmmu/target/i386/bpt_helper.o CC alpha-linux-user/linux-user/uname.o CC xtensa-softmmu/target/xtensa/core-dc232b.o CC x86_64-softmmu/target/i386/excp_helper.o CC xtensa-softmmu/target/xtensa/core-dc233c.o CCAS alpha-linux-user/linux-user/safe-syscall.o CC xtensa-softmmu/target/xtensa/core-fsf.o CC x86_64-softmmu/target/i386/fpu_helper.o CC alpha-linux-user/target/alpha/translate.o CC xtensa-softmmu/target/xtensa/monitor.o CC xtensa-softmmu/target/xtensa/translate.o CC alpha-linux-user/target/alpha/helper.o CC alpha-linux-user/target/alpha/cpu.o CC alpha-linux-user/target/alpha/int_helper.o CC xtensa-softmmu/target/xtensa/op_helper.o CC alpha-linux-user/target/alpha/fpu_helper.o CC x86_64-softmmu/target/i386/cc_helper.o CC alpha-linux-user/target/alpha/vax_helper.o CC xtensa-softmmu/target/xtensa/helper.o CC x86_64-softmmu/target/i386/int_helper.o CC aarch64-linux-user/target/arm/op_helper.o CC alpha-linux-user/target/alpha/sys_helper.o CC xtensa-softmmu/target/xtensa/cpu.o CC alpha-linux-user/target/alpha/mem_helper.o CC xtensa-softmmu/target/xtensa/gdbstub.o CC x86_64-softmmu/target/i386/svm_helper.o CC alpha-linux-user/target/alpha/gdbstub.o CC aarch64-linux-user/target/arm/helper.o GEN trace/generated-helpers.c CC xtensa-softmmu/trace/control-target.o GEN trace/generated-helpers.c CC alpha-linux-user/trace/control-target.o CC x86_64-softmmu/target/i386/smm_helper.o CC xtensa-softmmu/trace/generated-helpers.o CC alpha-linux-user/trace/generated-helpers.o CC x86_64-softmmu/target/i386/misc_helper.o LINK xtensa-softmmu/qemu-system-xtensa LINK alpha-linux-user/qemu-alpha CC x86_64-softmmu/target/i386/mem_helper.o CC x86_64-softmmu/target/i386/seg_helper.o GEN armeb-linux-user/config-target.h CC armeb-linux-user/exec.o CC aarch64-linux-user/target/arm/cpu.o CC aarch64-linux-user/target/arm/neon_helper.o GEN arm-linux-user/config-target.h CC armeb-linux-user/translate-all.o CC arm-linux-user/exec.o CC arm-linux-user/translate-all.o CC armeb-linux-user/cpu-exec.o CC aarch64-linux-user/target/arm/iwmmxt_helper.o CC arm-linux-user/cpu-exec.o CC armeb-linux-user/translate-common.o CC x86_64-softmmu/target/i386/mpx_helper.o CC arm-linux-user/translate-common.o CC armeb-linux-user/cpu-exec-common.o CC aarch64-linux-user/target/arm/gdbstub.o CC arm-linux-user/cpu-exec-common.o CC x86_64-softmmu/target/i386/gdbstub.o CC armeb-linux-user/tcg/tcg.o CC aarch64-linux-user/target/arm/cpu64.o CC arm-linux-user/tcg/tcg.o CC x86_64-softmmu/target/i386/machine.o CC aarch64-linux-user/target/arm/translate-a64.o CC x86_64-softmmu/target/i386/arch_memory_mapping.o CC x86_64-softmmu/target/i386/arch_dump.o CC x86_64-softmmu/target/i386/monitor.o CC armeb-linux-user/tcg/tcg-op.o CC x86_64-softmmu/target/i386/kvm-stub.o CC arm-linux-user/tcg/tcg-op.o GEN trace/generated-helpers.c CC x86_64-softmmu/trace/control-target.o CC x86_64-softmmu/trace/generated-helpers.o LINK x86_64-softmmu/qemu-system-x86_64 CC aarch64-linux-user/target/arm/helper-a64.o CC armeb-linux-user/tcg/optimize.o CC arm-linux-user/tcg/optimize.o CC aarch64-linux-user/target/arm/gdbstub64.o CC aarch64-linux-user/target/arm/crypto_helper.o GEN trace/generated-helpers.c CC aarch64-linux-user/trace/control-target.o CC arm-linux-user/tcg/tcg-common.o CC arm-linux-user/fpu/softfloat.o CC armeb-linux-user/tcg/tcg-common.o CC aarch64-linux-user/gdbstub-xml.o CC arm-linux-user/disas.o CC armeb-linux-user/fpu/softfloat.o CC aarch64-linux-user/trace/generated-helpers.o CC arm-linux-user/tcg-runtime.o LINK aarch64-linux-user/qemu-aarch64 GEN arm-linux-user/gdbstub-xml.c GEN cris-linux-user/config-target.h CC cris-linux-user/exec.o CC arm-linux-user/hax-stub.o CC cris-linux-user/translate-all.o CC cris-linux-user/cpu-exec.o CC arm-linux-user/kvm-stub.o CC armeb-linux-user/disas.o CC arm-linux-user/gdbstub.o CC armeb-linux-user/tcg-runtime.o CC cris-linux-user/translate-common.o CC cris-linux-user/cpu-exec-common.o GEN armeb-linux-user/gdbstub-xml.c CC armeb-linux-user/hax-stub.o CC arm-linux-user/thunk.o CC cris-linux-user/tcg/tcg.o CC armeb-linux-user/kvm-stub.o CC arm-linux-user/user-exec.o CC cris-linux-user/tcg/tcg-op.o CC arm-linux-user/user-exec-stub.o CC armeb-linux-user/gdbstub.o CC arm-linux-user/linux-user/main.o CC armeb-linux-user/thunk.o CC arm-linux-user/linux-user/syscall.o CC armeb-linux-user/user-exec.o CC armeb-linux-user/user-exec-stub.o CC armeb-linux-user/linux-user/main.o CC cris-linux-user/tcg/optimize.o GEN hppa-linux-user/config-target.h CC hppa-linux-user/exec.o CC armeb-linux-user/linux-user/syscall.o CC cris-linux-user/tcg/tcg-common.o CC hppa-linux-user/translate-all.o CC cris-linux-user/fpu/softfloat.o CC hppa-linux-user/cpu-exec.o CC hppa-linux-user/translate-common.o CC hppa-linux-user/cpu-exec-common.o CC hppa-linux-user/tcg/tcg.o CC arm-linux-user/linux-user/strace.o CC cris-linux-user/disas.o CC arm-linux-user/linux-user/mmap.o CC cris-linux-user/tcg-runtime.o CC hppa-linux-user/tcg/tcg-op.o CC arm-linux-user/linux-user/signal.o CC armeb-linux-user/linux-user/strace.o CC cris-linux-user/hax-stub.o CC arm-linux-user/linux-user/elfload.o CC cris-linux-user/kvm-stub.o CC armeb-linux-user/linux-user/mmap.o CC cris-linux-user/gdbstub.o CC arm-linux-user/linux-user/linuxload.o CC armeb-linux-user/linux-user/signal.o CC cris-linux-user/thunk.o CC arm-linux-user/linux-user/uaccess.o CC armeb-linux-user/linux-user/elfload.o CC cris-linux-user/user-exec.o CC cris-linux-user/user-exec-stub.o CC arm-linux-user/linux-user/uname.o CC hppa-linux-user/tcg/optimize.o CC cris-linux-user/linux-user/main.o CCAS arm-linux-user/linux-user/safe-syscall.o CC arm-linux-user/linux-user/flatload.o CC armeb-linux-user/linux-user/linuxload.o CC cris-linux-user/linux-user/syscall.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11.o CC armeb-linux-user/linux-user/uaccess.o CC hppa-linux-user/tcg/tcg-common.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o CC armeb-linux-user/linux-user/uname.o CC hppa-linux-user/fpu/softfloat.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o CCAS armeb-linux-user/linux-user/safe-syscall.o CC armeb-linux-user/linux-user/flatload.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11.o CC arm-linux-user/linux-user/arm/nwfpe/fpopcode.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o CC arm-linux-user/linux-user/arm/nwfpe/single_cpdo.o CC hppa-linux-user/disas.o CC arm-linux-user/linux-user/arm/nwfpe/double_cpdo.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o CC hppa-linux-user/tcg-runtime.o CC arm-linux-user/linux-user/arm/nwfpe/extended_cpdo.o CC armeb-linux-user/linux-user/arm/nwfpe/fpopcode.o CC arm-linux-user/target/arm/arm-semi.o CC armeb-linux-user/linux-user/arm/nwfpe/single_cpdo.o CC hppa-linux-user/hax-stub.o CC cris-linux-user/linux-user/strace.o CC armeb-linux-user/linux-user/arm/nwfpe/double_cpdo.o CC hppa-linux-user/kvm-stub.o CC arm-linux-user/target/arm/kvm-stub.o CC armeb-linux-user/linux-user/arm/nwfpe/extended_cpdo.o CC hppa-linux-user/gdbstub.o CC arm-linux-user/target/arm/translate.o CC cris-linux-user/linux-user/mmap.o CC armeb-linux-user/target/arm/arm-semi.o CC hppa-linux-user/thunk.o CC cris-linux-user/linux-user/signal.o CC armeb-linux-user/target/arm/kvm-stub.o CC hppa-linux-user/user-exec.o CC cris-linux-user/linux-user/elfload.o CC armeb-linux-user/target/arm/translate.o CC hppa-linux-user/user-exec-stub.o CC hppa-linux-user/linux-user/main.o CC cris-linux-user/linux-user/linuxload.o CC hppa-linux-user/linux-user/syscall.o CC cris-linux-user/linux-user/uaccess.o CC cris-linux-user/linux-user/uname.o CCAS cris-linux-user/linux-user/safe-syscall.o CC cris-linux-user/target/cris/translate.o CC arm-linux-user/target/arm/op_helper.o CC cris-linux-user/target/cris/op_helper.o CC hppa-linux-user/linux-user/strace.o CC arm-linux-user/target/arm/helper.o CC cris-linux-user/target/cris/helper.o CC cris-linux-user/target/cris/cpu.o CC hppa-linux-user/linux-user/mmap.o CC cris-linux-user/target/cris/gdbstub.o CC armeb-linux-user/target/arm/op_helper.o GEN trace/generated-helpers.c CC cris-linux-user/trace/control-target.o CC hppa-linux-user/linux-user/signal.o CC arm-linux-user/target/arm/cpu.o CC hppa-linux-user/linux-user/elfload.o CC cris-linux-user/trace/generated-helpers.o CC armeb-linux-user/target/arm/helper.o CC arm-linux-user/target/arm/neon_helper.o LINK cris-linux-user/qemu-cris CC hppa-linux-user/linux-user/linuxload.o CC hppa-linux-user/linux-user/uaccess.o CC armeb-linux-user/target/arm/cpu.o CC hppa-linux-user/linux-user/uname.o CCAS hppa-linux-user/linux-user/safe-syscall.o CC armeb-linux-user/target/arm/neon_helper.o CC arm-linux-user/target/arm/iwmmxt_helper.o CC hppa-linux-user/target/hppa/translate.o CC hppa-linux-user/target/hppa/helper.o CC arm-linux-user/target/arm/gdbstub.o GEN i386-linux-user/config-target.h CC armeb-linux-user/target/arm/iwmmxt_helper.o CC i386-linux-user/exec.o CC arm-linux-user/target/arm/crypto_helper.o CC hppa-linux-user/target/hppa/cpu.o CC hppa-linux-user/target/hppa/op_helper.o GEN trace/generated-helpers.c CC arm-linux-user/trace/control-target.o CC i386-linux-user/translate-all.o CC hppa-linux-user/target/hppa/gdbstub.o CC armeb-linux-user/target/arm/gdbstub.o CC arm-linux-user/gdbstub-xml.o CC armeb-linux-user/target/arm/crypto_helper.o GEN trace/generated-helpers.c CC arm-linux-user/trace/generated-helpers.o CC hppa-linux-user/trace/control-target.o CC i386-linux-user/cpu-exec.o LINK arm-linux-user/qemu-arm GEN trace/generated-helpers.c CC armeb-linux-user/trace/control-target.o CC hppa-linux-user/trace/generated-helpers.o CC i386-linux-user/translate-common.o CC armeb-linux-user/gdbstub-xml.o LINK hppa-linux-user/qemu-hppa CC i386-linux-user/cpu-exec-common.o GEN m68k-linux-user/config-target.h CC armeb-linux-user/trace/generated-helpers.o CC i386-linux-user/tcg/tcg.o CC m68k-linux-user/exec.o LINK armeb-linux-user/qemu-armeb GEN microblazeel-linux-user/config-target.h CC m68k-linux-user/translate-all.o CC microblazeel-linux-user/exec.o CC microblazeel-linux-user/translate-all.o CC microblazeel-linux-user/cpu-exec.o CC m68k-linux-user/cpu-exec.o CC microblazeel-linux-user/translate-common.o CC microblazeel-linux-user/cpu-exec-common.o CC microblazeel-linux-user/tcg/tcg.o CC m68k-linux-user/translate-common.o CC i386-linux-user/tcg/tcg-op.o CC microblazeel-linux-user/tcg/tcg-op.o CC m68k-linux-user/cpu-exec-common.o CC m68k-linux-user/tcg/tcg.o CC i386-linux-user/tcg/optimize.o CC i386-linux-user/tcg/tcg-common.o CC microblazeel-linux-user/tcg/optimize.o CC i386-linux-user/fpu/softfloat.o CC m68k-linux-user/tcg/tcg-op.o CC i386-linux-user/disas.o GEN microblaze-linux-user/config-target.h CC microblazeel-linux-user/tcg/tcg-common.o CC microblazeel-linux-user/fpu/softfloat.o CC microblaze-linux-user/exec.o CC microblaze-linux-user/translate-all.o CC m68k-linux-user/tcg/optimize.o CC microblaze-linux-user/cpu-exec.o CC microblaze-linux-user/translate-common.o CC m68k-linux-user/tcg/tcg-common.o CC i386-linux-user/tcg-runtime.o CC microblaze-linux-user/cpu-exec-common.o CC m68k-linux-user/fpu/softfloat.o CC microblaze-linux-user/tcg/tcg.o CC i386-linux-user/hax-stub.o CC microblazeel-linux-user/disas.o CC i386-linux-user/kvm-stub.o CC microblazeel-linux-user/tcg-runtime.o CC i386-linux-user/gdbstub.o CC microblazeel-linux-user/hax-stub.o CC microblazeel-linux-user/kvm-stub.o CC i386-linux-user/thunk.o CC i386-linux-user/user-exec.o CC microblazeel-linux-user/gdbstub.o CC i386-linux-user/user-exec-stub.o CC microblaze-linux-user/tcg/tcg-op.o CC microblazeel-linux-user/thunk.o CC i386-linux-user/linux-user/main.o CC microblazeel-linux-user/user-exec.o CC i386-linux-user/linux-user/syscall.o CC microblazeel-linux-user/user-exec-stub.o CC m68k-linux-user/disas.o CC microblazeel-linux-user/linux-user/main.o CC m68k-linux-user/tcg-runtime.o CC microblazeel-linux-user/linux-user/syscall.o GEN m68k-linux-user/gdbstub-xml.c CC m68k-linux-user/hax-stub.o CC microblaze-linux-user/tcg/optimize.o CC m68k-linux-user/kvm-stub.o CC m68k-linux-user/gdbstub.o CC m68k-linux-user/thunk.o CC microblaze-linux-user/tcg/tcg-common.o CC microblaze-linux-user/fpu/softfloat.o CC m68k-linux-user/user-exec.o CC m68k-linux-user/user-exec-stub.o CC m68k-linux-user/linux-user/main.o CC m68k-linux-user/linux-user/syscall.o CC microblazeel-linux-user/linux-user/strace.o CC i386-linux-user/linux-user/strace.o CC microblaze-linux-user/disas.o CC microblaze-linux-user/tcg-runtime.o CC microblazeel-linux-user/linux-user/mmap.o CC i386-linux-user/linux-user/mmap.o CC microblazeel-linux-user/linux-user/signal.o CC microblaze-linux-user/hax-stub.o CC i386-linux-user/linux-user/signal.o CC microblaze-linux-user/kvm-stub.o CC microblaze-linux-user/gdbstub.o CC microblazeel-linux-user/linux-user/elfload.o CC i386-linux-user/linux-user/elfload.o CC microblaze-linux-user/thunk.o CC microblazeel-linux-user/linux-user/linuxload.o CC microblaze-linux-user/user-exec.o CC i386-linux-user/linux-user/linuxload.o CC microblazeel-linux-user/linux-user/uaccess.o CC microblaze-linux-user/user-exec-stub.o CC i386-linux-user/linux-user/uaccess.o CC m68k-linux-user/linux-user/strace.o CC microblazeel-linux-user/linux-user/uname.o CC i386-linux-user/linux-user/uname.o CC microblaze-linux-user/linux-user/main.o CCAS microblazeel-linux-user/linux-user/safe-syscall.o CC microblazeel-linux-user/linux-user/flatload.o CCAS i386-linux-user/linux-user/safe-syscall.o CC i386-linux-user/linux-user/vm86.o CC microblaze-linux-user/linux-user/syscall.o CC m68k-linux-user/linux-user/mmap.o CC i386-linux-user/target/i386/translate.o CC microblazeel-linux-user/target/microblaze/translate.o CC m68k-linux-user/linux-user/signal.o CC m68k-linux-user/linux-user/elfload.o CC microblazeel-linux-user/target/microblaze/op_helper.o CC microblazeel-linux-user/target/microblaze/helper.o CC microblazeel-linux-user/target/microblaze/cpu.o CC m68k-linux-user/linux-user/linuxload.o CC microblazeel-linux-user/target/microblaze/gdbstub.o CC m68k-linux-user/linux-user/uaccess.o GEN trace/generated-helpers.c CC microblazeel-linux-user/trace/control-target.o CC m68k-linux-user/linux-user/uname.o CCAS m68k-linux-user/linux-user/safe-syscall.o CC m68k-linux-user/linux-user/flatload.o CC microblazeel-linux-user/trace/generated-helpers.o CC m68k-linux-user/linux-user/m68k-sim.o CC m68k-linux-user/target/m68k/m68k-semi.o LINK microblazeel-linux-user/qemu-microblazeel CC m68k-linux-user/target/m68k/translate.o CC microblaze-linux-user/linux-user/strace.o GEN mips64el-linux-user/config-target.h CC mips64el-linux-user/exec.o CC microblaze-linux-user/linux-user/mmap.o CC mips64el-linux-user/translate-all.o CC microblaze-linux-user/linux-user/signal.o CC i386-linux-user/target/i386/helper.o CC mips64el-linux-user/cpu-exec.o CC m68k-linux-user/target/m68k/op_helper.o CC i386-linux-user/target/i386/cpu.o CC microblaze-linux-user/linux-user/elfload.o CC mips64el-linux-user/translate-common.o CC m68k-linux-user/target/m68k/helper.o CC mips64el-linux-user/cpu-exec-common.o CC m68k-linux-user/target/m68k/cpu.o CC i386-linux-user/target/i386/bpt_helper.o CC microblaze-linux-user/linux-user/linuxload.o CC mips64el-linux-user/tcg/tcg.o CC m68k-linux-user/target/m68k/gdbstub.o CC i386-linux-user/target/i386/excp_helper.o CC microblaze-linux-user/linux-user/uaccess.o GEN trace/generated-helpers.c CC m68k-linux-user/trace/control-target.o CC i386-linux-user/target/i386/fpu_helper.o CC microblaze-linux-user/linux-user/uname.o CC m68k-linux-user/gdbstub-xml.o CCAS microblaze-linux-user/linux-user/safe-syscall.o CC microblaze-linux-user/linux-user/flatload.o CC m68k-linux-user/trace/generated-helpers.o LINK m68k-linux-user/qemu-m68k CC microblaze-linux-user/target/microblaze/translate.o CC i386-linux-user/target/i386/cc_helper.o CC mips64el-linux-user/tcg/tcg-op.o CC mips64el-linux-user/tcg/optimize.o CC i386-linux-user/target/i386/int_helper.o CC microblaze-linux-user/target/microblaze/op_helper.o CC i386-linux-user/target/i386/svm_helper.o CC microblaze-linux-user/target/microblaze/helper.o CC i386-linux-user/target/i386/smm_helper.o CC i386-linux-user/target/i386/misc_helper.o CC microblaze-linux-user/target/microblaze/cpu.o CC microblaze-linux-user/target/microblaze/gdbstub.o CC i386-linux-user/target/i386/mem_helper.o GEN trace/generated-helpers.c CC microblaze-linux-user/trace/control-target.o CC i386-linux-user/target/i386/seg_helper.o GEN mips64-linux-user/config-target.h CC mips64el-linux-user/tcg/tcg-common.o CC mips64-linux-user/exec.o CC microblaze-linux-user/trace/generated-helpers.o LINK microblaze-linux-user/qemu-microblaze CC mips64el-linux-user/fpu/softfloat.o CC mips64-linux-user/translate-all.o CC mips64-linux-user/cpu-exec.o GEN mipsel-linux-user/config-target.h CC mipsel-linux-user/exec.o CC mips64-linux-user/translate-common.o CC mipsel-linux-user/translate-all.o CC mips64-linux-user/cpu-exec-common.o CC i386-linux-user/target/i386/mpx_helper.o CC mipsel-linux-user/cpu-exec.o CC mips64-linux-user/tcg/tcg.o CC mipsel-linux-user/translate-common.o CC mipsel-linux-user/cpu-exec-common.o CC i386-linux-user/target/i386/gdbstub.o CC mipsel-linux-user/tcg/tcg.o CC i386-linux-user/target/i386/kvm-stub.o GEN trace/generated-helpers.c CC i386-linux-user/trace/control-target.o CC mips64el-linux-user/disas.o CC i386-linux-user/trace/generated-helpers.o CC mips64el-linux-user/tcg-runtime.o LINK i386-linux-user/qemu-i386 CC mips64-linux-user/tcg/tcg-op.o CC mipsel-linux-user/tcg/tcg-op.o CC mipsel-linux-user/tcg/optimize.o CC mips64el-linux-user/hax-stub.o CC mips64el-linux-user/kvm-stub.o CC mips64el-linux-user/gdbstub.o CC mips64-linux-user/tcg/optimize.o CC mips64el-linux-user/thunk.o CC mipsel-linux-user/tcg/tcg-common.o CC mips64-linux-user/tcg/tcg-common.o CC mips64el-linux-user/user-exec.o CC mipsel-linux-user/fpu/softfloat.o CC mips64el-linux-user/user-exec-stub.o CC mipsel-linux-user/disas.o CC mips64el-linux-user/linux-user/main.o CC mips64-linux-user/fpu/softfloat.o CC mips64-linux-user/disas.o CC mips64el-linux-user/linux-user/syscall.o CC mipsel-linux-user/tcg-runtime.o CC mips64-linux-user/tcg-runtime.o CC mipsel-linux-user/hax-stub.o CC mips64el-linux-user/linux-user/strace.o CC mipsel-linux-user/kvm-stub.o CC mipsel-linux-user/gdbstub.o GEN mips-linux-user/config-target.h CC mips64-linux-user/hax-stub.o CC mips-linux-user/exec.o CC mipsel-linux-user/thunk.o CC mips64-linux-user/kvm-stub.o CC mips-linux-user/translate-all.o CC mipsel-linux-user/user-exec.o CC mips64el-linux-user/linux-user/mmap.o CC mips64-linux-user/gdbstub.o CC mipsel-linux-user/user-exec-stub.o CC mips-linux-user/cpu-exec.o CC mips64-linux-user/thunk.o CC mips64el-linux-user/linux-user/signal.o CC mipsel-linux-user/linux-user/main.o CC mips-linux-user/translate-common.o CC mips64-linux-user/user-exec.o CC mips-linux-user/cpu-exec-common.o CC mips64-linux-user/user-exec-stub.o CC mipsel-linux-user/linux-user/syscall.o CC mips64el-linux-user/linux-user/elfload.o CC mips-linux-user/tcg/tcg.o CC mips64-linux-user/linux-user/main.o CC mips64-linux-user/linux-user/syscall.o CC mips64el-linux-user/linux-user/linuxload.o CC mips64el-linux-user/linux-user/uaccess.o CC mips64el-linux-user/linux-user/uname.o CC mips-linux-user/tcg/tcg-op.o CCAS mips64el-linux-user/linux-user/safe-syscall.o CC mips64el-linux-user/target/mips/translate.o CC mips64-linux-user/linux-user/strace.o CC mipsel-linux-user/linux-user/strace.o CC mips64-linux-user/linux-user/mmap.o CC mips-linux-user/tcg/optimize.o CC mips64-linux-user/linux-user/signal.o CC mipsel-linux-user/linux-user/mmap.o CC mips64-linux-user/linux-user/elfload.o CC mips-linux-user/tcg/tcg-common.o CC mipsel-linux-user/linux-user/signal.o CC mips-linux-user/fpu/softfloat.o CC mips64-linux-user/linux-user/linuxload.o CC mipsel-linux-user/linux-user/elfload.o CC mips64-linux-user/linux-user/uaccess.o CC mips64-linux-user/linux-user/uname.o CC mipsel-linux-user/linux-user/linuxload.o CCAS mips64-linux-user/linux-user/safe-syscall.o CC mips64-linux-user/target/mips/translate.o CC mips64el-linux-user/target/mips/dsp_helper.o CC mipsel-linux-user/linux-user/uaccess.o CC mipsel-linux-user/linux-user/uname.o CC mips-linux-user/disas.o CCAS mipsel-linux-user/linux-user/safe-syscall.o CC mipsel-linux-user/target/mips/translate.o CC mips-linux-user/tcg-runtime.o CC mips64el-linux-user/target/mips/op_helper.o CC mips-linux-user/hax-stub.o CC mips-linux-user/kvm-stub.o CC mips-linux-user/gdbstub.o CC mips-linux-user/thunk.o CC mips-linux-user/user-exec.o CC mips64el-linux-user/target/mips/lmi_helper.o CC mips-linux-user/user-exec-stub.o CC mips64el-linux-user/target/mips/helper.o CC mips-linux-user/linux-user/main.o CC mips64el-linux-user/target/mips/cpu.o CC mips-linux-user/linux-user/syscall.o CC mips64-linux-user/target/mips/dsp_helper.o CC mips64el-linux-user/target/mips/gdbstub.o CC mips64el-linux-user/target/mips/msa_helper.o CC mipsel-linux-user/target/mips/dsp_helper.o CC mips64-linux-user/target/mips/op_helper.o CC mipsel-linux-user/target/mips/op_helper.o CC mips-linux-user/linux-user/strace.o CC mips-linux-user/linux-user/mmap.o CC mips64-linux-user/target/mips/lmi_helper.o CC mips64el-linux-user/target/mips/mips-semi.o CC mips-linux-user/linux-user/signal.o GEN trace/generated-helpers.c CC mips64el-linux-user/trace/control-target.o CC mips64el-linux-user/trace/generated-helpers.o CC mips64-linux-user/target/mips/helper.o LINK mips64el-linux-user/qemu-mips64el CC mips64-linux-user/target/mips/cpu.o CC mips-linux-user/linux-user/elfload.o CC mipsel-linux-user/target/mips/lmi_helper.o CC mips-linux-user/linux-user/linuxload.o CC mips64-linux-user/target/mips/gdbstub.o CC mipsel-linux-user/target/mips/helper.o CC mips64-linux-user/target/mips/msa_helper.o CC mips-linux-user/linux-user/uaccess.o CC mipsel-linux-user/target/mips/cpu.o GEN mipsn32el-linux-user/config-target.h CC mipsn32el-linux-user/exec.o CC mips-linux-user/linux-user/uname.o CC mipsel-linux-user/target/mips/gdbstub.o CC mipsn32el-linux-user/translate-all.o CCAS mips-linux-user/linux-user/safe-syscall.o CC mips-linux-user/target/mips/translate.o CC mipsel-linux-user/target/mips/msa_helper.o CC mipsn32el-linux-user/cpu-exec.o CC mipsn32el-linux-user/translate-common.o CC mipsn32el-linux-user/cpu-exec-common.o CC mipsn32el-linux-user/tcg/tcg.o CC mips64-linux-user/target/mips/mips-semi.o GEN trace/generated-helpers.c CC mips64-linux-user/trace/control-target.o CC mips64-linux-user/trace/generated-helpers.o LINK mips64-linux-user/qemu-mips64 CC mipsel-linux-user/target/mips/mips-semi.o CC mipsn32el-linux-user/tcg/tcg-op.o GEN trace/generated-helpers.c GEN mipsn32-linux-user/config-target.h CC mipsel-linux-user/trace/control-target.o CC mipsn32-linux-user/exec.o CC mipsel-linux-user/trace/generated-helpers.o CC mipsn32-linux-user/translate-all.o LINK mipsel-linux-user/qemu-mipsel CC mips-linux-user/target/mips/dsp_helper.o CC mips-linux-user/target/mips/op_helper.o CC mipsn32-linux-user/cpu-exec.o CC mipsn32-linux-user/translate-common.o GEN nios2-linux-user/config-target.h CC mipsn32-linux-user/cpu-exec-common.o CC nios2-linux-user/exec.o CC mipsn32el-linux-user/tcg/optimize.o CC mipsn32-linux-user/tcg/tcg.o CC nios2-linux-user/translate-all.o CC nios2-linux-user/cpu-exec.o CC mips-linux-user/target/mips/lmi_helper.o CC mipsn32el-linux-user/tcg/tcg-common.o CC nios2-linux-user/translate-common.o CC mips-linux-user/target/mips/helper.o CC mipsn32el-linux-user/fpu/softfloat.o CC nios2-linux-user/cpu-exec-common.o CC mips-linux-user/target/mips/cpu.o CC mipsn32-linux-user/tcg/tcg-op.o CC nios2-linux-user/tcg/tcg.o CC mips-linux-user/target/mips/gdbstub.o CC mips-linux-user/target/mips/msa_helper.o CC nios2-linux-user/tcg/tcg-op.o CC mipsn32-linux-user/tcg/optimize.o CC mipsn32el-linux-user/disas.o CC mipsn32el-linux-user/tcg-runtime.o CC mipsn32el-linux-user/hax-stub.o CC mipsn32-linux-user/tcg/tcg-common.o CC mipsn32-linux-user/fpu/softfloat.o CC mipsn32el-linux-user/kvm-stub.o CC mipsn32el-linux-user/gdbstub.o CC nios2-linux-user/tcg/optimize.o CC mips-linux-user/target/mips/mips-semi.o GEN trace/generated-helpers.c CC mipsn32el-linux-user/thunk.o CC mips-linux-user/trace/control-target.o CC nios2-linux-user/tcg/tcg-common.o CC mips-linux-user/trace/generated-helpers.o CC mipsn32el-linux-user/user-exec.o CC nios2-linux-user/fpu/softfloat.o CC mipsn32el-linux-user/user-exec-stub.o LINK mips-linux-user/qemu-mips CC mipsn32el-linux-user/linux-user/main.o CC nios2-linux-user/disas.o CC mipsn32-linux-user/disas.o CC nios2-linux-user/tcg-runtime.o CC mipsn32el-linux-user/linux-user/syscall.o CC mipsn32-linux-user/tcg-runtime.o CC mipsn32-linux-user/hax-stub.o GEN or1k-linux-user/config-target.h CC or1k-linux-user/exec.o CC mipsn32-linux-user/kvm-stub.o CC nios2-linux-user/hax-stub.o CC nios2-linux-user/kvm-stub.o CC or1k-linux-user/translate-all.o CC mipsn32-linux-user/gdbstub.o CC nios2-linux-user/gdbstub.o CC or1k-linux-user/cpu-exec.o CC or1k-linux-user/translate-common.o CC nios2-linux-user/thunk.o CC mipsn32-linux-user/thunk.o CC or1k-linux-user/cpu-exec-common.o CC or1k-linux-user/tcg/tcg.o CC nios2-linux-user/user-exec.o CC mipsn32-linux-user/user-exec.o CC nios2-linux-user/user-exec-stub.o CC mipsn32-linux-user/user-exec-stub.o CC mipsn32el-linux-user/linux-user/strace.o CC nios2-linux-user/linux-user/main.o CC mipsn32-linux-user/linux-user/main.o CC mipsn32el-linux-user/linux-user/mmap.o CC nios2-linux-user/linux-user/syscall.o CC or1k-linux-user/tcg/tcg-op.o CC mipsn32-linux-user/linux-user/syscall.o CC mipsn32el-linux-user/linux-user/signal.o CC mipsn32el-linux-user/linux-user/elfload.o CC mipsn32el-linux-user/linux-user/linuxload.o CC mipsn32el-linux-user/linux-user/uaccess.o CC mipsn32el-linux-user/linux-user/uname.o CC or1k-linux-user/tcg/optimize.o CC nios2-linux-user/linux-user/strace.o CCAS mipsn32el-linux-user/linux-user/safe-syscall.o CC mipsn32el-linux-user/target/mips/translate.o CC nios2-linux-user/linux-user/mmap.o CC or1k-linux-user/tcg/tcg-common.o CC mipsn32-linux-user/linux-user/strace.o CC nios2-linux-user/linux-user/signal.o CC or1k-linux-user/fpu/softfloat.o CC nios2-linux-user/linux-user/elfload.o CC mipsn32-linux-user/linux-user/mmap.o CC mipsn32-linux-user/linux-user/signal.o CC nios2-linux-user/linux-user/linuxload.o CC mipsn32-linux-user/linux-user/elfload.o CC nios2-linux-user/linux-user/uaccess.o CC nios2-linux-user/linux-user/uname.o CC mipsn32-linux-user/linux-user/linuxload.o CC or1k-linux-user/disas.o CCAS nios2-linux-user/linux-user/safe-syscall.o CC nios2-linux-user/target/nios2/translate.o CC or1k-linux-user/tcg-runtime.o CC mipsn32-linux-user/linux-user/uaccess.o CC nios2-linux-user/target/nios2/op_helper.o CC mipsn32-linux-user/linux-user/uname.o CC nios2-linux-user/target/nios2/helper.o CC or1k-linux-user/hax-stub.o CCAS mipsn32-linux-user/linux-user/safe-syscall.o CC mipsn32-linux-user/target/mips/translate.o CC nios2-linux-user/target/nios2/cpu.o CC or1k-linux-user/kvm-stub.o CC mipsn32el-linux-user/target/mips/dsp_helper.o CC or1k-linux-user/gdbstub.o CC nios2-linux-user/target/nios2/mmu.o GEN trace/generated-helpers.c CC nios2-linux-user/trace/control-target.o CC or1k-linux-user/thunk.o CC nios2-linux-user/trace/generated-helpers.o CC mipsn32el-linux-user/target/mips/op_helper.o LINK nios2-linux-user/qemu-nios2 CC or1k-linux-user/user-exec.o CC or1k-linux-user/user-exec-stub.o GEN ppc64abi32-linux-user/config-target.h CC ppc64abi32-linux-user/exec.o CC or1k-linux-user/linux-user/main.o CC or1k-linux-user/linux-user/syscall.o CC ppc64abi32-linux-user/translate-all.o CC ppc64abi32-linux-user/cpu-exec.o CC ppc64abi32-linux-user/translate-common.o CC mipsn32el-linux-user/target/mips/lmi_helper.o CC ppc64abi32-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/tcg/tcg.o CC mipsn32el-linux-user/target/mips/helper.o CC mipsn32el-linux-user/target/mips/cpu.o CC mipsn32el-linux-user/target/mips/gdbstub.o CC mipsn32-linux-user/target/mips/dsp_helper.o CC or1k-linux-user/linux-user/strace.o CC mipsn32el-linux-user/target/mips/msa_helper.o CC ppc64abi32-linux-user/tcg/tcg-op.o CC or1k-linux-user/linux-user/mmap.o CC mipsn32-linux-user/target/mips/op_helper.o CC or1k-linux-user/linux-user/signal.o CC or1k-linux-user/linux-user/elfload.o CC or1k-linux-user/linux-user/linuxload.o CC ppc64abi32-linux-user/tcg/optimize.o CC or1k-linux-user/linux-user/uaccess.o CC or1k-linux-user/linux-user/uname.o CCAS or1k-linux-user/linux-user/safe-syscall.o CC mipsn32-linux-user/target/mips/lmi_helper.o CC or1k-linux-user/target/openrisc/cpu.o CC or1k-linux-user/target/openrisc/exception.o CC ppc64abi32-linux-user/tcg/tcg-common.o CC mipsn32-linux-user/target/mips/helper.o CC ppc64abi32-linux-user/fpu/softfloat.o CC or1k-linux-user/target/openrisc/interrupt.o CC mipsn32-linux-user/target/mips/cpu.o CC or1k-linux-user/target/openrisc/mmu.o CC mipsn32el-linux-user/target/mips/mips-semi.o CC mipsn32-linux-user/target/mips/gdbstub.o CC or1k-linux-user/target/openrisc/translate.o GEN trace/generated-helpers.c CC mipsn32el-linux-user/trace/control-target.o CC mipsn32-linux-user/target/mips/msa_helper.o CC mipsn32el-linux-user/trace/generated-helpers.o CC or1k-linux-user/target/openrisc/exception_helper.o LINK mipsn32el-linux-user/qemu-mipsn32el CC or1k-linux-user/target/openrisc/fpu_helper.o CC mipsn32-linux-user/target/mips/mips-semi.o CC or1k-linux-user/target/openrisc/interrupt_helper.o CC ppc64abi32-linux-user/disas.o CC or1k-linux-user/target/openrisc/mmu_helper.o GEN ppc64le-linux-user/config-target.h CC ppc64abi32-linux-user/tcg-runtime.o CC or1k-linux-user/target/openrisc/sys_helper.o CC ppc64le-linux-user/exec.o CC or1k-linux-user/target/openrisc/gdbstub.o GEN ppc64abi32-linux-user/gdbstub-xml.c CC ppc64le-linux-user/translate-all.o GEN trace/generated-helpers.c CC or1k-linux-user/trace/control-target.o CC or1k-linux-user/trace/generated-helpers.o CC ppc64le-linux-user/cpu-exec.o LINK or1k-linux-user/qemu-or1k CC ppc64abi32-linux-user/hax-stub.o CC ppc64le-linux-user/translate-common.o GEN trace/generated-helpers.c CC mipsn32-linux-user/trace/control-target.o CC ppc64abi32-linux-user/kvm-stub.o CC ppc64abi32-linux-user/libdecnumber/decContext.o CC ppc64le-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/libdecnumber/decNumber.o CC mipsn32-linux-user/trace/generated-helpers.o CC ppc64le-linux-user/tcg/tcg.o LINK mipsn32-linux-user/qemu-mipsn32 GEN ppc64-linux-user/config-target.h CC ppc64-linux-user/exec.o CC ppc64-linux-user/translate-all.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal32.o CC ppc64-linux-user/cpu-exec.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal64.o GEN ppc-linux-user/config-target.h CC ppc64-linux-user/translate-common.o CC ppc-linux-user/exec.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal128.o CC ppc-linux-user/translate-all.o CC ppc64le-linux-user/tcg/tcg-op.o CC ppc64-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/gdbstub.o CC ppc64-linux-user/tcg/tcg.o CC ppc-linux-user/cpu-exec.o CC ppc64abi32-linux-user/thunk.o CC ppc-linux-user/translate-common.o CC ppc64abi32-linux-user/user-exec.o CC ppc-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/user-exec-stub.o CC ppc-linux-user/tcg/tcg.o CC ppc64abi32-linux-user/linux-user/main.o CC ppc64abi32-linux-user/linux-user/syscall.o CC ppc64le-linux-user/tcg/optimize.o CC ppc64-linux-user/tcg/tcg-op.o CC ppc-linux-user/tcg/tcg-op.o CC ppc64le-linux-user/tcg/tcg-common.o CC ppc64le-linux-user/fpu/softfloat.o CC ppc64-linux-user/tcg/optimize.o CC ppc-linux-user/tcg/optimize.o CC ppc64abi32-linux-user/linux-user/strace.o CC ppc64-linux-user/tcg/tcg-common.o CC ppc64abi32-linux-user/linux-user/mmap.o CC ppc-linux-user/tcg/tcg-common.o CC ppc64le-linux-user/disas.o CC ppc64-linux-user/fpu/softfloat.o CC ppc-linux-user/fpu/softfloat.o CC ppc64abi32-linux-user/linux-user/signal.o CC ppc64le-linux-user/tcg-runtime.o CC ppc64abi32-linux-user/linux-user/elfload.o GEN ppc64le-linux-user/gdbstub-xml.c CC ppc64abi32-linux-user/linux-user/linuxload.o CC ppc64le-linux-user/hax-stub.o CC ppc64abi32-linux-user/linux-user/uaccess.o CC ppc64abi32-linux-user/linux-user/uname.o CC ppc64le-linux-user/kvm-stub.o CC ppc-linux-user/disas.o CCAS ppc64abi32-linux-user/linux-user/safe-syscall.o CC ppc64le-linux-user/libdecnumber/decContext.o CC ppc64abi32-linux-user/target/ppc/cpu-models.o CC ppc-linux-user/tcg-runtime.o CC ppc64-linux-user/disas.o CC ppc64le-linux-user/libdecnumber/decNumber.o CC ppc64-linux-user/tcg-runtime.o GEN ppc-linux-user/gdbstub-xml.c GEN ppc64-linux-user/gdbstub-xml.c CC ppc64abi32-linux-user/target/ppc/translate.o CC ppc-linux-user/hax-stub.o CC ppc64le-linux-user/libdecnumber/dpd/decimal32.o CC ppc-linux-user/kvm-stub.o CC ppc-linux-user/libdecnumber/decContext.o CC ppc-linux-user/libdecnumber/decNumber.o CC ppc64-linux-user/hax-stub.o CC ppc64le-linux-user/libdecnumber/dpd/decimal64.o CC ppc64-linux-user/kvm-stub.o CC ppc64le-linux-user/libdecnumber/dpd/decimal128.o CC ppc64-linux-user/libdecnumber/decContext.o CC ppc64le-linux-user/gdbstub.o CC ppc64-linux-user/libdecnumber/decNumber.o CC ppc-linux-user/libdecnumber/dpd/decimal32.o CC ppc-linux-user/libdecnumber/dpd/decimal64.o CC ppc64le-linux-user/thunk.o CC ppc-linux-user/libdecnumber/dpd/decimal128.o CC ppc64le-linux-user/user-exec.o CC ppc-linux-user/gdbstub.o CC ppc64-linux-user/libdecnumber/dpd/decimal32.o CC ppc64le-linux-user/user-exec-stub.o CC ppc64-linux-user/libdecnumber/dpd/decimal64.o CC ppc-linux-user/thunk.o CC ppc64le-linux-user/linux-user/main.o CC ppc-linux-user/user-exec.o CC ppc64-linux-user/libdecnumber/dpd/decimal128.o CC ppc-linux-user/user-exec-stub.o CC ppc64-linux-user/gdbstub.o CC ppc64le-linux-user/linux-user/syscall.o CC ppc-linux-user/linux-user/main.o CC ppc64-linux-user/thunk.o CC ppc-linux-user/linux-user/syscall.o CC ppc64-linux-user/user-exec.o CC ppc64-linux-user/user-exec-stub.o CC ppc64-linux-user/linux-user/main.o CC ppc64-linux-user/linux-user/syscall.o CC ppc64le-linux-user/linux-user/strace.o CC ppc64le-linux-user/linux-user/mmap.o CC ppc-linux-user/linux-user/strace.o CC ppc64le-linux-user/linux-user/signal.o CC ppc64-linux-user/linux-user/strace.o CC ppc-linux-user/linux-user/mmap.o CC ppc64le-linux-user/linux-user/elfload.o CC ppc-linux-user/linux-user/signal.o CC ppc64-linux-user/linux-user/mmap.o CC ppc64le-linux-user/linux-user/linuxload.o CC ppc64abi32-linux-user/target/ppc/kvm-stub.o CC ppc64-linux-user/linux-user/signal.o CC ppc64abi32-linux-user/target/ppc/dfp_helper.o CC ppc-linux-user/linux-user/elfload.o CC ppc64le-linux-user/linux-user/uaccess.o CC ppc64-linux-user/linux-user/elfload.o CC ppc64le-linux-user/linux-user/uname.o CCAS ppc64le-linux-user/linux-user/safe-syscall.o CC ppc64le-linux-user/target/ppc/cpu-models.o CC ppc64-linux-user/linux-user/linuxload.o CC ppc-linux-user/linux-user/linuxload.o CC ppc64abi32-linux-user/target/ppc/excp_helper.o CC ppc64-linux-user/linux-user/uaccess.o CC ppc-linux-user/linux-user/uaccess.o CC ppc64abi32-linux-user/target/ppc/fpu_helper.o CC ppc-linux-user/linux-user/uname.o CC ppc64-linux-user/linux-user/uname.o CCAS ppc-linux-user/linux-user/safe-syscall.o CCAS ppc64-linux-user/linux-user/safe-syscall.o CC ppc-linux-user/target/ppc/cpu-models.o CC ppc64-linux-user/target/ppc/cpu-models.o CC ppc64le-linux-user/target/ppc/translate.o CC ppc-linux-user/target/ppc/translate.o CC ppc64-linux-user/target/ppc/translate.o CC ppc64abi32-linux-user/target/ppc/int_helper.o CC ppc64abi32-linux-user/target/ppc/timebase_helper.o CC ppc64abi32-linux-user/target/ppc/misc_helper.o CC ppc64abi32-linux-user/target/ppc/mem_helper.o CC ppc64abi32-linux-user/target/ppc/user_only_helper.o CC ppc64abi32-linux-user/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC ppc64abi32-linux-user/trace/control-target.o CC ppc64abi32-linux-user/gdbstub-xml.o CC ppc64abi32-linux-user/trace/generated-helpers.o LINK ppc64abi32-linux-user/qemu-ppc64abi32 CC ppc-linux-user/target/ppc/kvm-stub.o CC ppc-linux-user/target/ppc/dfp_helper.o CC ppc64-linux-user/target/ppc/kvm-stub.o CC ppc64-linux-user/target/ppc/dfp_helper.o CC ppc64le-linux-user/target/ppc/kvm-stub.o CC ppc-linux-user/target/ppc/excp_helper.o CC ppc64le-linux-user/target/ppc/dfp_helper.o CC ppc-linux-user/target/ppc/fpu_helper.o CC ppc-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/target/ppc/excp_helper.o CC ppc64le-linux-user/target/ppc/fpu_helper.o CC ppc64-linux-user/target/ppc/excp_helper.o CC ppc-linux-user/target/ppc/timebase_helper.o CC ppc64-linux-user/target/ppc/fpu_helper.o CC ppc64le-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/target/ppc/timebase_helper.o CC ppc64le-linux-user/target/ppc/misc_helper.o CC ppc-linux-user/target/ppc/misc_helper.o CC ppc64le-linux-user/target/ppc/mem_helper.o CC ppc-linux-user/target/ppc/mem_helper.o CC ppc64le-linux-user/target/ppc/user_only_helper.o CC ppc64le-linux-user/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC ppc-linux-user/target/ppc/user_only_helper.o CC ppc64le-linux-user/trace/control-target.o CC ppc-linux-user/target/ppc/gdbstub.o CC ppc64-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/gdbstub-xml.o GEN trace/generated-helpers.c CC ppc-linux-user/trace/control-target.o CC ppc64le-linux-user/trace/generated-helpers.o CC ppc-linux-user/gdbstub-xml.o LINK ppc64le-linux-user/qemu-ppc64le CC ppc-linux-user/trace/generated-helpers.o CC s390x-linux-user/gen-features GEN s390x-linux-user/config-target.h GEN s390x-linux-user/gen-features.h CC s390x-linux-user/exec.o LINK ppc-linux-user/qemu-ppc CC ppc64-linux-user/target/ppc/timebase_helper.o CC s390x-linux-user/translate-all.o CC ppc64-linux-user/target/ppc/misc_helper.o CC ppc64-linux-user/target/ppc/mem_helper.o GEN sh4eb-linux-user/config-target.h CC s390x-linux-user/cpu-exec.o CC sh4eb-linux-user/exec.o CC ppc64-linux-user/target/ppc/user_only_helper.o GEN sh4-linux-user/config-target.h CC sh4-linux-user/exec.o CC ppc64-linux-user/target/ppc/gdbstub.o CC s390x-linux-user/translate-common.o CC sh4eb-linux-user/translate-all.o CC sh4-linux-user/translate-all.o CC s390x-linux-user/cpu-exec-common.o GEN trace/generated-helpers.c CC ppc64-linux-user/trace/control-target.o CC s390x-linux-user/tcg/tcg.o CC sh4eb-linux-user/cpu-exec.o CC ppc64-linux-user/gdbstub-xml.o CC sh4eb-linux-user/translate-common.o CC sh4-linux-user/cpu-exec.o CC sh4eb-linux-user/cpu-exec-common.o CC ppc64-linux-user/trace/generated-helpers.o CC sh4eb-linux-user/tcg/tcg.o CC sh4-linux-user/translate-common.o LINK ppc64-linux-user/qemu-ppc64 CC sh4-linux-user/cpu-exec-common.o CC s390x-linux-user/tcg/tcg-op.o CC sh4-linux-user/tcg/tcg.o CC s390x-linux-user/tcg/optimize.o CC s390x-linux-user/tcg/tcg-common.o CC sh4eb-linux-user/tcg/tcg-op.o CC s390x-linux-user/fpu/softfloat.o CC sh4-linux-user/tcg/tcg-op.o CC s390x-linux-user/disas.o CC s390x-linux-user/tcg-runtime.o GEN s390x-linux-user/gdbstub-xml.c CC sh4eb-linux-user/tcg/optimize.o CC sh4-linux-user/tcg/optimize.o CC s390x-linux-user/hax-stub.o CC s390x-linux-user/kvm-stub.o CC s390x-linux-user/gdbstub.o CC sh4eb-linux-user/tcg/tcg-common.o CC s390x-linux-user/thunk.o CC s390x-linux-user/user-exec.o CC sh4eb-linux-user/fpu/softfloat.o CC sh4-linux-user/tcg/tcg-common.o CC s390x-linux-user/user-exec-stub.o CC sh4-linux-user/fpu/softfloat.o CC s390x-linux-user/linux-user/main.o CC sh4-linux-user/disas.o CC sh4-linux-user/tcg-runtime.o CC s390x-linux-user/linux-user/syscall.o CC sh4-linux-user/hax-stub.o CC sh4-linux-user/kvm-stub.o CC sh4-linux-user/gdbstub.o CC sh4eb-linux-user/disas.o CC sh4-linux-user/thunk.o CC sh4eb-linux-user/tcg-runtime.o CC sh4-linux-user/user-exec.o CC sh4-linux-user/user-exec-stub.o CC s390x-linux-user/linux-user/strace.o CC sh4-linux-user/linux-user/main.o CC sh4eb-linux-user/hax-stub.o CC sh4eb-linux-user/kvm-stub.o CC sh4-linux-user/linux-user/syscall.o CC s390x-linux-user/linux-user/mmap.o CC s390x-linux-user/linux-user/signal.o CC sh4eb-linux-user/gdbstub.o CC sh4eb-linux-user/thunk.o CC s390x-linux-user/linux-user/elfload.o CC s390x-linux-user/linux-user/linuxload.o CC sh4eb-linux-user/user-exec.o CC sh4eb-linux-user/user-exec-stub.o GEN sparc32plus-linux-user/config-target.h CC sh4eb-linux-user/linux-user/main.o CC sparc32plus-linux-user/exec.o CC s390x-linux-user/linux-user/uaccess.o CC sh4eb-linux-user/linux-user/syscall.o CC sparc32plus-linux-user/translate-all.o CC s390x-linux-user/linux-user/uname.o CC sparc32plus-linux-user/cpu-exec.o CCAS s390x-linux-user/linux-user/safe-syscall.o CC s390x-linux-user/target/s390x/translate.o CC sparc32plus-linux-user/translate-common.o CC sparc32plus-linux-user/cpu-exec-common.o CC sparc32plus-linux-user/tcg/tcg.o CC sh4-linux-user/linux-user/strace.o CC sh4-linux-user/linux-user/mmap.o CC sparc32plus-linux-user/tcg/tcg-op.o CC s390x-linux-user/target/s390x/helper.o CC sh4-linux-user/linux-user/signal.o CC s390x-linux-user/target/s390x/cpu.o CC s390x-linux-user/target/s390x/interrupt.o CC sh4eb-linux-user/linux-user/strace.o CC sh4-linux-user/linux-user/elfload.o CC s390x-linux-user/target/s390x/int_helper.o CC s390x-linux-user/target/s390x/fpu_helper.o CC sh4-linux-user/linux-user/linuxload.o CC sh4eb-linux-user/linux-user/mmap.o CC sh4-linux-user/linux-user/uaccess.o CC s390x-linux-user/target/s390x/cc_helper.o CC sh4-linux-user/linux-user/uname.o CC sh4eb-linux-user/linux-user/signal.o CC s390x-linux-user/target/s390x/mem_helper.o CC sparc32plus-linux-user/tcg/optimize.o CCAS sh4-linux-user/linux-user/safe-syscall.o CC sh4-linux-user/linux-user/flatload.o CC sh4eb-linux-user/linux-user/elfload.o CC s390x-linux-user/target/s390x/misc_helper.o CC sh4-linux-user/target/sh4/translate.o CC sparc32plus-linux-user/tcg/tcg-common.o CC s390x-linux-user/target/s390x/gdbstub.o CC sparc32plus-linux-user/fpu/softfloat.o CC sh4eb-linux-user/linux-user/linuxload.o CC s390x-linux-user/target/s390x/cpu_models.o CC sh4eb-linux-user/linux-user/uaccess.o CC s390x-linux-user/target/s390x/cpu_features.o CC sh4eb-linux-user/linux-user/uname.o GEN trace/generated-helpers.c CC s390x-linux-user/trace/control-target.o CCAS sh4eb-linux-user/linux-user/safe-syscall.o CC s390x-linux-user/gdbstub-xml.o CC sh4eb-linux-user/linux-user/flatload.o CC s390x-linux-user/trace/generated-helpers.o CC sh4-linux-user/target/sh4/op_helper.o CC sh4eb-linux-user/target/sh4/translate.o LINK s390x-linux-user/qemu-s390x CC sh4-linux-user/target/sh4/helper.o CC sparc32plus-linux-user/disas.o CC sh4-linux-user/target/sh4/cpu.o CC sh4-linux-user/target/sh4/gdbstub.o GEN sparc64-linux-user/config-target.h CC sparc32plus-linux-user/tcg-runtime.o GEN trace/generated-helpers.c CC sparc64-linux-user/exec.o CC sh4-linux-user/trace/control-target.o CC sparc64-linux-user/translate-all.o CC sh4-linux-user/trace/generated-helpers.o CC sparc32plus-linux-user/hax-stub.o CC sparc64-linux-user/cpu-exec.o LINK sh4-linux-user/qemu-sh4 CC sparc32plus-linux-user/kvm-stub.o CC sh4eb-linux-user/target/sh4/op_helper.o CC sparc32plus-linux-user/gdbstub.o CC sh4eb-linux-user/target/sh4/helper.o CC sparc64-linux-user/translate-common.o CC sh4eb-linux-user/target/sh4/cpu.o CC sh4eb-linux-user/target/sh4/gdbstub.o CC sparc64-linux-user/cpu-exec-common.o GEN sparc-linux-user/config-target.h CC sparc-linux-user/exec.o GEN trace/generated-helpers.c CC sparc32plus-linux-user/thunk.o CC sh4eb-linux-user/trace/control-target.o CC sparc64-linux-user/tcg/tcg.o CC sparc32plus-linux-user/user-exec.o CC sh4eb-linux-user/trace/generated-helpers.o CC sparc-linux-user/translate-all.o LINK sh4eb-linux-user/qemu-sh4eb CC sparc32plus-linux-user/user-exec-stub.o CC sparc-linux-user/cpu-exec.o CC sparc32plus-linux-user/linux-user/main.o GEN tilegx-linux-user/config-target.h CC tilegx-linux-user/exec.o CC sparc-linux-user/translate-common.o CC sparc-linux-user/cpu-exec-common.o CC tilegx-linux-user/translate-all.o CC sparc32plus-linux-user/linux-user/syscall.o CC sparc64-linux-user/tcg/tcg-op.o CC sparc-linux-user/tcg/tcg.o CC tilegx-linux-user/cpu-exec.o CC tilegx-linux-user/translate-common.o CC tilegx-linux-user/cpu-exec-common.o CC tilegx-linux-user/tcg/tcg.o CC sparc64-linux-user/tcg/optimize.o CC sparc-linux-user/tcg/tcg-op.o CC sparc64-linux-user/tcg/tcg-common.o CC sparc64-linux-user/fpu/softfloat.o CC tilegx-linux-user/tcg/tcg-op.o CC sparc32plus-linux-user/linux-user/strace.o CC sparc32plus-linux-user/linux-user/mmap.o CC sparc-linux-user/tcg/optimize.o CC sparc32plus-linux-user/linux-user/signal.o CC sparc-linux-user/tcg/tcg-common.o CC sparc32plus-linux-user/linux-user/elfload.o CC sparc-linux-user/fpu/softfloat.o CC tilegx-linux-user/tcg/optimize.o CC sparc32plus-linux-user/linux-user/linuxload.o CC sparc64-linux-user/disas.o CC sparc32plus-linux-user/linux-user/uaccess.o CC tilegx-linux-user/tcg/tcg-common.o CC sparc32plus-linux-user/linux-user/uname.o CC sparc64-linux-user/tcg-runtime.o CC tilegx-linux-user/fpu/softfloat.o CCAS sparc32plus-linux-user/linux-user/safe-syscall.o CC sparc32plus-linux-user/target/sparc/translate.o CC sparc64-linux-user/hax-stub.o CC sparc64-linux-user/kvm-stub.o CC sparc64-linux-user/gdbstub.o CC sparc-linux-user/disas.o CC sparc-linux-user/tcg-runtime.o CC sparc64-linux-user/thunk.o CC tilegx-linux-user/disas.o CC sparc64-linux-user/user-exec.o CC tilegx-linux-user/tcg-runtime.o CC sparc-linux-user/hax-stub.o CC sparc32plus-linux-user/target/sparc/helper.o CC sparc64-linux-user/user-exec-stub.o CC sparc32plus-linux-user/target/sparc/cpu.o CC sparc-linux-user/kvm-stub.o CC tilegx-linux-user/hax-stub.o CC sparc-linux-user/gdbstub.o CC sparc64-linux-user/linux-user/main.o CC tilegx-linux-user/kvm-stub.o CC sparc32plus-linux-user/target/sparc/fop_helper.o CC sparc64-linux-user/linux-user/syscall.o CC sparc-linux-user/thunk.o CC tilegx-linux-user/gdbstub.o CC sparc32plus-linux-user/target/sparc/cc_helper.o CC sparc-linux-user/user-exec.o CC sparc32plus-linux-user/target/sparc/win_helper.o CC sparc-linux-user/user-exec-stub.o CC tilegx-linux-user/thunk.o CC sparc-linux-user/linux-user/main.o CC sparc32plus-linux-user/target/sparc/mmu_helper.o CC sparc-linux-user/linux-user/syscall.o CC tilegx-linux-user/user-exec.o CC sparc32plus-linux-user/target/sparc/ldst_helper.o CC tilegx-linux-user/user-exec-stub.o CC sparc32plus-linux-user/target/sparc/int64_helper.o CC tilegx-linux-user/linux-user/main.o CC sparc32plus-linux-user/target/sparc/vis_helper.o CC tilegx-linux-user/linux-user/syscall.o CC sparc32plus-linux-user/target/sparc/gdbstub.o GEN trace/generated-helpers.c CC sparc32plus-linux-user/trace/control-target.o CC sparc64-linux-user/linux-user/strace.o CC sparc32plus-linux-user/trace/generated-helpers.o CC sparc64-linux-user/linux-user/mmap.o LINK sparc32plus-linux-user/qemu-sparc32plus CC sparc64-linux-user/linux-user/signal.o CC tilegx-linux-user/linux-user/strace.o CC sparc-linux-user/linux-user/strace.o CC sparc64-linux-user/linux-user/elfload.o CC sparc-linux-user/linux-user/mmap.o CC tilegx-linux-user/linux-user/mmap.o CC sparc-linux-user/linux-user/signal.o CC sparc64-linux-user/linux-user/linuxload.o CC sparc-linux-user/linux-user/elfload.o CC sparc64-linux-user/linux-user/uaccess.o CC tilegx-linux-user/linux-user/signal.o CC sparc-linux-user/linux-user/linuxload.o CC sparc64-linux-user/linux-user/uname.o CC tilegx-linux-user/linux-user/elfload.o CC sparc-linux-user/linux-user/uaccess.o CCAS sparc64-linux-user/linux-user/safe-syscall.o CC sparc-linux-user/linux-user/uname.o CC sparc64-linux-user/target/sparc/translate.o CC tilegx-linux-user/linux-user/linuxload.o CCAS sparc-linux-user/linux-user/safe-syscall.o CC tilegx-linux-user/linux-user/uaccess.o CC sparc-linux-user/target/sparc/translate.o CC sparc-linux-user/target/sparc/helper.o CC tilegx-linux-user/linux-user/uname.o CCAS tilegx-linux-user/linux-user/safe-syscall.o CC tilegx-linux-user/target/tilegx/cpu.o CC sparc-linux-user/target/sparc/cpu.o CC tilegx-linux-user/target/tilegx/translate.o CC tilegx-linux-user/target/tilegx/helper.o CC sparc-linux-user/target/sparc/fop_helper.o CC sparc-linux-user/target/sparc/cc_helper.o CC sparc64-linux-user/target/sparc/helper.o CC tilegx-linux-user/target/tilegx/simd_helper.o CC sparc-linux-user/target/sparc/win_helper.o CC sparc-linux-user/target/sparc/mmu_helper.o CC sparc64-linux-user/target/sparc/cpu.o GEN trace/generated-helpers.c CC tilegx-linux-user/trace/control-target.o CC sparc-linux-user/target/sparc/ldst_helper.o CC sparc64-linux-user/target/sparc/fop_helper.o CC tilegx-linux-user/trace/generated-helpers.o GEN x86_64-linux-user/config-target.h CC x86_64-linux-user/exec.o CC sparc-linux-user/target/sparc/int32_helper.o CC sparc64-linux-user/target/sparc/cc_helper.o LINK tilegx-linux-user/qemu-tilegx CC sparc-linux-user/target/sparc/gdbstub.o CC x86_64-linux-user/translate-all.o CC sparc64-linux-user/target/sparc/win_helper.o GEN trace/generated-helpers.c CC sparc-linux-user/trace/control-target.o CC x86_64-linux-user/cpu-exec.o CC sparc64-linux-user/target/sparc/mmu_helper.o CC sparc-linux-user/trace/generated-helpers.o CC x86_64-linux-user/translate-common.o CC sparc64-linux-user/target/sparc/ldst_helper.o CC x86_64-linux-user/cpu-exec-common.o LINK sparc-linux-user/qemu-sparc CC sparc64-linux-user/target/sparc/int64_helper.o CC sparc64-linux-user/target/sparc/vis_helper.o CC x86_64-linux-user/tcg/tcg.o CC sparc64-linux-user/target/sparc/gdbstub.o CC x86_64-linux-user/tcg/tcg-op.o CC x86_64-linux-user/tcg/optimize.o GEN trace/generated-helpers.c CC sparc64-linux-user/trace/control-target.o CC sparc64-linux-user/trace/generated-helpers.o CC x86_64-linux-user/tcg/tcg-common.o LINK sparc64-linux-user/qemu-sparc64 CC x86_64-linux-user/fpu/softfloat.o CC x86_64-linux-user/disas.o CC x86_64-linux-user/tcg-runtime.o CC x86_64-linux-user/hax-stub.o CC x86_64-linux-user/kvm-stub.o CC x86_64-linux-user/gdbstub.o CC x86_64-linux-user/thunk.o CC x86_64-linux-user/user-exec.o CC x86_64-linux-user/user-exec-stub.o CC x86_64-linux-user/linux-user/main.o CC x86_64-linux-user/linux-user/syscall.o CC x86_64-linux-user/linux-user/strace.o CC x86_64-linux-user/linux-user/mmap.o CC x86_64-linux-user/linux-user/signal.o CC x86_64-linux-user/linux-user/elfload.o CC x86_64-linux-user/linux-user/linuxload.o CC x86_64-linux-user/linux-user/uaccess.o CC x86_64-linux-user/linux-user/uname.o CCAS x86_64-linux-user/linux-user/safe-syscall.o CC x86_64-linux-user/target/i386/translate.o CC x86_64-linux-user/target/i386/helper.o CC x86_64-linux-user/target/i386/cpu.o CC x86_64-linux-user/target/i386/bpt_helper.o CC x86_64-linux-user/target/i386/excp_helper.o CC x86_64-linux-user/target/i386/fpu_helper.o CC x86_64-linux-user/target/i386/cc_helper.o CC x86_64-linux-user/target/i386/int_helper.o CC x86_64-linux-user/target/i386/svm_helper.o CC x86_64-linux-user/target/i386/smm_helper.o CC x86_64-linux-user/target/i386/misc_helper.o CC x86_64-linux-user/target/i386/mem_helper.o CC x86_64-linux-user/target/i386/seg_helper.o CC x86_64-linux-user/target/i386/mpx_helper.o CC x86_64-linux-user/target/i386/gdbstub.o CC x86_64-linux-user/target/i386/kvm-stub.o GEN trace/generated-helpers.c CC x86_64-linux-user/trace/control-target.o CC x86_64-linux-user/trace/generated-helpers.o LINK x86_64-linux-user/qemu-x86_64 TEST tests/qapi-schema/alternate-array.out TEST tests/qapi-schema/alternate-clash.out TEST tests/qapi-schema/alternate-base.out TEST tests/qapi-schema/alternate-any.out TEST tests/qapi-schema/alternate-conflict-dict.out TEST tests/qapi-schema/alternate-empty.out TEST tests/qapi-schema/alternate-nested.out TEST tests/qapi-schema/alternate-conflict-string.out TEST tests/qapi-schema/alternate-unknown.out TEST tests/qapi-schema/args-alternate.out TEST tests/qapi-schema/args-any.out TEST tests/qapi-schema/args-array-empty.out TEST tests/qapi-schema/args-array-unknown.out TEST tests/qapi-schema/args-bad-boxed.out TEST tests/qapi-schema/args-boxed-anon.out TEST tests/qapi-schema/args-boxed-empty.out TEST tests/qapi-schema/args-boxed-string.out TEST tests/qapi-schema/args-int.out TEST tests/qapi-schema/args-invalid.out TEST tests/qapi-schema/args-member-array-bad.out TEST tests/qapi-schema/args-member-case.out TEST tests/qapi-schema/args-member-unknown.out TEST tests/qapi-schema/args-union.out TEST tests/qapi-schema/args-name-clash.out TEST tests/qapi-schema/args-unknown.out TEST tests/qapi-schema/bad-base.out TEST tests/qapi-schema/bad-data.out TEST tests/qapi-schema/bad-ident.out TEST tests/qapi-schema/bad-type-bool.out TEST tests/qapi-schema/bad-type-dict.out TEST tests/qapi-schema/bad-type-int.out TEST tests/qapi-schema/base-cycle-direct.out TEST tests/qapi-schema/base-cycle-indirect.out TEST tests/qapi-schema/command-int.out TEST tests/qapi-schema/doc-bad-args.out TEST tests/qapi-schema/comments.out TEST tests/qapi-schema/doc-bad-symbol.out TEST tests/qapi-schema/doc-duplicated-arg.out TEST tests/qapi-schema/doc-duplicated-return.out TEST tests/qapi-schema/doc-duplicated-since.out TEST tests/qapi-schema/doc-empty-arg.out TEST tests/qapi-schema/doc-empty-section.out TEST tests/qapi-schema/doc-empty-symbol.out TEST tests/qapi-schema/doc-interleaved-section.out TEST tests/qapi-schema/doc-invalid-end.out TEST tests/qapi-schema/doc-invalid-end2.out TEST tests/qapi-schema/doc-invalid-return.out TEST tests/qapi-schema/doc-invalid-section.out TEST tests/qapi-schema/doc-invalid-start.out TEST tests/qapi-schema/doc-missing-colon.out TEST tests/qapi-schema/doc-missing-expr.out TEST tests/qapi-schema/doc-missing-space.out TEST tests/qapi-schema/doc-optional.out TEST tests/qapi-schema/double-data.out TEST tests/qapi-schema/double-type.out TEST tests/qapi-schema/duplicate-key.out TEST tests/qapi-schema/empty.out TEST tests/qapi-schema/enum-bad-name.out TEST tests/qapi-schema/enum-bad-prefix.out TEST tests/qapi-schema/enum-clash-member.out TEST tests/qapi-schema/enum-dict-member.out TEST tests/qapi-schema/enum-int-member.out TEST tests/qapi-schema/enum-member-case.out TEST tests/qapi-schema/enum-missing-data.out TEST tests/qapi-schema/enum-wrong-data.out TEST tests/qapi-schema/escape-outside-string.out TEST tests/qapi-schema/escape-too-big.out TEST tests/qapi-schema/escape-too-short.out TEST tests/qapi-schema/event-boxed-empty.out TEST tests/qapi-schema/event-case.out TEST tests/qapi-schema/event-nest-struct.out TEST tests/qapi-schema/flat-union-array-branch.out TEST tests/qapi-schema/flat-union-bad-base.out TEST tests/qapi-schema/flat-union-bad-discriminator.out TEST tests/qapi-schema/flat-union-base-any.out TEST tests/qapi-schema/flat-union-base-union.out TEST tests/qapi-schema/flat-union-clash-member.out TEST tests/qapi-schema/flat-union-empty.out TEST tests/qapi-schema/flat-union-incomplete-branch.out TEST tests/qapi-schema/flat-union-inline.out TEST tests/qapi-schema/flat-union-int-branch.out TEST tests/qapi-schema/flat-union-invalid-branch-key.out TEST tests/qapi-schema/flat-union-invalid-discriminator.out TEST tests/qapi-schema/flat-union-no-base.out TEST tests/qapi-schema/flat-union-optional-discriminator.out TEST tests/qapi-schema/flat-union-string-discriminator.out TEST tests/qapi-schema/funny-char.out TEST tests/qapi-schema/ident-with-escape.out TEST tests/qapi-schema/include-before-err.out TEST tests/qapi-schema/include-cycle.out TEST tests/qapi-schema/include-format-err.out TEST tests/qapi-schema/include-nested-err.out TEST tests/qapi-schema/include-no-file.out TEST tests/qapi-schema/include-non-file.out TEST tests/qapi-schema/include-relpath.out TEST tests/qapi-schema/include-repetition.out TEST tests/qapi-schema/include-self-cycle.out TEST tests/qapi-schema/include-simple.out TEST tests/qapi-schema/indented-expr.out TEST tests/qapi-schema/leading-comma-list.out TEST tests/qapi-schema/leading-comma-object.out TEST tests/qapi-schema/missing-colon.out TEST tests/qapi-schema/missing-comma-list.out TEST tests/qapi-schema/missing-comma-object.out TEST tests/qapi-schema/missing-type.out TEST tests/qapi-schema/non-objects.out TEST tests/qapi-schema/nested-struct-data.out TEST tests/qapi-schema/qapi-schema-test.out TEST tests/qapi-schema/quoted-structural-chars.out TEST tests/qapi-schema/redefined-builtin.out TEST tests/qapi-schema/redefined-command.out TEST tests/qapi-schema/redefined-event.out TEST tests/qapi-schema/redefined-type.out TEST tests/qapi-schema/reserved-command-q.out TEST tests/qapi-schema/reserved-enum-q.out TEST tests/qapi-schema/reserved-member-has.out TEST tests/qapi-schema/reserved-member-q.out TEST tests/qapi-schema/reserved-member-u.out TEST tests/qapi-schema/reserved-member-underscore.out TEST tests/qapi-schema/reserved-type-kind.out TEST tests/qapi-schema/reserved-type-list.out TEST tests/qapi-schema/returns-alternate.out TEST tests/qapi-schema/returns-array-bad.out TEST tests/qapi-schema/returns-dict.out TEST tests/qapi-schema/returns-unknown.out TEST tests/qapi-schema/returns-whitelist.out TEST tests/qapi-schema/struct-base-clash-deep.out TEST tests/qapi-schema/struct-base-clash.out TEST tests/qapi-schema/struct-data-invalid.out TEST tests/qapi-schema/struct-member-invalid.out TEST tests/qapi-schema/trailing-comma-list.out TEST tests/qapi-schema/trailing-comma-object.out TEST tests/qapi-schema/type-bypass-bad-gen.out TEST tests/qapi-schema/unclosed-list.out TEST tests/qapi-schema/unclosed-object.out TEST tests/qapi-schema/unclosed-string.out TEST tests/qapi-schema/unicode-str.out TEST tests/qapi-schema/union-base-no-discriminator.out TEST tests/qapi-schema/union-branch-case.out TEST tests/qapi-schema/union-clash-branches.out TEST tests/qapi-schema/union-empty.out TEST tests/qapi-schema/union-invalid-base.out TEST tests/qapi-schema/union-optional-branch.out TEST tests/qapi-schema/union-unknown.out TEST tests/qapi-schema/unknown-escape.out CC tests/check-qdict.o TEST tests/qapi-schema/unknown-expr-key.out CC tests/test-char.o CC tests/check-qfloat.o CC tests/check-qint.o CC tests/check-qstring.o CC tests/check-qlist.o CC tests/check-qnull.o CC tests/check-qjson.o CC tests/test-qobject-output-visitor.o GEN tests/test-qapi-visit.c GEN tests/test-qapi-types.c GEN tests/test-qapi-event.c GEN tests/test-qmp-introspect.c CC tests/test-clone-visitor.o CC tests/test-qobject-input-visitor.o CC tests/test-qobject-input-strict.o CC tests/test-qmp-commands.o GEN tests/test-qmp-marshal.c CC tests/test-string-input-visitor.o CC tests/test-string-output-visitor.o CC tests/test-qmp-event.o CC tests/test-opts-visitor.o CC tests/test-coroutine.o CC tests/iothread.o CC tests/test-visitor-serialization.o CC tests/test-iov.o CC tests/test-aio.o CC tests/test-aio-multithread.o CC tests/test-throttle.o CC tests/test-thread-pool.o CC tests/test-hbitmap.o CC tests/test-blockjob.o CC tests/test-blockjob-txn.o CC tests/test-x86-cpuid.o CC tests/test-xbzrle.o CC tests/test-vmstate.o CC tests/test-cutils.o CC tests/test-shift128.o CC tests/test-mul64.o CC tests/test-int128.o CC tests/rcutorture.o CC tests/test-rcu-list.o CC tests/test-qdist.o CC tests/test-qht.o CC tests/test-qht-par.o CC tests/qht-bench.o CC tests/test-bitops.o CC tests/test-bitcnt.o CC tests/test-qdev-global-props.o CC tests/check-qom-interface.o CC tests/check-qom-proplist.o CC tests/test-qemu-opts.o CC tests/test-write-threshold.o CC tests/test-crypto-hmac.o CC tests/test-crypto-hash.o CC tests/test-crypto-cipher.o CC tests/test-crypto-secret.o CC tests/test-crypto-tlscredsx509.o CC tests/crypto-tls-x509-helpers.o CC tests/pkix_asn1_tab.o CC tests/test-crypto-tlssession.o CC tests/test-qga.o CC tests/libqtest.o CC tests/test-timed-average.o CC tests/test-io-task.o CC tests/test-io-channel-socket.o CC tests/io-channel-helpers.o CC tests/test-io-channel-file.o CC tests/test-io-channel-tls.o CC tests/test-io-channel-command.o CC tests/test-io-channel-buffer.o CC tests/test-base64.o CC tests/test-crypto-pbkdf.o CC tests/test-crypto-ivgen.o CC tests/test-crypto-afsplit.o CC tests/test-crypto-xts.o CC tests/test-crypto-block.o CC tests/test-logging.o CC tests/test-replication.o CC tests/test-bufferiszero.o CC tests/test-uuid.o CC tests/ptimer-test.o CC tests/ptimer-test-stubs.o CC tests/boot-serial-test.o CC tests/libqos/pci.o CC tests/libqos/fw_cfg.o CC tests/libqos/malloc.o CC tests/libqos/i2c.o CC tests/libqos/libqos.o CC tests/tmp105-test.o CC tests/libqos/i2c-omap.o CC tests/ds1338-test.o CC tests/libqos/i2c-imx.o CC tests/m25p80-test.o CC tests/virtio-blk-test.o CC tests/libqos/malloc-spapr.o CC tests/libqos/libqos-spapr.o CC tests/libqos/rtas.o CC tests/libqos/pci-spapr.o CC tests/libqos/malloc-pc.o CC tests/libqos/pci-pc.o CC tests/libqos/libqos-pc.o CC tests/libqos/ahci.o CC tests/libqos/virtio.o CC tests/libqos/virtio-mmio.o CC tests/libqos/virtio-pci.o CC tests/libqos/malloc-generic.o CC tests/test-arm-mptimer.o CC tests/endianness-test.o CC tests/fdc-test.o CC tests/ide-test.o CC tests/ahci-test.o CC tests/boot-order-test.o CC tests/hd-geo-test.o CC tests/bios-tables-test.o CC tests/boot-sector.o CC tests/pxe-test.o CC tests/rtc-test.o CC tests/ipmi-kcs-test.o CC tests/ipmi-bt-test.o CC tests/i440fx-test.o CC tests/fw_cfg-test.o CC tests/drive_del-test.o CC tests/wdt_ib700-test.o CC tests/tco-test.o CC tests/e1000-test.o CC tests/e1000e-test.o CC tests/rtl8139-test.o CC tests/pcnet-test.o CC tests/eepro100-test.o CC tests/ne2000-test.o CC tests/nvme-test.o CC tests/ac97-test.o CC tests/es1370-test.o CC tests/virtio-net-test.o CC tests/virtio-balloon-test.o CC tests/virtio-rng-test.o CC tests/virtio-scsi-test.o CC tests/virtio-9p-test.o CC tests/virtio-console-test.o CC tests/virtio-serial-test.o CC tests/tpci200-test.o CC tests/ipoctal232-test.o CC tests/display-vga-test.o CC tests/intel-hda-test.o CC tests/ivshmem-test.o CC tests/vmxnet3-test.o CC tests/i82801b11-test.o CC tests/pvpanic-test.o CC tests/ioh3420-test.o CC tests/usb-hcd-ohci-test.o CC tests/libqos/usb.o CC tests/usb-hcd-uhci-test.o CC tests/usb-hcd-ehci-test.o CC tests/usb-hcd-xhci-test.o CC tests/pc-cpu-test.o CC tests/test-netfilter.o CC tests/q35-test.o CC tests/test-filter-mirror.o CC tests/test-filter-redirector.o CC tests/postcopy-test.o CC tests/test-x86-cpuid-compat.o CC tests/spapr-phb-test.o CC tests/prom-env-test.o CC tests/pnv-xscom-test.o CC tests/rtas-test.o CC tests/device-introspect-test.o CC tests/qom-test.o LINK tests/check-qdict LINK tests/test-char LINK tests/check-qfloat LINK tests/check-qint LINK tests/check-qstring LINK tests/check-qlist LINK tests/check-qnull LINK tests/check-qjson CC tests/test-qapi-visit.o CC tests/test-qapi-types.o CC tests/test-qapi-event.o CC tests/test-qmp-introspect.o CC tests/test-qmp-marshal.o LINK tests/test-coroutine LINK tests/test-iov LINK tests/test-aio LINK tests/test-aio-multithread LINK tests/test-throttle LINK tests/test-thread-pool LINK tests/test-hbitmap LINK tests/test-blockjob LINK tests/test-x86-cpuid LINK tests/test-blockjob-txn LINK tests/test-xbzrle LINK tests/test-vmstate LINK tests/test-cutils LINK tests/test-shift128 LINK tests/test-int128 LINK tests/test-mul64 LINK tests/rcutorture LINK tests/test-rcu-list LINK tests/test-qdist LINK tests/test-qht LINK tests/qht-bench LINK tests/test-bitops LINK tests/test-bitcnt LINK tests/test-qdev-global-props LINK tests/check-qom-interface LINK tests/check-qom-proplist LINK tests/test-qemu-opts LINK tests/test-write-threshold LINK tests/test-crypto-hash LINK tests/test-crypto-hmac LINK tests/test-crypto-cipher LINK tests/test-crypto-secret LINK tests/test-crypto-tlscredsx509 LINK tests/test-crypto-tlssession LINK tests/test-qga LINK tests/test-timed-average LINK tests/test-io-task LINK tests/test-io-channel-socket LINK tests/test-io-channel-file LINK tests/test-io-channel-tls LINK tests/test-io-channel-command LINK tests/test-io-channel-buffer LINK tests/test-base64 LINK tests/test-crypto-pbkdf LINK tests/test-crypto-ivgen LINK tests/test-crypto-afsplit LINK tests/test-crypto-xts LINK tests/test-crypto-block LINK tests/test-logging LINK tests/test-replication LINK tests/test-bufferiszero LINK tests/test-uuid LINK tests/ptimer-test LINK tests/boot-serial-test LINK tests/tmp105-test LINK tests/ds1338-test LINK tests/m25p80-test LINK tests/virtio-blk-test LINK tests/test-arm-mptimer LINK tests/endianness-test LINK tests/fdc-test LINK tests/ide-test LINK tests/ahci-test LINK tests/hd-geo-test LINK tests/boot-order-test LINK tests/bios-tables-test LINK tests/pxe-test LINK tests/rtc-test LINK tests/ipmi-kcs-test LINK tests/ipmi-bt-test LINK tests/i440fx-test LINK tests/fw_cfg-test LINK tests/drive_del-test LINK tests/wdt_ib700-test LINK tests/tco-test LINK tests/e1000-test LINK tests/e1000e-test LINK tests/rtl8139-test LINK tests/pcnet-test LINK tests/eepro100-test LINK tests/ne2000-test LINK tests/nvme-test LINK tests/ac97-test LINK tests/es1370-test LINK tests/virtio-net-test LINK tests/virtio-balloon-test LINK tests/virtio-rng-test LINK tests/virtio-scsi-test LINK tests/virtio-9p-test LINK tests/virtio-serial-test LINK tests/virtio-console-test LINK tests/tpci200-test LINK tests/display-vga-test LINK tests/ipoctal232-test LINK tests/ivshmem-test LINK tests/intel-hda-test LINK tests/vmxnet3-test LINK tests/pvpanic-test LINK tests/i82801b11-test LINK tests/ioh3420-test LINK tests/usb-hcd-ohci-test LINK tests/usb-hcd-ehci-test LINK tests/usb-hcd-uhci-test LINK tests/usb-hcd-xhci-test LINK tests/pc-cpu-test LINK tests/q35-test LINK tests/test-netfilter LINK tests/test-filter-mirror LINK tests/test-filter-redirector LINK tests/postcopy-test LINK tests/test-x86-cpuid-compat LINK tests/spapr-phb-test LINK tests/prom-env-test LINK tests/pnv-xscom-test LINK tests/rtas-test LINK tests/qom-test LINK tests/device-introspect-test GTESTER tests/test-char GTESTER tests/check-qdict GTESTER tests/check-qfloat GTESTER tests/check-qint GTESTER tests/check-qstring GTESTER tests/check-qlist GTESTER tests/check-qnull GTESTER tests/check-qjson LINK tests/test-qobject-output-visitor LINK tests/test-qobject-input-visitor LINK tests/test-clone-visitor LINK tests/test-qobject-input-strict LINK tests/test-qmp-commands LINK tests/test-string-input-visitor LINK tests/test-string-output-visitor LINK tests/test-qmp-event LINK tests/test-opts-visitor GTESTER tests/test-coroutine LINK tests/test-visitor-serialization GTESTER tests/test-iov GTESTER tests/test-aio GTESTER tests/test-aio-multithread GTESTER tests/test-throttle GTESTER tests/test-thread-pool GTESTER tests/test-hbitmap GTESTER tests/test-blockjob GTESTER tests/test-blockjob-txn GTESTER tests/test-x86-cpuid GTESTER tests/test-xbzrle GTESTER tests/test-vmstate GTESTER tests/test-cutils GTESTER tests/test-shift128 GTESTER tests/test-mul64 GTESTER tests/test-int128 GTESTER tests/rcutorture GTESTER tests/test-rcu-list GTESTER tests/test-qdist GTESTER tests/test-qht LINK tests/test-qht-par GTESTER tests/test-bitops GTESTER tests/test-bitcnt GTESTER tests/test-qdev-global-props GTESTER tests/check-qom-interface GTESTER tests/check-qom-proplist GTESTER tests/test-qemu-opts GTESTER tests/test-write-threshold GTESTER tests/test-crypto-hash GTESTER tests/test-crypto-hmac GTESTER tests/test-crypto-cipher GTESTER tests/test-crypto-secret GTESTER tests/test-crypto-tlscredsx509 GTESTER tests/test-crypto-tlssession GTESTER tests/test-qga GTESTER tests/test-timed-average GTESTER tests/test-io-task GTESTER tests/test-io-channel-socket GTESTER tests/test-io-channel-file GTESTER tests/test-io-channel-tls GTESTER tests/test-io-channel-command GTESTER tests/test-io-channel-buffer GTESTER tests/test-base64 GTESTER tests/test-crypto-pbkdf GTESTER tests/test-crypto-ivgen GTESTER tests/test-crypto-afsplit GTESTER tests/test-crypto-xts GTESTER tests/test-crypto-block GTESTER tests/test-logging GTESTER tests/test-replication GTESTER tests/test-bufferiszero GTESTER tests/test-uuid GTESTER tests/ptimer-test GTESTER check-qtest-aarch64 GTESTER check-qtest-alpha GTESTER check-qtest-arm GTESTER check-qtest-cris GTESTER check-qtest-i386 GTESTER check-qtest-lm32 GTESTER check-qtest-m68k GTESTER check-qtest-microblazeel GTESTER check-qtest-microblaze GTESTER check-qtest-mips64el GTESTER check-qtest-mips64 GTESTER check-qtest-mipsel GTESTER check-qtest-mips GTESTER check-qtest-moxie GTESTER check-qtest-nios2 GTESTER check-qtest-or1k GTESTER check-qtest-ppc64 GTESTER check-qtest-ppcemb "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. GTESTER check-qtest-ppc GTESTER check-qtest-s390x Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml GTester: last random seed: R02S67b79687214a158c46bc466678067fdb "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. /var/tmp/patchew-tester-tmp-_t3ms3un/src/tests/Makefile.include:793: recipe for target 'check-qtest-s390x' failed make: *** [check-qtest-s390x] Error 1 make: *** Waiting for unfinished jobs.... Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml Warning! iasl couldn't parse the expected aml "kvm" accelerator not found. "kvm" accelerator not found. === OUTPUT END === Test command exited with code: 2 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2017-02-27 18:04 Peter Maydell 2017-02-27 19:14 ` no-reply @ 2017-02-28 12:07 ` Peter Maydell 1 sibling, 0 replies; 45+ messages in thread From: Peter Maydell @ 2017-02-28 12:07 UTC (permalink / raw) To: QEMU Developers On 27 February 2017 at 18:04, Peter Maydell <peter.maydell@linaro.org> wrote: > ARM queu; includes all the NVIC rewrite patches. > The QOMify-armv7m patchset hasn't got enough review just > yet but I may be able to sneak it in before freeze > tomorrow if it gets review. Didn't want to hold this lot > up waiting, anyway. > > thanks > -- PMM > > > The following changes since commit 8f2d7c341184a95d05476ea3c45dbae2b9ddbe51: > > Merge remote-tracking branch 'remotes/berrange/tags/pull-qcrypto-2017-02-27-1' into staging (2017-02-27 15:33:21 +0000) > > are available in the git repository at: > > git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20170227 > > for you to fetch changes up to 94d5bcf5a7f3799660b62098a5183f161aad0601: > > hw/arm/exynos: Fix proper mapping of CPUs by providing real cluster ID (2017-02-27 17:23:16 +0000) > > ---------------------------------------------------------------- > target-arm queue: > * raspi2: implement RNG module, GPIO and new SD card controller > (sufficient to boot new raspbian kernels) > * sdhci: bugfixes for block transfers > * virt: fix cpu object reference leak > * Add missing fp_access_check() to aarch64 crypto instructions > * cputlb: Don't assume do_unassigned_access() never returns > * virt: Add a user option to disallow ITS instantiation > * i.MX timers: fix reset handling > * ARMv7M NVIC: rewrite to fix broken priority handling and masking > * exynos: Fix proper mapping of CPUs by providing real cluster ID > * exynos: Fix Linux kernel division by zero for PLLs > Unfortunately I see crashes or assert failures on the raspi2 model on OSX hosts. Not sure why OSX only, probably just that the malloc/free has different patterns of reusing freed memory. In any case we clearly didn't get the reparent-the-sdcard code right, so I'm going to have to drop those patches for the moment :-( thanks -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 00/30] target-arm queue @ 2016-03-04 11:41 Peter Maydell 2016-03-04 14:05 ` Peter Maydell 0 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2016-03-04 11:41 UTC (permalink / raw) To: qemu-devel Here's the target-arm queue: fairly large with a roundup of lots of patches that hit the list at or just before the softfreeze deadline. Most notable thing in here is Peter/Paolo's bigendian and SETEND support patchset. There are still some patchsets on list that I haven't got to reviewing yet (eg last set of raspi patches, imx6) which I hope to get to early next week and into a pullreq next week sometime. thanks -- PMM The following changes since commit 2d3b7c0164e1b9287304bc70dd6ed071ba3e8dfc: Merge remote-tracking branch 'remotes/amit-virtio-rng/tags/rng-for-2.6-1' into staging (2016-03-03 13:13:36 +0000) are available in the git repository at: git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20160304 for you to fetch changes up to ba63cf47a93041137a94e86b7d0cd87fc896949b: target-arm: Only trap SRS from S-EL1 if specified mode is MON (2016-03-04 11:30:22 +0000) ---------------------------------------------------------------- target-arm queue: * Correct handling of writes to CPSR from gdbstub in user mode * virt: lift maximum RAM limit to 255GB * sdhci: implement reset * virt: if booting in Secure mode, provide secure-only RAM, make first flash device secure-only, and assume the EL3 boot rom will handle PSCI * bcm2835: use explicit endianness accessors rather than ldl/stl_phys * support big-endian in system mode for ARM * implement SETEND instruction * arm_gic: implement the GICv2 GICC_DIR register * fix SRS bug: only trap from S-EL1 to EL3 if specified mode is Mon ---------------------------------------------------------------- Andrew Baumann (1): bcm2835_mbox/property: replace ldl_phys/stl_phys with endian-specific accesses Paolo Bonzini (8): linux-user: arm: fix coding style for some linux-user signal functions linux-user: arm: pass env to get_user_code_* target-arm: implement SCTLR.B, drop bswap_code linux-user: arm: handle CPSR.E correctly in strex emulation target-arm: pass DisasContext to gen_aa32_ld*/st* target-arm: introduce disas flag for endianness target-arm: implement setend target-arm: implement BE32 mode in system emulation Peter Crosthwaite (10): target-arm: cpu: Move cpu_is_big_endian to header arm: cpu: handle BE32 user-mode as BE linux-user: arm: set CPSR.E/SCTLR.E0E correctly for BE mode target-arm: implement SCTLR.EE target-arm: a64: Add endianness support target-arm: introduce tbflag for endianness loader: add API to load elf header loader: load_elf(): Add doc comment loader: Add data swap option to load-elf arm: boot: Support big-endian elfs Peter Maydell (10): target-arm: Correct handling of writes to CPSR mode bits from gdb in usermode virt: Lift the maximum RAM limit from 30GB to 255GB sd.c: Handle NULL block backend in sd_get_inserted() sdhci: Implement DeviceClass reset hw/arm/virt: Provide a secure-only RAM if booting in Secure mode loader: Add load_image_mr() to load ROM image to a MemoryRegion hw/arm/virt: Load bios image to MemoryRegion, not physaddr hw/arm/virt: Make first flash device Secure-only if booting secure hw/arm/virt: Assume EL3 boot rom will handle PSCI if one is provided hw/intc/arm_gic.c: Implement GICv2 GICC_DIR Ralf-Philipp Weinmann (1): target-arm: Only trap SRS from S-EL1 if specified mode is MON hw/alpha/dp264.c | 4 +- hw/arm/armv7m.c | 2 +- hw/arm/boot.c | 93 ++++++++- hw/arm/virt.c | 168 +++++++++++++---- hw/core/loader.c | 99 +++++++++- hw/cpu/a15mpcore.c | 2 +- hw/cris/boot.c | 2 +- hw/i386/multiboot.c | 3 +- hw/intc/arm_gic.c | 45 ++++- hw/intc/arm_gic_common.c | 2 +- hw/lm32/lm32_boards.c | 4 +- hw/lm32/milkymist.c | 2 +- hw/m68k/an5206.c | 2 +- hw/m68k/dummy_m68k.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/microblaze/boot.c | 4 +- hw/mips/mips_fulong2e.c | 2 +- hw/mips/mips_malta.c | 2 +- hw/mips/mips_mipssim.c | 2 +- hw/mips/mips_r4k.c | 2 +- hw/misc/bcm2835_mbox.c | 6 +- hw/misc/bcm2835_property.c | 38 ++-- hw/moxie/moxiesim.c | 3 +- hw/openrisc/openrisc_sim.c | 3 +- hw/pci-host/prep.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/mac_newworld.c | 5 +- hw/ppc/mac_oldworld.c | 5 +- hw/ppc/ppc440_bamboo.c | 3 +- hw/ppc/spapr.c | 6 +- hw/ppc/virtex_ml507.c | 3 +- hw/s390x/ipl.c | 4 +- hw/sd/sd.c | 2 +- hw/sd/sdhci.c | 21 ++- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 4 +- hw/sparc64/sun4u.c | 4 +- hw/tricore/tricore_testboard.c | 2 +- hw/xtensa/sim.c | 4 +- hw/xtensa/xtfpga.c | 2 +- include/hw/arm/arm.h | 9 + include/hw/arm/virt.h | 1 + include/hw/elf_ops.h | 22 ++- include/hw/loader.h | 59 +++++- linux-user/main.c | 77 ++++++-- linux-user/signal.c | 110 +++++------ target-arm/arm_ldst.h | 8 +- target-arm/cpu.c | 21 +-- target-arm/cpu.h | 98 +++++++++- target-arm/helper.c | 42 ++++- target-arm/helper.h | 1 + target-arm/op_helper.c | 5 + target-arm/translate-a64.c | 56 +++--- target-arm/translate.c | 418 ++++++++++++++++++++++++----------------- target-arm/translate.h | 3 +- 55 files changed, 1064 insertions(+), 431 deletions(-) ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2016-03-04 11:41 Peter Maydell @ 2016-03-04 14:05 ` Peter Maydell 0 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2016-03-04 14:05 UTC (permalink / raw) To: QEMU Developers On 4 March 2016 at 11:41, Peter Maydell <peter.maydell@linaro.org> wrote: > Here's the target-arm queue: fairly large with a roundup of lots > of patches that hit the list at or just before the softfreeze > deadline. Most notable thing in here is Peter/Paolo's bigendian > and SETEND support patchset. > > There are still some patchsets on list that I haven't got to > reviewing yet (eg last set of raspi patches, imx6) which I hope > to get to early next week and into a pullreq next week sometime. > > thanks > -- PMM > > The following changes since commit 2d3b7c0164e1b9287304bc70dd6ed071ba3e8dfc: > > Merge remote-tracking branch 'remotes/amit-virtio-rng/tags/rng-for-2.6-1' into staging (2016-03-03 13:13:36 +0000) > > are available in the git repository at: > > > git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20160304 > > for you to fetch changes up to ba63cf47a93041137a94e86b7d0cd87fc896949b: > > target-arm: Only trap SRS from S-EL1 if specified mode is MON (2016-03-04 11:30:22 +0000) > > ---------------------------------------------------------------- > target-arm queue: > * Correct handling of writes to CPSR from gdbstub in user mode > * virt: lift maximum RAM limit to 255GB > * sdhci: implement reset > * virt: if booting in Secure mode, provide secure-only RAM, make first > flash device secure-only, and assume the EL3 boot rom will handle PSCI > * bcm2835: use explicit endianness accessors rather than ldl/stl_phys > * support big-endian in system mode for ARM > * implement SETEND instruction > * arm_gic: implement the GICv2 GICC_DIR register > * fix SRS bug: only trap from S-EL1 to EL3 if specified mode is Mon > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PULL 00/30] target-arm queue @ 2014-02-20 11:17 Peter Maydell 2014-02-21 16:01 ` Peter Maydell 0 siblings, 1 reply; 45+ messages in thread From: Peter Maydell @ 2014-02-20 11:17 UTC (permalink / raw) To: Anthony Liguori; +Cc: Blue Swirl, qemu-devel, Aurelien Jarno Here's the latest target-arm pull request. There are definitely more things still in the pipeline so there will be at least one more before softfreeze... thanks -- PMM The following changes since commit 46eef33b89e936ca793e13c4aeea1414e97e8dbb: Fix QEMU build on OpenBSD on x86 archs (2014-02-17 11:44:00 +0000) are available in the git repository at: git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20140220 for you to fetch changes up to 2ea5a2ca1f1dc302652d2ad5035e0b209ccaa177: linux-user: AArch64: Fix exclusive store of the zero register (2014-02-20 10:35:56 +0000) ---------------------------------------------------------------- target-arm queue: * Fix a bug causing an assertion in the NVIC on ARMv7M models * More A64 Neon instructions * Refactor cpreg API to separate out access check functions, as groundwork for AArch64 system mode * Fix bug in linux-user A64 store-exclusive of XZR ---------------------------------------------------------------- Alex Bennée (2): target-arm: A64: Implement SIMD FP compare and set insns target-arm: A64: Implement floating point pairwise insns Janne Grunau (1): linux-user: AArch64: Fix exclusive store of the zero register Peter Maydell (27): hw/intc/arm_gic: Fix NVIC assertion failure target-arm: A64: Implement plain vector SIMD indexed element insns target-arm: A64: Implement long vector x indexed insns target-arm: A64: Implement SIMD scalar indexed instructions target-arm: A64: Implement scalar three different instructions softfloat: Support halving the result of muladd operation target-arm: A64: Implement remaining 3-same instructions target-arm/kvm-consts.h: Define QEMU constants for known KVM CPUs target-arm: Define names for SCTLR bits target-arm: Restrict check_ap() use of S and R bits to v6 and earlier target-arm: Remove unused ARMCPUState sr substruct target-arm: Log bad system register accesses with LOG_UNIMP target-arm: Stop underdecoding ARM946 PRBS registers target-arm: Split cpreg access checks out from read/write functions target-arm: Convert performance monitor reginfo to accessfn target-arm: Convert generic timer reginfo to accessfn target-arm: Convert miscellaneous reginfo structs to accessfn target-arm: Drop success/fail return from cpreg read and write functions target-arm: Remove unnecessary code now read/write fns can't fail target-arm: Remove failure status return from read/write_raw_cp_reg target-arm: Fix incorrect type for value argument to write_raw_cp_reg target-arm: A64: Implement store-exclusive for system mode target-arm: A64: Add opcode comments to disas_simd_three_reg_diff target-arm: A64: Add most remaining three-reg-diff widening ops target-arm: A64: Implement the wide 3-reg-different operations target-arm: A64: Implement narrowing three-reg-diff operations target-arm: A64: Implement unprivileged load/store fpu/softfloat.c | 38 ++ hw/arm/pxa2xx.c | 36 +- hw/arm/pxa2xx_pic.c | 11 +- hw/intc/arm_gic.c | 2 +- include/fpu/softfloat.h | 3 + linux-user/main.c | 6 +- target-arm/cpu.c | 8 +- target-arm/cpu.h | 105 +++- target-arm/helper-a64.c | 105 ++++ target-arm/helper-a64.h | 9 + target-arm/helper.c | 620 +++++++++----------- target-arm/helper.h | 3 + target-arm/kvm-consts.h | 16 +- target-arm/neon_helper.c | 16 + target-arm/op_helper.c | 46 +- target-arm/translate-a64.c | 1358 ++++++++++++++++++++++++++++++++++++++------ target-arm/translate.c | 28 +- 17 files changed, 1815 insertions(+), 595 deletions(-) ^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PULL 00/30] target-arm queue 2014-02-20 11:17 Peter Maydell @ 2014-02-21 16:01 ` Peter Maydell 0 siblings, 0 replies; 45+ messages in thread From: Peter Maydell @ 2014-02-21 16:01 UTC (permalink / raw) To: Anthony Liguori; +Cc: Blue Swirl, QEMU Developers, Aurelien Jarno On 20 February 2014 11:17, Peter Maydell <peter.maydell@linaro.org> wrote: > Here's the latest target-arm pull request. There are definitely > more things still in the pipeline so there will be at least one > more before softfreeze... Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 45+ messages in thread
end of thread, other threads:[~2022-04-07 12:27 UTC | newest] Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-06-14 14:13 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 01/30] target-arm: kvm64: set guest PMUv3 feature bit if supported Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 02/30] hw/arm/virt: Add PMU node for virt machine Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 03/30] hw/arm/virt-acpi-build: Add PMU IRQ number in ACPI table Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 04/30] target-arm: Fix reset and migration of TTBCR(S) Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 05/30] hw/arm/virt: separate versioned type-init code Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 06/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 07/30] hw/arm/virt: introduce DEFINE_VIRT_MACHINE_AS_LATEST Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 08/30] hw/arm/virt: create the 2.7 machine type Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 09/30] hw/i2c: QOM'ify bitbang_i2c.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 10/30] hw/i2c: QOM'ify exynos4210_i2c.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 11/30] hw/i2c: QOM'ify omap_i2c.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 12/30] hw/i2c: QOM'ify versatile_i2c.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 13/30] hw/gpio: QOM'ify omap_gpio.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 14/30] hw/gpio: QOM'ify pl061.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 15/30] hw/gpio: QOM'ify zaurus.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 16/30] hw/misc: QOM'ify arm_l2x0.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 17/30] hw/misc: QOM'ify exynos4210_pmu.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 18/30] hw/misc: QOM'ify mst_fpga.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 19/30] hw/dma: QOM'ify pxa2xx_dma.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 20/30] hw/sd: QOM'ify pl181.c Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 21/30] i2cbus: remove unused dev field Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 22/30] i2c: implement broadcast write Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 23/30] i2c: Factor our send() and recv() common logic Peter Maydell 2016-06-14 14:13 ` [Qemu-devel] [PULL 24/30] introduce aux-bus Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 25/30] introduce dpcd module Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 26/30] hw/i2c-ddc.c: Implement DDC I2C slave Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 27/30] introduce xlnx-dpdma Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 28/30] introduce xlnx-dp Peter Maydell 2022-04-07 10:32 ` Peter Maydell 2022-04-07 11:28 ` Frederic Konrad 2022-04-07 12:26 ` Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 29/30] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma Peter Maydell 2016-06-14 14:14 ` [Qemu-devel] [PULL 30/30] target-arm: Don't permit ARMv8-only Neon insns on ARMv7 Peter Maydell -- strict thread matches above, loose matches on Subject: below -- 2018-08-16 13:34 [Qemu-devel] [PULL 00/30] target-arm queue Peter Maydell 2018-08-16 16:18 ` Peter Maydell 2018-02-09 11:02 Peter Maydell 2018-02-09 14:38 ` Peter Maydell 2017-02-27 18:04 Peter Maydell 2017-02-27 19:14 ` no-reply 2017-02-28 12:07 ` Peter Maydell 2016-03-04 11:41 Peter Maydell 2016-03-04 14:05 ` Peter Maydell 2014-02-20 11:17 Peter Maydell 2014-02-21 16:01 ` Peter Maydell
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.