diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2021-07-18 13:46:39 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2021-07-18 13:46:39 +0100 |
commit | fd79f89c76c8e2f409dd9db5d7a367b1f64b6dc6 (patch) | |
tree | e67b50f02591b71681d33d2c5ba6964a29776458 | |
parent | a97fca4ceb9d9b10aa8b582e817a5ee6c42ffbaf (diff) | |
parent | 8fe612a183dec4c63afdc57537079bc742d024ca (diff) |
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20210718' into staging
target-arm queue:
* Remove duplicate 'plus1' function from Neon and SVE decode
* Fix offsets for TTBCR for big-endian hosts
* docs: fix copyright date
* docs: add license/version info to HTML footers
* docs: add an About section
* docs: document some more arm boards
# gpg: Signature made Sun 18 Jul 2021 13:45:22 BST
# gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg: issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate]
# gpg: aka "Peter Maydell <pmaydell@gmail.com>" [ultimate]
# gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE
* remotes/pmaydell/tags/pull-target-arm-20210718:
target/arm: Remove duplicate 'plus1' function from Neon and SVE decode
docs: Add skeletal documentation of highbank and midway
docs: Add skeletal documentation of the emcraft-sf2
docs: Add skeletal documentation of cubieboard
docs: Add QEMU version information to HTML footer
docs: Add license note to the HTML page footer
docs: Add some actual About text to about/index.rst
docs: Move deprecation, build and license info out of system/
docs: Remove "Contents:" lines from top-level subsections
docs: Stop calling the top level subsections of our manual 'manuals'
docs: Fix documentation Copyright date
target/arm: Fix offsets for TTBCR
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
26 files changed, 122 insertions, 59 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 9100f9a043..4256ad1adb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -560,6 +560,7 @@ S: Odd Fixes F: hw/*/allwinner* F: include/hw/*/allwinner* F: hw/arm/cubieboard.c +F: docs/system/arm/cubieboard.rst Allwinner-h3 M: Niek Linnenbank <nieklinnenbank@gmail.com> @@ -642,6 +643,7 @@ L: qemu-arm@nongnu.org S: Odd Fixes F: hw/arm/highbank.c F: hw/net/xgmac.c +F: docs/system/arm/highbank.rst Canon DIGIC M: Antony Pavlov <antonynpavlov@gmail.com> @@ -1023,6 +1025,7 @@ M: Peter Maydell <peter.maydell@linaro.org> L: qemu-arm@nongnu.org S: Maintained F: hw/arm/msf2-som.c +F: docs/system/arm/emcraft-sf2.rst ASPEED BMCs M: Cédric Le Goater <clg@kaod.org> @@ -3451,6 +3454,7 @@ S: Maintained F: docs/conf.py F: docs/*/conf.py F: docs/sphinx/ +F: docs/_templates/ Miscellaneous ------------- diff --git a/docs/_templates/footer.html b/docs/_templates/footer.html new file mode 100644 index 0000000000..977053b541 --- /dev/null +++ b/docs/_templates/footer.html @@ -0,0 +1,14 @@ +{% extends "!footer.html" %} +{% block extrafooter %} + +<!-- Empty para to force a blank line after "Built with Sphinx ..." --> +<p></p> + +<p>This documentation is for QEMU version {{ version }}.</p> + +{% trans path=pathto('about/license') %} +<p><a href="{{ path }}">QEMU and this manual are released under the +GNU General Public License, version 2.</a></p> +{% endtrans %} +{{ super() }} +{% endblock %} diff --git a/docs/system/build-platforms.rst b/docs/about/build-platforms.rst index 692323609e..692323609e 100644 --- a/docs/system/build-platforms.rst +++ b/docs/about/build-platforms.rst diff --git a/docs/system/deprecated.rst b/docs/about/deprecated.rst index 6d438f1c8d..6d438f1c8d 100644 --- a/docs/system/deprecated.rst +++ b/docs/about/deprecated.rst diff --git a/docs/about/index.rst b/docs/about/index.rst new file mode 100644 index 0000000000..689a9861dc --- /dev/null +++ b/docs/about/index.rst @@ -0,0 +1,27 @@ +About QEMU +========== + +QEMU is a generic and open source machine emulator and virtualizer. + +QEMU can be used in several different ways. The most common is for +"system emulation", where it provides a virtual model of an +entire machine (CPU, memory and emulated devices) to run a guest OS. +In this mode the CPU may be fully emulated, or it may work with +a hypervisor such as KVM, Xen, Hax or Hypervisor.Framework to +allow the guest to run directly on the host CPU. + +The second supported way to use QEMU is "user mode emulation", +where QEMU can launch processes compiled for one CPU on another CPU. +In this mode the CPU is always emulated. + +QEMU also provides a number of standalone commandline utilities, +such as the `qemu-img` disk image utility that allows you to create, +convert and modify disk images. + +.. toctree:: + :maxdepth: 2 + + build-platforms + deprecated + removed-features + license diff --git a/docs/system/license.rst b/docs/about/license.rst index cde3d2d25d..cde3d2d25d 100644 --- a/docs/system/license.rst +++ b/docs/about/license.rst diff --git a/docs/system/removed-features.rst b/docs/about/removed-features.rst index 28bb035043..28bb035043 100644 --- a/docs/system/removed-features.rst +++ b/docs/about/removed-features.rst diff --git a/docs/conf.py b/docs/conf.py index 42729e22bb..ff6e92c6e2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -87,7 +87,7 @@ master_doc = 'index' # General information about the project. project = u'QEMU' -copyright = u'2020, The QEMU Project Developers' +copyright = u'2021, The QEMU Project Developers' author = u'The QEMU Project Developers' # The version info for the project you're documenting, acts as replacement for diff --git a/docs/devel/index.rst b/docs/devel/index.rst index 40a7e2ee6f..153979caf4 100644 --- a/docs/devel/index.rst +++ b/docs/devel/index.rst @@ -1,15 +1,10 @@ -.. This is the top level page for the 'devel' manual. - - Developer Information ===================== -This manual documents various parts of the internals of QEMU. +This section of the manual documents various parts of the internals of QEMU. You only need to read it if you are interested in reading or modifying QEMU's source code. -Contents: - .. toctree:: :maxdepth: 2 :includehidden: diff --git a/docs/index.rst b/docs/index.rst index 763e3d0426..5f7eaaa632 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,6 +10,7 @@ Welcome to QEMU's documentation! :maxdepth: 2 :caption: Contents: + about/index system/index user/index tools/index diff --git a/docs/interop/index.rst b/docs/interop/index.rst index 219a5e5fc5..b1bab81e2e 100644 --- a/docs/interop/index.rst +++ b/docs/interop/index.rst @@ -1,13 +1,8 @@ -.. This is the top level page for the 'interop' manual. - - System Emulation Management and Interoperability ================================================ -This manual contains documents and specifications that are useful -for making QEMU interoperate with other software. - -Contents: +This section of the manual contains documents and specifications that +are useful for making QEMU interoperate with other software. .. toctree:: :maxdepth: 2 diff --git a/docs/meson.build b/docs/meson.build index 855e3916e9..300b134329 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -44,6 +44,7 @@ if build_docs meson.source_root() / 'docs/sphinx/qapidoc.py', meson.source_root() / 'docs/sphinx/qmp_lexer.py', qapi_gen_depends ] + sphinx_template_files = [ meson.source_root() / 'docs/_templates/footer.html' ] have_ga = have_tools and config_host.has_key('CONFIG_GUEST_AGENT') @@ -76,7 +77,7 @@ if build_docs output: 'docs.stamp', input: files('conf.py'), depfile: 'docs.d', - depend_files: sphinx_extn_depends, + depend_files: [ sphinx_extn_depends, sphinx_template_files ], command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@', '-Ddepfile_stamp=@OUTPUT0@', '-b', 'html', '-d', private_dir, diff --git a/docs/specs/index.rst b/docs/specs/index.rst index 7b08314d33..b7b08ea30d 100644 --- a/docs/specs/index.rst +++ b/docs/specs/index.rst @@ -1,11 +1,8 @@ -.. This is the top level page for the 'specs' manual - - System Emulation Guest Hardware Specifications ============================================== - -Contents: +This section of the manual contains specifications of +guest hardware that is specific to QEMU. .. toctree:: :maxdepth: 2 diff --git a/docs/system/arm/cubieboard.rst b/docs/system/arm/cubieboard.rst new file mode 100644 index 0000000000..344ff8cef9 --- /dev/null +++ b/docs/system/arm/cubieboard.rst @@ -0,0 +1,16 @@ +Cubietech Cubieboard (``cubieboard``) +===================================== + +The ``cubieboard`` model emulates the Cubietech Cubieboard, +which is a Cortex-A8 based single-board computer using +the AllWinner A10 SoC. + +Emulated devices: + +- Timer +- UART +- RTC +- EMAC +- SDHCI +- USB controller +- SATA controller diff --git a/docs/system/arm/emcraft-sf2.rst b/docs/system/arm/emcraft-sf2.rst new file mode 100644 index 0000000000..377e248720 --- /dev/null +++ b/docs/system/arm/emcraft-sf2.rst @@ -0,0 +1,15 @@ +Emcraft SmartFusion2 SOM kit (``emcraft-sf2``) +============================================== + +The ``emcraft-sf2`` board emulates the SmartFusion2 SOM kit from +Emcraft (M2S010). This is a System-on-Module from EmCraft systems, +based on the SmartFusion2 SoC FPGA from Microsemi Corporation. +The SoC is based on a Cortex-M4 processor. + +Emulated devices: + +- System timer +- System registers +- SPI controller +- UART +- EMAC diff --git a/docs/system/arm/highbank.rst b/docs/system/arm/highbank.rst new file mode 100644 index 0000000000..bb4965b367 --- /dev/null +++ b/docs/system/arm/highbank.rst @@ -0,0 +1,19 @@ +Calxeda Highbank and Midway (``highbank``, ``midway``) +====================================================== + +``highbank`` is a model of the Calxeda Highbank (ECX-1000) system, +which has four Cortex-A9 cores. + +``midway`` is a model of the Calxeda Midway (ECX-2000) system, +which has four Cortex-A15 cores. + +Emulated devices: + +- L2x0 cache controller +- SP804 dual timer +- PL011 UART +- PL061 GPIOs +- PL031 RTC +- PL022 synchronous serial port controller +- AHCI +- XGMAC ethernet controllers diff --git a/docs/system/index.rst b/docs/system/index.rst index 6092eb2d91..fda4b1b705 100644 --- a/docs/system/index.rst +++ b/docs/system/index.rst @@ -1,16 +1,11 @@ -.. This is the top level page for the 'system' manual. - - System Emulation ================ -This manual is the overall guide for users using QEMU +This section of the manual is the overall guide for users using QEMU for full system emulation (as opposed to user-mode emulation). This includes working with hypervisors such as KVM, Xen, Hax or Hypervisor.Framework. -Contents: - .. toctree:: :maxdepth: 3 @@ -40,7 +35,3 @@ Contents: targets security multi-process - deprecated - removed-features - build-platforms - license diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst index 705b8835e4..c0c2585c0a 100644 --- a/docs/system/target-arm.rst +++ b/docs/system/target-arm.rst @@ -85,6 +85,9 @@ undocumented; you can get a complete list by running arm/aspeed arm/sabrelite arm/digic + arm/cubieboard + arm/emcraft-sf2 + arm/highbank arm/musicpal arm/gumstix arm/nrf diff --git a/docs/tools/index.rst b/docs/tools/index.rst index d923834a73..ef6041a490 100644 --- a/docs/tools/index.rst +++ b/docs/tools/index.rst @@ -1,11 +1,8 @@ -.. This is the top level page for the 'tools' manual - - Tools ===== - -Contents: +This section of the manual documents QEMU's "tools": its +command line utilities and other standalone programs. .. toctree:: :maxdepth: 2 diff --git a/docs/user/index.rst b/docs/user/index.rst index a5b47459ec..9faa4badd7 100644 --- a/docs/user/index.rst +++ b/docs/user/index.rst @@ -1,15 +1,10 @@ -.. This is the top level page for the 'user' manual. - - User Mode Emulation =================== -This manual is the overall guide for users using QEMU +This section of the manual is the overall guide for users using QEMU for user-mode emulation. In this mode, QEMU can launch processes compiled for one CPU on another CPU. -Contents: - .. toctree:: :maxdepth: 2 diff --git a/target/arm/helper.c b/target/arm/helper.c index 910ace4274..0c07ca9837 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4106,8 +4106,9 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] = { .access = PL1_RW, .accessfn = access_tvm_trvm, .type = ARM_CP_ALIAS, .writefn = vmsa_ttbcr_write, .raw_writefn = vmsa_ttbcr_raw_write, - .bank_fieldoffsets = { offsetoflow32(CPUARMState, cp15.tcr_el[3]), - offsetoflow32(CPUARMState, cp15.tcr_el[1])} }, + /* No offsetoflow32 -- pass the entire TCR to writefn/raw_writefn. */ + .bank_fieldoffsets = { offsetof(CPUARMState, cp15.tcr_el[3]), + offsetof(CPUARMState, cp15.tcr_el[1])} }, REGINFO_SENTINEL }; @@ -4118,8 +4119,10 @@ static const ARMCPRegInfo ttbcr2_reginfo = { .name = "TTBCR2", .cp = 15, .opc1 = 0, .crn = 2, .crm = 0, .opc2 = 3, .access = PL1_RW, .accessfn = access_tvm_trvm, .type = ARM_CP_ALIAS, - .bank_fieldoffsets = { offsetofhigh32(CPUARMState, cp15.tcr_el[3]), - offsetofhigh32(CPUARMState, cp15.tcr_el[1]) }, + .bank_fieldoffsets = { + offsetofhigh32(CPUARMState, cp15.tcr_el[3].raw_tcr), + offsetofhigh32(CPUARMState, cp15.tcr_el[1].raw_tcr), + }, }; static void omap_ticonfig_write(CPUARMState *env, const ARMCPRegInfo *ri, diff --git a/target/arm/neon-ls.decode b/target/arm/neon-ls.decode index 0a2a0e15db..c5f364cbc0 100644 --- a/target/arm/neon-ls.decode +++ b/target/arm/neon-ls.decode @@ -41,8 +41,8 @@ VLD_all_lanes 1111 0100 1 . 1 0 rn:4 .... 11 n:2 size:2 t:1 a:1 rm:4 \ vd=%vd_dp # Neon load/store single structure to one lane -%imm1_5_p1 5:1 !function=plus1 -%imm1_6_p1 6:1 !function=plus1 +%imm1_5_p1 5:1 !function=plus_1 +%imm1_6_p1 6:1 !function=plus_1 VLDST_single 1111 0100 1 . l:1 0 rn:4 .... 00 n:2 reg_idx:3 align:1 rm:4 \ vd=%vd_dp size=0 stride=1 diff --git a/target/arm/neon-shared.decode b/target/arm/neon-shared.decode index df80e6ebf6..8e6bd0b61f 100644 --- a/target/arm/neon-shared.decode +++ b/target/arm/neon-shared.decode @@ -38,7 +38,7 @@ # which is 0 for fp16 and 1 for fp32 into a MO_* constant. # (Note that this is the reverse of the sense of the 1-bit size # field in the 3same_fp Neon insns.) -%vcadd_size 20:1 !function=plus1 +%vcadd_size 20:1 !function=plus_1 VCMLA 1111 110 rot:2 . 1 . .... .... 1000 . q:1 . 0 .... \ vm=%vm_dp vn=%vn_dp vd=%vd_dp size=%vcadd_size diff --git a/target/arm/sve.decode b/target/arm/sve.decode index a62c169f1a..c60b9f0fec 100644 --- a/target/arm/sve.decode +++ b/target/arm/sve.decode @@ -22,7 +22,7 @@ ########################################################################### # Named fields. These are primarily for disjoint fields. -%imm4_16_p1 16:4 !function=plus1 +%imm4_16_p1 16:4 !function=plus_1 %imm6_22_5 22:1 5:5 %imm7_22_16 22:2 16:5 %imm8_16_10 16:5 10:3 diff --git a/target/arm/translate-neon.c b/target/arm/translate-neon.c index a45616cb63..c53ab20fa4 100644 --- a/target/arm/translate-neon.c +++ b/target/arm/translate-neon.c @@ -28,11 +28,6 @@ #include "translate.h" #include "translate-a32.h" -static inline int plus1(DisasContext *s, int x) -{ - return x + 1; -} - static inline int neon_3same_fp_size(DisasContext *s, int x) { /* Convert 0==fp32, 1==fp16 into a MO_* value */ diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c index 35d838aa06..bc91a64171 100644 --- a/target/arm/translate-sve.c +++ b/target/arm/translate-sve.c @@ -70,11 +70,6 @@ static int tszimm_shl(DisasContext *s, int x) return x - (8 << tszimm_esz(s, x)); } -static inline int plus1(DisasContext *s, int x) -{ - return x + 1; -} - /* The SH bit is in bit 8. Extract the low 8 and shift. */ static inline int expand_imm_sh8s(DisasContext *s, int x) { |