[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 03/10] macfb: increase number of registers saved in MacfbState
From: |
Mark Cave-Ayland |
Subject: |
[PATCH v3 03/10] macfb: increase number of registers saved in MacfbState |
Date: |
Sat, 5 Mar 2022 15:55:23 +0000 |
The MacOS toolbox ROM accesses a number of addresses between 0x0 and 0x200
during
initialisation and resolution changes. Whilst the function of many of these
registers is unknown, it is worth the minimal cost of saving these extra values
as
part of migration to help future-proof the migration stream for the q800 machine
as it starts to stabilise.
Note this is a migration break, but since there are upcoming incompatible
changes
for the q800 machine (and migration does not even succeed without these patches)
then this is not an issue.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
---
hw/display/macfb.c | 8 ++++++++
include/hw/display/macfb.h | 3 ++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index fb54b460c1..dfdae90144 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -537,6 +537,10 @@ static uint64_t macfb_ctrl_read(void *opaque,
case DAFB_MODE_SENSE:
val = macfb_sense_read(s);
break;
+ default:
+ if (addr < MACFB_CTRL_TOPADDR) {
+ val = s->regs[addr >> 2];
+ }
}
trace_macfb_ctrl_read(addr, val, size);
@@ -592,6 +596,10 @@ static void macfb_ctrl_write(void *opaque,
macfb_invalidate_display(s);
}
break;
+ default:
+ if (addr < MACFB_CTRL_TOPADDR) {
+ s->regs[addr >> 2] = val;
+ }
}
trace_macfb_ctrl_write(addr, val, size);
diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h
index 6d9f0f7869..55a50d3fb0 100644
--- a/include/hw/display/macfb.h
+++ b/include/hw/display/macfb.h
@@ -48,7 +48,8 @@ typedef struct MacFbMode {
uint32_t offset;
} MacFbMode;
-#define MACFB_NUM_REGS 8
+#define MACFB_CTRL_TOPADDR 0x200
+#define MACFB_NUM_REGS (MACFB_CTRL_TOPADDR / sizeof(uint32_t))
typedef struct MacfbState {
MemoryRegion mem_vram;
--
2.20.1
- [PATCH v3 00/10] q800: migration fixes, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 01/10] macfb: add VMStateDescription for MacfbNubusState and MacfbSysBusState, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 02/10] macfb: don't use special irq_state and irq_mask variables in MacfbState, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 03/10] macfb: increase number of registers saved in MacfbState,
Mark Cave-Ayland <=
- [PATCH v3 04/10] macfb: add VMStateDescription fields for display type and VBL timer, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 05/10] macfb: set initial value of mode control registers in macfb_common_realize(), Mark Cave-Ayland, 2022/03/05
- [PATCH v3 06/10] esp: introduce esp_set_pdma_cb() function, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 07/10] esp: introduce esp_pdma_cb() function, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 09/10] esp: include the current PDMA callback in the migration stream, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 08/10] esp: convert ESPState pdma_cb from a function pointer to an integer, Mark Cave-Ayland, 2022/03/05
- [PATCH v3 10/10] esp: recreate ESPState current_req after migration, Mark Cave-Ayland, 2022/03/05