v6: * Added comment to hexloader-test.c explaining contents of test.hex file [Phil] v5: * Implemented Phil's hex loader suggestions * Replaced Su Hang's test hex file with a simple memory test pattern, eliminating the need to distribute source [Phil] v4: * Drop ARMv7MState to ARMMProfileState rename because it causes a lot of code churn and is incomplete. Other parts of QEMU (like NVIC emulation) still refer to "v7m" although they apply to other architecture versions too. [Peter] * Use the generic loader device (-device loader,file=program.hex,cpu-num=1) instead of -kernel. -kernel is a legacy command-line option that is kept as a convenience, but it's not as flexible or predictable as the generic loader device. New image formats should be added to the generic loader device. [Peter] * Use hex/ASCII literals instead of decimal literals in hexloader-test.c. This makes the test case slightly easier to understand. [Philippe] v3: * Rename ARMv7MState to ARMMProfileState so a single class can cater for ARMv6-M, ARMv7-M, and ARMv8-M [Peter] * Make bitbanding optional via a qdev property [Peter] * Add hex file loader patches to reduce dependencies in upcoming patch series * Implement rollback if hex file loader fails partway through [Peter] * Update hex file loader test case to use an ARMv7-M board since hex file loading is only done for ARM M Profile boards
This series contains the prerequistes for the "microbit" machine type that Joel Stanley has written. I have combined the Cortex M0 CPU model and hex loader work into one series to reduce the dependencies in upcoming patch series from Joel, Julia, and Steffen. This patch series: * Makes bitbanding optional on ARMv7MState. * Adds a "cortex-m0" cpu type which can be used with ARMMProfileState. This works thanks to Julia's Cortex M0 emulation patches, which are now all merged. * Adds Su Hang's Intel HEX file format loader so that micro:bit and other microcontroller firmware images can be run using -kernel. The micro:bit development tools typically only emit .hex files and not ELFs. Stefan Hajnoczi (4): hw/arm: make bitbanded IO optional on ARMv7-M target/arm: add "cortex-m0" CPU model loader: extract rom_free() function loader: add rom transaction API Su Hang (2): loader: Implement .hex file loader Add QTest testcase for the Intel Hexadecimal MAINTAINERS | 6 + configure | 4 + tests/Makefile.include | 2 + include/hw/arm/armv7m.h | 2 + include/hw/loader.h | 31 +++ hw/arm/armv7m.c | 37 ++-- hw/arm/mps2.c | 1 + hw/arm/msf2-soc.c | 1 + hw/arm/stellaris.c | 1 + hw/arm/stm32f205_soc.c | 1 + hw/core/generic-loader.c | 4 + hw/core/loader.c | 302 ++++++++++++++++++++++++++- target/arm/cpu.c | 11 + tests/hexloader-test.c | 45 ++++ tests/hex-loader-check-data/test.hex | 18 ++ 15 files changed, 440 insertions(+), 26 deletions(-) create mode 100644 tests/hexloader-test.c create mode 100644 tests/hex-loader-check-data/test.hex -- 2.17.1