Move RAMBlock, RAMList and ram_list to exec/cpu-common.h since they do not depend on CPUArchState. We can then use it together with qom/cpu.h to replace cpu.h and exec/cpu-all.h includes, making it fully target-independent.
Signed-off-by: Andreas Färber <afaer...@suse.de> --- Makefile.objs | 1 + Makefile.target | 1 - include/exec/cpu-all.h | 28 ---------------------------- include/exec/cpu-common.h | 33 +++++++++++++++++++++++++++++++++ include/sysemu/memory_mapping.h | 1 + memory_mapping.c | 4 ++-- 6 files changed, 37 insertions(+), 31 deletions(-) diff --git a/Makefile.objs b/Makefile.objs index 5b288ba..89f28a1 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -54,6 +54,7 @@ common-obj-y += migration.o migration-tcp.o common-obj-y += qemu-char.o #aio.o common-obj-y += block-migration.o common-obj-y += page_cache.o xbzrle.o +common-obj-y += memory_mapping.o common-obj-$(CONFIG_POSIX) += migration-exec.o migration-unix.o migration-fd.o diff --git a/Makefile.target b/Makefile.target index b0be124..e73c68b 100644 --- a/Makefile.target +++ b/Makefile.target @@ -109,7 +109,6 @@ obj-y += hw/ obj-$(CONFIG_FDT) += device_tree.o obj-$(CONFIG_KVM) += kvm-all.o obj-y += memory.o savevm.o cputlb.o -obj-y += memory_mapping.o obj-y += dump.o LIBS+=$(libs_softmmu) diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index e9c3717..bd09cd1 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -22,7 +22,6 @@ #include "qemu-common.h" #include "qemu/tls.h" #include "exec/cpu-common.h" -#include "qemu/thread.h" /* some important defines: * @@ -465,33 +464,6 @@ extern ram_addr_t ram_size; /* RAM is pre-allocated and passed into qemu_ram_alloc_from_ptr */ #define RAM_PREALLOC_MASK (1 << 0) -typedef struct RAMBlock { - struct MemoryRegion *mr; - uint8_t *host; - ram_addr_t offset; - ram_addr_t length; - uint32_t flags; - char idstr[256]; - /* Reads can take either the iothread or the ramlist lock. - * Writes must take both locks. - */ - QTAILQ_ENTRY(RAMBlock) next; -#if defined(__linux__) && !defined(TARGET_S390X) - int fd; -#endif -} RAMBlock; - -typedef struct RAMList { - QemuMutex mutex; - /* Protected by the iothread lock. */ - uint8_t *phys_dirty; - RAMBlock *mru_block; - /* Protected by the ramlist lock. */ - QTAILQ_HEAD(, RAMBlock) blocks; - uint32_t version; -} RAMList; -extern RAMList ram_list; - extern const char *mem_path; extern int mem_prealloc; diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index e061e21..0e5c63f 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -11,6 +11,7 @@ #include "qemu/bswap.h" #include "qemu/queue.h" +#include "qemu/thread.h" /** * CPUListState: @@ -43,6 +44,38 @@ typedef uintptr_t ram_addr_t; # define RAM_ADDR_FMT "%" PRIxPTR #endif +#if !defined(CONFIG_USER_ONLY) + +typedef struct RAMBlock { + struct MemoryRegion *mr; + uint8_t *host; + ram_addr_t offset; + ram_addr_t length; + uint32_t flags; + char idstr[256]; + /* Reads can take either the iothread or the ramlist lock. + * Writes must take both locks. + */ + QTAILQ_ENTRY(RAMBlock) next; +#if defined(__linux__) && !defined(TARGET_S390X) + int fd; +#endif +} RAMBlock; + +typedef struct RAMList { + QemuMutex mutex; + /* Protected by the iothread lock. */ + uint8_t *phys_dirty; + RAMBlock *mru_block; + /* Protected by the ramlist lock. */ + QTAILQ_HEAD(, RAMBlock) blocks; + uint32_t version; +} RAMList; + +extern RAMList ram_list; + +#endif + /* memory API */ typedef void CPUWriteMemoryFunc(void *opaque, hwaddr addr, uint32_t value); diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapping.h index 1411cc7..161cfc3 100644 --- a/include/sysemu/memory_mapping.h +++ b/include/sysemu/memory_mapping.h @@ -16,6 +16,7 @@ #include "qemu/queue.h" #include "qemu/typedefs.h" +#include "qom/cpu.h" /* The physical and virtual address in the memory mapping are contiguous. */ typedef struct MemoryMapping { diff --git a/memory_mapping.c b/memory_mapping.c index a19be54..446a927 100644 --- a/memory_mapping.c +++ b/memory_mapping.c @@ -11,8 +11,8 @@ * */ -#include "cpu.h" -#include "exec/cpu-all.h" +#include "qemu-common.h" +#include "exec/cpu-common.h" #include "sysemu/memory_mapping.h" static void memory_mapping_list_add_mapping_sorted(MemoryMappingList *list, -- 1.8.1.4