aboutsummaryrefslogtreecommitdiff
path: root/hw/arm/musca.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-05-17 18:40:46 +0100
committerPeter Maydell <peter.maydell@linaro.org>2019-06-17 15:12:25 +0100
commita90a862b9ee585bb60683de59524dd06d792ab5d (patch)
tree7bc3c0c896dd2d4bc5a57d571ec367057503a12e /hw/arm/musca.c
parente0cf7b81637a09faf987aca5c20d289a36dc9cf6 (diff)
downloadqemu-a90a862b9ee585bb60683de59524dd06d792ab5d.zip
qemu-a90a862b9ee585bb60683de59524dd06d792ab5d.tar.gz
qemu-a90a862b9ee585bb60683de59524dd06d792ab5d.tar.bz2
hw/arm: Correctly disable FPU/DSP for some ARMSSE-based boards
The SSE-200 hardware has configurable integration settings which determine whether its two CPUs have the FPU and DSP: * CPU0_FPU (default 0) * CPU0_DSP (default 0) * CPU1_FPU (default 1) * CPU1_DSP (default 1) Similarly, the IoTKit has settings for its single CPU: * CPU0_FPU (default 1) * CPU0_DSP (default 1) Of our four boards that use either the IoTKit or the SSE-200: * mps2-an505, mps2-an521 and musca-a use the default settings * musca-b1 enables FPU and DSP on both CPUs Currently QEMU models all these boards using CPUs with both FPU and DSP enabled. This means that we are incorrect for mps2-an521 and musca-a, which should not have FPU or DSP on CPU0. Create QOM properties on the ARMSSE devices corresponding to the default h/w integration settings, and make the Musca-B1 board enable FPU and DSP on both CPUs. This fixes the mps2-an521 and musca-a behaviour, and leaves the musca-b1 and mps2-an505 behaviour unchanged. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-id: 20190517174046.11146-5-peter.maydell@linaro.org
Diffstat (limited to 'hw/arm/musca.c')
-rw-r--r--hw/arm/musca.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/arm/musca.c b/hw/arm/musca.c
index 825d80e..ddd8842 100644
--- a/hw/arm/musca.c
+++ b/hw/arm/musca.c
@@ -385,6 +385,14 @@ static void musca_init(MachineState *machine)
qdev_prop_set_uint32(ssedev, "init-svtor", mmc->init_svtor);
qdev_prop_set_uint32(ssedev, "SRAM_ADDR_WIDTH", mmc->sram_addr_width);
qdev_prop_set_uint32(ssedev, "MAINCLK", SYSCLK_FRQ);
+ /*
+ * Musca-A takes the default SSE-200 FPU/DSP settings (ie no for
+ * CPU0 and yes for CPU1); Musca-B1 explicitly enables them for CPU0.
+ */
+ if (mmc->type == MUSCA_B1) {
+ qdev_prop_set_bit(ssedev, "CPU0_FPU", true);
+ qdev_prop_set_bit(ssedev, "CPU0_DSP", true);
+ }
object_property_set_bool(OBJECT(&mms->sse), true, "realized",
&error_fatal);