Jason Wang
74b3e46630
virtio: add property to enable packed virtqueue
...
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Reviewed-by: Jens Freimann <jfreimann@redhat.com >
Message-Id: <20191025083527.30803-9-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Jason Wang
dfea793045
vhost_net: enable packed ring support
...
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Reviewed-by: Jens Freimann <jfreimann@redhat.com >
Message-Id: <20191025083527.30803-8-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Jason Wang
683f766567
virtio: event suppression support for packed ring
...
This patch implements event suppression through device/driver
area. Please refer virtio specification for more information.
Signed-off-by: Wei Xu <wexu@redhat.com >
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Message-Id: <20191025083527.30803-7-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Jason Wang
86044b24e8
virtio: basic packed virtqueue support
...
This patch implements basic support for the packed virtqueue. Compare
the split virtqueue which has three rings, packed virtqueue only have
one which is supposed to have better cache utilization and more
hardware friendly.
Please refer virtio specification for more information.
Signed-off-by: Wei Xu <wexu@redhat.com >
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Message-Id: <20191025083527.30803-6-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Eugenio Pérez
522bbb191c
virtio: Free rnd virqueue at unrealize()
...
The function virtio_del_queue was not called at unrealize() callback.
This was detected due to add an allocated element on the vq introduce
in future commits (used_elems) and running address sanitizer memory
leak detector.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Message-Id: <20191025083527.30803-5-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Eugenio Pérez
4a0117cf6e
virtio: Free blk virqueues at unrealize()
...
The function virtio_del_queue was not called at unrealize() callback.
This was detected due to add an allocated element on the vq introduce
in future commits (used_elems) and running address sanitizer memory
leak detector.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Message-Id: <20191025083527.30803-4-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Wei Xu
f90cda636d
virtio: device/driver area size calculation refactor for split ring
...
There is slight size difference between split/packed rings.
This is the refactor of split ring as well as a helper to expanding
device and driver area size calculation for packed ring.
Signed-off-by: Wei Xu <wexu@redhat.com >
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Reviewed-by: Jens Freimann <jfreimann@redhat.com >
Message-Id: <20191025083527.30803-3-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Wei Xu
a40dcec9fc
virtio: basic structure for packed ring
...
Define packed ring structure according to Qemu nomenclature,
field data(wrap counter, etc) are also included.
Signed-off-by: Wei Xu <wexu@redhat.com >
Signed-off-by: Jason Wang <jasowang@redhat.com >
Signed-off-by: Eugenio Pérez <eperezma@redhat.com >
Reviewed-by: Jens Freimann <jfreimann@redhat.com >
Message-Id: <20191025083527.30803-2-eperezma@redhat.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2019-10-25 07:46:22 -04:00
Philippe Mathieu-Daudé
fabb862f76
hw/rtc/aspeed_rtc: Remove unused includes
...
The system <stdint.h> include is already provided by "osdep.h"
(the scripts/clean-includes file clean such headers).
Commit 64552b6be4 suggests we don't need to include "hw/irq.h":
Move the qemu_irq and qemu_irq_handler typedefs from hw/irq.h to
qemu/typedefs.h, and then include hw/irq.h only where it's still
needed.
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-15-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:35:28 +02:00
Philippe Mathieu-Daudé
2330113bf5
hw/rtc/xlnx-zynqmp-rtc: Remove unused "ptimer.h" include
...
The "hw/ptimer.h" header is not used, remove it.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-14-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:34:12 +02:00
Philippe Mathieu-Daudé
7ffcb73d3f
hw/rtc/mc146818: Include mc146818rtc_regs.h a bit less
...
Only 2 source files require the "mc146818rtc_regs.h" header.
Instead of having it processed 12 times, by all objects
using "mc146818rtc.h", include it directly where used.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191003230404.19384-13-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:33:07 +02:00
Philippe Mathieu-Daudé
ea5dcf4e1d
hw: Move Aspeed RTC from hw/timer/ to hw/rtc/ subdirectory
...
Move RTC devices under the hw/rtc/ subdirectory.
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-12-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:31:44 +02:00
Philippe Mathieu-Daudé
7f0df1ccdf
hw: Move Exynos4210 RTC from hw/timer/ to hw/rtc/ subdirectory
...
Move RTC devices under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-11-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:29:18 +02:00
Philippe Mathieu-Daudé
8035f85ef3
hw: Move Xilinx ZynqMP RTC from hw/timer/ to hw/rtc/ subdirectory
...
Move RTC devices under the hw/rtc/ subdirectory.
Remove Alistair outdated email address (see commit c22e580c2a ).
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-10-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:28:01 +02:00
Philippe Mathieu-Daudé
64e85ffde8
hw: Move DS1338 device from hw/timer/ to hw/rtc/ subdirectory
...
The DS1338 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-9-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:26:35 +02:00
Philippe Mathieu-Daudé
6a648a5f23
hw: Move TWL92230 device from hw/timer/ to hw/rtc/ subdirectory
...
The TWL92230 is an "energy management device" companion with
a RTC. Since we mostly model the RTC, move it under the hw/rtc/
subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-8-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:24:50 +02:00
Philippe Mathieu-Daudé
2811ac3059
hw: Move sun4v hypervisor RTC from hw/timer/ to hw/rtc/ subdirectory
...
Move RTC devices under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Artyom Tarasenko <atar4qemu@gmail.com >
Message-Id: <20191003230404.19384-7-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:23:15 +02:00
Philippe Mathieu-Daudé
de04c31d31
hw: Move M41T80 device from hw/timer/ to hw/rtc/ subdirectory
...
The M41T80 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191003230404.19384-6-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:22:12 +02:00
Philippe Mathieu-Daudé
819ce6b2a5
hw: Move M48T59 device from hw/timer/ to hw/rtc/ subdirectory
...
The M48T59 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191003230404.19384-5-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:20:45 +02:00
Philippe Mathieu-Daudé
bcdb90640a
hw: Move MC146818 device from hw/timer/ to hw/rtc/ subdirectory
...
The MC146818 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Use copyright statement from 80cabfad16 for "hw/rtc/mc146818rtc.h".
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Acked-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191003230404.19384-4-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:13:10 +02:00
Philippe Mathieu-Daudé
877c181cd4
hw: Move PL031 device from hw/timer/ to hw/rtc/ subdirectory
...
The PL031 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20191003230404.19384-3-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:10:27 +02:00
Philippe Mathieu-Daudé
2baa483bb7
hw/timer: Compile devices not target-dependent as common object
...
All these devices do not contain any target-specific. While most
of them are arch-specific, they are shared between different
targets of the same arch family (ARM and AArch64, MIPS32/MIPS64,
endianess, ...).
Put them into common-obj-y to compile them once for all targets.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191003230404.19384-2-philmd@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:10:27 +02:00
Frediano Ziglio
5bd3435442
qemu-timer: reuse MIN macro in qemu_timeout_ns_to_ms
...
Signed-off-by: Frediano Ziglio <fziglio@redhat.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20191023122652.2999-3-fziglio@redhat.com >
[lv: removed the two useless casts]
Reviewed-by: Eric Blake <eblake@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 20:10:18 +02:00
Frediano Ziglio
105e1023a8
event_notifier: avoid dandling file descriptor in event_notifier_cleanup
...
If rfd is equal to wfd the file descriptor is closed but
rfd will still have the closed value.
The EventNotifier structure should not be used again after calling
event_notifier_cleanup or should be initialized again but make
sure to not have dandling file descriptors around.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20191023122652.2999-2-fziglio@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 19:26:52 +02:00
Frediano Ziglio
765e35d71f
util/async: avoid useless cast
...
event_notifier_dummy_cb is already compatible with EventNotifierHandler.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20191023122652.2999-1-fziglio@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 19:26:05 +02:00
Mao Zhongyi
5892cfc719
pci_bridge: fix a typo in comment
...
Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20190909031446.1331810-1-maozhongyi@cmss.chinamobile.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 19:24:56 +02:00
Han Han
bbd9e6985f
qemu-options.hx: Update for reboot-timeout parameter
...
Since ee5d0f89d , -1 is not valid for the value of reboot-timeout. Update
that in qemu-options doc.
Signed-off-by: Han Han <hhan@redhat.com >
Reviewed-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20191015151451.727323-1-hhan@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2019-10-24 19:22:47 +02:00
Peter Maydell
5e3478925d
hw/timer/slavio_timer: Remove useless check for NULL t->timer
...
In the slavio timer device, the ptimer TimerContext::timer is
always created by slavio_timer_init(), so there's no need to
check it for NULL; remove the single unneeded NULL check.
This will be useful to avoid compiler/Coverity errors when
a subsequent change adds a use of t->timer before the location
we currently do the NULL check.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191021134357.14266-2-peter.maydell@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:29 +01:00
Peter Maydell
e982ba0524
hw/dma/xilinx_axidma.c: Switch to transaction-based ptimer API
...
Switch the xilinx_axidma code away from bottom-half based ptimers to
the new transaction-based ptimer API. This just requires adding
begin/commit calls around the various places that modify the ptimer
state, and using the new ptimer_init() function to create the timer.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Message-id: 20191017132122.4402-4-peter.maydell@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:29 +01:00
Peter Maydell
8d986979be
hw/timer/xilinx_timer.c: Switch to transaction-based ptimer API
...
Switch the xilinx_timer code away from bottom-half based ptimers to
the new transaction-based ptimer API. This just requires adding
begin/commit calls around the various places that modify the ptimer
state, and using the new ptimer_init() function to create the timer.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Message-id: 20191017132122.4402-3-peter.maydell@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Peter Maydell
383a6753b2
hw/net/fsl_etsec/etsec.c: Switch to transaction-based ptimer API
...
Switch the fsl_etsec code away from bottom-half based ptimers to
the new transaction-based ptimer API. This just requires adding
begin/commit calls around the various places that modify the ptimer
state, and using the new ptimer_init() function to create the timer.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Message-id: 20191017132122.4402-2-peter.maydell@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
e979972a6a
target/arm: Rely on hflags correct in cpu_get_tb_cpu_state
...
This is the payoff.
From perf record -g data of ubuntu 18 boot and shutdown:
BEFORE:
- 23.02% 2.82% qemu-system-aar [.] helper_lookup_tb_ptr
- 20.22% helper_lookup_tb_ptr
+ 10.05% tb_htable_lookup
- 9.13% cpu_get_tb_cpu_state
3.20% aa64_va_parameters_both
0.55% fp_exception_el
- 11.66% 4.74% qemu-system-aar [.] cpu_get_tb_cpu_state
- 6.96% cpu_get_tb_cpu_state
3.63% aa64_va_parameters_both
0.60% fp_exception_el
0.53% sve_exception_el
AFTER:
- 16.40% 3.40% qemu-system-aar [.] helper_lookup_tb_ptr
- 13.03% helper_lookup_tb_ptr
+ 11.19% tb_htable_lookup
0.55% cpu_get_tb_cpu_state
0.98% 0.71% qemu-system-aar [.] cpu_get_tb_cpu_state
0.87% 0.24% qemu-system-aar [.] rebuild_hflags_a64
Before, helper_lookup_tb_ptr is the second hottest function in the
application, consuming almost a quarter of the runtime. Within the
entire execution, cpu_get_tb_cpu_state consumes about 12%.
After, helper_lookup_tb_ptr has dropped to the fourth hottest function,
with consumption dropping to a sixth of the runtime. Within the
entire execution, cpu_get_tb_cpu_state has dropped below 1%, and the
supporting function to rebuild hflags also consumes about 1%.
Assertions are retained for --enable-debug-tcg.
Tested-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-25-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
37bf16c645
linux-user/arm: Rebuild hflags for TARGET_WORDS_BIGENDIAN
...
Continue setting, but not relying upon, env->hflags.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-24-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
62fb8a4789
linux-user/aarch64: Rebuild hflags for TARGET_WORDS_BIGENDIAN
...
Continue setting, but not relying upon, env->hflags.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-23-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
080f2730cd
target/arm: Rebuild hflags for M-profile NVIC
...
Continue setting, but not relying upon, env->hflags.
Suggested-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-22-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
873be7b69d
target/arm: Rebuild hflags for M-profile
...
Continue setting, but not relying upon, env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-21-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
2e5dcf3628
target/arm: Rebuild hflags at Xscale SCTLR writes
...
Continue setting, but not relying upon, env->hflags.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-20-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
7b2625eba2
target/arm: Rebuild hflags at CPSR writes
...
Continue setting, but not relying upon, env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-19-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
69d66864f7
target/arm: Rebuild hflags at MSR writes
...
Continue setting, but not relying upon, env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-18-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
a8a79c7a07
target/arm: Rebuild hflags at EL changes
...
Begin setting, but not relying upon, env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-17-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
14f3c58826
target/arm: Add HELPER(rebuild_hflags_{a32, a64, m32})
...
This functions are given the mode and el state of the cpu
and writes the computed value to env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-16-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
9b253fe554
target/arm: Hoist store to cs_base in cpu_get_tb_cpu_state
...
By performing this store early, we avoid having to save and restore
the register holding the address around any function calls.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-15-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
164690b29f
target/arm: Split out arm_mmu_idx_el
...
Avoid calling arm_current_el() twice.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-14-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
3d74e2e9ff
target/arm: Add arm_rebuild_hflags
...
This function assumes nothing about the current state of the cpu,
and writes the computed value to env->hflags.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-13-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
0a54d68e21
target/arm: Hoist computation of TBFLAG_A32.VFPEN
...
There are 3 conditions that each enable this flag. M-profile always
enables; A-profile with EL1 as AA64 always enables. Both of these
conditions can easily be cached. The final condition relies on the
FPEXC register which we are not prepared to cache.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-12-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:28 +01:00
Richard Henderson
60e12c3776
target/arm: Simplify set of PSTATE_SS in cpu_get_tb_cpu_state
...
Hoist the variable load for PSTATE into the existing test vs is_a64.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-11-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:27 +01:00
Richard Henderson
bbad7c62d4
target/arm: Hoist XSCALE_CPAR, VECLEN, VECSTRIDE in cpu_get_tb_cpu_state
...
We do not need to compute any of these values for M-profile.
Further, XSCALE_CPAR overlaps VECSTRIDE so obviously the two
sets must be mutually exclusive.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-10-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:27 +01:00
Richard Henderson
83f4baef3e
target/arm: Split out rebuild_hflags_aprofile
...
Create a function to compute the values of the TBFLAG_ANY bits
that will be cached, and are used by A-profile.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-9-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:27 +01:00
Richard Henderson
c747224cc3
target/arm: Split out rebuild_hflags_a32
...
Currently a trivial wrapper for rebuild_hflags_common_32.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-8-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:27 +01:00
Richard Henderson
9550d1bd88
target/arm: Reduce tests vs M-profile in cpu_get_tb_cpu_state
...
Hoist the computation of some TBFLAG_A32 bits that only apply to
M-profile under a single test for ARM_FEATURE_M.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-id: 20191023150057.25731-7-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2019-10-24 17:16:27 +01:00