3df9d74806
This defines new QOM object - IOMMUMemoryRegion - with MemoryRegion as a parent. This moves IOMMU-related fields from MR to IOMMU MR. However to avoid dymanic QOM casting in fast path (address_space_translate, etc), this adds an @is_iommu boolean flag to MR and provides new helper to do simple cast to IOMMU MR - memory_region_get_iommu. The flag is set in the instance init callback. This defines memory_region_is_iommu as memory_region_get_iommu()!=NULL. This switches MemoryRegion to IOMMUMemoryRegion in most places except the ones where MemoryRegion may be an alias. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20170711035620.4232-2-aik@ozlabs.ru> Acked-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
25 lines
584 B
C
25 lines
584 B
C
#ifndef HW_MIPS_H
|
|
#define HW_MIPS_H
|
|
/* Definitions for mips board emulation. */
|
|
|
|
/* Kernels can be configured with 64KB pages */
|
|
#define INITRD_PAGE_MASK (~((1 << 16) - 1))
|
|
|
|
#include "exec/memory.h"
|
|
#include "hw/irq.h"
|
|
|
|
/* gt64xxx.c */
|
|
PCIBus *gt64120_register(qemu_irq *pic);
|
|
|
|
/* bonito.c */
|
|
PCIBus *bonito_init(qemu_irq *pic);
|
|
|
|
/* rc4030.c */
|
|
typedef struct rc4030DMAState *rc4030_dma;
|
|
void rc4030_dma_read(void *dma, uint8_t *buf, int len);
|
|
void rc4030_dma_write(void *dma, uint8_t *buf, int len);
|
|
|
|
DeviceState *rc4030_init(rc4030_dma **dmas, IOMMUMemoryRegion **dma_mr);
|
|
|
|
#endif
|