aboutsummaryrefslogtreecommitdiff
path: root/hw/arm/stellaris.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-02-07 19:21:30 +0000
committerPeter Maydell <peter.maydell@linaro.org>2017-02-07 19:21:30 +0000
commitf073cd3a2bf1054135271b837c58a7da650dd84b (patch)
treee57545e83c1a36940162eea5439fda0cb9f74a7f /hw/arm/stellaris.c
parentd0dff238a87fa81393ed72754d4dc8b09e50b08b (diff)
parentaecfbbc97a2e52bbee34a53c32f961a182046a95 (diff)
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170207-1' into staging
target-arm: * new "unimplemented" device for stubbing out devices in a system model so accesses can be logged * stellaris: document the SoC memory map * arm: create instruction syndromes for AArch32 data aborts * arm: Correctly handle watchpoints for BE32 CPUs * Fix Thumb-1 BE32 execution and disassembly * arm: Add cfgend parameter for ARM CPU selection * sd: sdhci: check data length during dma_memory_read * aspeed: add a watchdog controller * integratorcp: adding vmstate for save/restore # gpg: Signature made Tue 07 Feb 2017 19:20:19 GMT # gpg: using RSA key 0x3C2525ED14360CDE # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" # gpg: aka "Peter Maydell <pmaydell@gmail.com>" # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20170207-1: stellaris: Use the 'unimplemented' device for parts we don't implement hw/misc: New "unimplemented" sysbus device stellaris: Document memory map and which SoC devices are unimplemented target/arm: A32, T32: Create Instruction Syndromes for Data Aborts target/arm: Abstract out pbit/wbit tests in ARM ldr/str decode arm: Correctly handle watchpoints for BE32 CPUs Fix Thumb-1 BE32 execution and disassembly. target/arm: Add cfgend parameter for ARM CPU selection. hw/arm/integratorcp: Support specifying features via -cpu sd: sdhci: check data length during dma_memory_read aspeed: add a watchdog controller wdt: Add Aspeed watchdog device model integratorcp: adding vmstate for save/restore Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/stellaris.c')
-rw-r--r--hw/arm/stellaris.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 794a3ada71..9edcd49740 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -21,6 +21,7 @@
#include "exec/address-spaces.h"
#include "sysemu/sysemu.h"
#include "hw/char/pl011.h"
+#include "hw/misc/unimp.h"
#define GPIO_A 0
#define GPIO_B 1
@@ -1220,6 +1221,40 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
0x40024000, 0x40025000, 0x40026000};
static const int gpio_irq[7] = {0, 1, 2, 3, 4, 30, 31};
+ /* Memory map of SoC devices, from
+ * Stellaris LM3S6965 Microcontroller Data Sheet (rev I)
+ * http://www.ti.com/lit/ds/symlink/lm3s6965.pdf
+ *
+ * 40000000 wdtimer (unimplemented)
+ * 40002000 i2c (unimplemented)
+ * 40004000 GPIO
+ * 40005000 GPIO
+ * 40006000 GPIO
+ * 40007000 GPIO
+ * 40008000 SSI
+ * 4000c000 UART
+ * 4000d000 UART
+ * 4000e000 UART
+ * 40020000 i2c
+ * 40021000 i2c (unimplemented)
+ * 40024000 GPIO
+ * 40025000 GPIO
+ * 40026000 GPIO
+ * 40028000 PWM (unimplemented)
+ * 4002c000 QEI (unimplemented)
+ * 4002d000 QEI (unimplemented)
+ * 40030000 gptimer
+ * 40031000 gptimer
+ * 40032000 gptimer
+ * 40033000 gptimer
+ * 40038000 ADC
+ * 4003c000 analogue comparator (unimplemented)
+ * 40048000 ethernet
+ * 400fc000 hibernation module (unimplemented)
+ * 400fd000 flash memory control (unimplemented)
+ * 400fe000 system control
+ */
+
DeviceState *gpio_dev[7], *nvic;
qemu_irq gpio_in[7][8];
qemu_irq gpio_out[7][8];
@@ -1370,6 +1405,19 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
}
}
}
+
+ /* Add dummy regions for the devices we don't implement yet,
+ * so guest accesses don't cause unlogged crashes.
+ */
+ create_unimplemented_device("wdtimer", 0x40000000, 0x1000);
+ create_unimplemented_device("i2c-0", 0x40002000, 0x1000);
+ create_unimplemented_device("i2c-2", 0x40021000, 0x1000);
+ create_unimplemented_device("PWM", 0x40028000, 0x1000);
+ create_unimplemented_device("QEI-0", 0x4002c000, 0x1000);
+ create_unimplemented_device("QEI-1", 0x4002d000, 0x1000);
+ create_unimplemented_device("analogue-comparator", 0x4003c000, 0x1000);
+ create_unimplemented_device("hibernation", 0x400fc000, 0x1000);
+ create_unimplemented_device("flash-control", 0x400fd000, 0x1000);
}
/* FIXME: Figure out how to generate these from stellaris_boards. */