summaryrefslogtreecommitdiff
path: root/include/hw/misc
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2018-06-07 18:17:49 +0100
committerDavid Gibson <david@gibson.dropbear.id.au>2018-06-12 10:44:36 +1000
commit2e3e5c7e92452900e2bb5143c5fb6d47c0897a34 (patch)
treedd0c9f3ba9e8ad1abe19710216394ece8677e64c /include/hw/misc
parent72ee08cf4f2d4443d198b4e9f7a6fa2beb06dd6b (diff)
downloadqemu-2e3e5c7e92452900e2bb5143c5fb6d47c0897a34.zip
cuda: embed mos6522_cuda device directly rather than using QOM object link
Examining the migration stream it can be seen that the mos6522 device state is being stored separately rather than as part of the CUDA device which is incorrect (and likely to cause issues if another mos6522 device is added to the machine). Resolve this by embedding the mos6522_cuda device directly within the CUDA device rather than using a QOM object link to reference the device separately. Note that we also bump the version in vmstate_cuda to reflect this change: this isn't particularly important for the moment as the Mac machine migration isn't 100% reliable due to issues migrating the timebase under TCG. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'include/hw/misc')
-rw-r--r--include/hw/misc/macio/cuda.h27
-rw-r--r--include/hw/misc/mos6522.h2
2 files changed, 14 insertions, 15 deletions
diff --git a/include/hw/misc/macio/cuda.h b/include/hw/misc/macio/cuda.h
index 494b709579..7dad469142 100644
--- a/include/hw/misc/macio/cuda.h
+++ b/include/hw/misc/macio/cuda.h
@@ -54,12 +54,21 @@
#define CUDA_TIMER_TICKLE 0x24
#define CUDA_COMBINED_FORMAT_IIC 0x25
+
+/* MOS6522 CUDA */
+typedef struct MOS6522CUDAState {
+ /*< private >*/
+ MOS6522State parent_obj;
+} MOS6522CUDAState;
+
+#define TYPE_MOS6522_CUDA "mos6522-cuda"
+#define MOS6522_CUDA(obj) OBJECT_CHECK(MOS6522CUDAState, (obj), \
+ TYPE_MOS6522_CUDA)
+
/* Cuda */
#define TYPE_CUDA "cuda"
#define CUDA(obj) OBJECT_CHECK(CUDAState, (obj), TYPE_CUDA)
-typedef struct MOS6522CUDAState MOS6522CUDAState;
-
typedef struct CUDAState {
/*< private >*/
SysBusDevice parent_obj;
@@ -67,7 +76,7 @@ typedef struct CUDAState {
MemoryRegion mem;
ADBBusState adb_bus;
- MOS6522CUDAState *mos6522_cuda;
+ MOS6522CUDAState mos6522_cuda;
uint32_t tick_offset;
uint64_t tb_frequency;
@@ -92,16 +101,4 @@ typedef struct CUDAState {
QEMUTimer *adb_poll_timer;
} CUDAState;
-/* MOS6522 CUDA */
-struct MOS6522CUDAState {
- /*< private >*/
- MOS6522State parent_obj;
-
- CUDAState *cuda;
-};
-
-#define TYPE_MOS6522_CUDA "mos6522-cuda"
-#define MOS6522_CUDA(obj) OBJECT_CHECK(MOS6522CUDAState, (obj), \
- TYPE_MOS6522_CUDA)
-
#endif /* CUDA_H */
diff --git a/include/hw/misc/mos6522.h b/include/hw/misc/mos6522.h
index a53c161b00..cb0fd7db78 100644
--- a/include/hw/misc/mos6522.h
+++ b/include/hw/misc/mos6522.h
@@ -146,6 +146,8 @@ typedef struct MOS6522DeviceClass {
#define MOS6522_DEVICE_GET_CLASS(obj) \
OBJECT_GET_CLASS(MOS6522DeviceClass, (obj), TYPE_MOS6522)
+extern const VMStateDescription vmstate_mos6522;
+
uint64_t mos6522_read(void *opaque, hwaddr addr, unsigned size);
void mos6522_write(void *opaque, hwaddr addr, uint64_t val, unsigned size);