/* * libqos virtio MMIO definitions * * Copyright (c) 2014 Marc MarĂ­ * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. */ #ifndef LIBQOS_VIRTIO_MMIO_H #define LIBQOS_VIRTIO_MMIO_H #include "libqos/virtio.h" #define QVIRTIO_MMIO_MAGIC_VALUE 0x000 #define QVIRTIO_MMIO_VERSION 0x004 #define QVIRTIO_MMIO_DEVICE_ID 0x008 #define QVIRTIO_MMIO_VENDOR_ID 0x00C #define QVIRTIO_MMIO_HOST_FEATURES 0x010 #define QVIRTIO_MMIO_HOST_FEATURES_SEL 0x014 #define QVIRTIO_MMIO_GUEST_FEATURES 0x020 #define QVIRTIO_MMIO_GUEST_FEATURES_SEL 0x024 #define QVIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 #define QVIRTIO_MMIO_QUEUE_SEL 0x030 #define QVIRTIO_MMIO_QUEUE_NUM_MAX 0x034 #define QVIRTIO_MMIO_QUEUE_NUM 0x038 #define QVIRTIO_MMIO_QUEUE_ALIGN 0x03C #define QVIRTIO_MMIO_QUEUE_PFN 0x040 #define QVIRTIO_MMIO_QUEUE_NOTIFY 0x050 #define QVIRTIO_MMIO_INTERRUPT_STATUS 0x060 #define QVIRTIO_MMIO_INTERRUPT_ACK 0x064 #define QVIRTIO_MMIO_DEVICE_STATUS 0x070 #define QVIRTIO_MMIO_DEVICE_SPECIFIC 0x100 typedef struct QVirtioMMIODevice { QVirtioDevice vdev; uint64_t addr; uint32_t page_size; uint32_t features; /* As it cannot be read later, save it */ } QVirtioMMIODevice; extern const QVirtioBus qvirtio_mmio; QVirtioMMIODevice *qvirtio_mmio_init_device(uint64_t addr, uint32_t page_size); #endif