Philippe Mathieu-Daudé
b14d064962
license: Update deprecated SPDX tag LGPL-2.0+ to LGPL-2.0-or-later
...
The 'LGPL-2.0+' license identifier has been deprecated since license
list version 2.0rc2 [1] and replaced by the 'LGPL-2.0-or-later' [2]
tag.
[1] https://spdx.org/licenses/LGPL-2.0+.html
[2] https://spdx.org/licenses/LGPL-2.0-or-later.html
Mechanical patch running:
$ sed -i -e s/LGPL-2.0+/LGPL-2.0-or-later/ \
$(git grep -l 'SPDX-License-Identifier: LGPL-2.0+$')
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2024-09-20 10:11:59 +03:00
Richard Henderson
d2a0c3a7f7
target/sparc: Add gen_trap_if_nofpu_fpexception
...
Model fp_exception state, in which only fp stores are allowed
until such time as the FQ has been flushed.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Tested-by: Carl Hauser <chauser@pullman.com >
2024-09-11 19:54:55 -07:00
Richard Henderson
29b99802aa
target/sparc: Implement STDFQ
...
Invalid encoding of addr should raise TT_ILL_INSN, so
check before supervisor, which might raise TT_PRIV_INSN.
Clear QNE after execution.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2340
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Tested-by: Carl Hauser <chauser@pullman.com >
2024-09-11 19:54:51 -07:00
Richard Henderson
5a165e2615
target/sparc: Add FSR_QNE to tb_flags
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Tested-by: Carl Hauser <chauser@pullman.com >
2024-09-11 19:54:47 -07:00
Carl Hauser
c35c8d4d1a
target/sparc: Populate sparc32 FQ when raising fp exception
...
Implement a single instruction floating point queue,
populated while delivering an fp exception.
Signed-off-by: Carl Hauser <chauser@pullman.com >
[rth: Split from a larger patch]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Tested-by: Carl Hauser <chauser@pullman.com >
2024-09-11 19:54:42 -07:00
Carl Hauser
e412e9973a
target/sparc: Add FQ and FSR.QNE
...
Add support for, and migrate, a single-entry fp
instruction queue for sparc32.
Signed-off-by: Carl Hauser <chauser@pullman.com >
[rth: Split from a larger patch;
adjust representation with union;
add migration state]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Tested-by: Carl Hauser <chauser@pullman.com >
2024-09-11 19:54:35 -07:00
Richard Henderson
12d36294a2
target/sparc: Restrict STQF to sparcv9
...
Prior to sparcv9, the same encoding was STDFQ.
Cc: qemu-stable@nongnu.org
Fixes: 06c060d9e5
("target/sparc: Move simple fp load/store to decodetree")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240816072311.353234-2-richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-08-20 00:49:14 +02:00
Yao Xingtao
2a48b590f7
sparc/ldst_helper: make range overlap check more readable
...
use ranges_overlap() instead of open-coding the overlap check to improve
the readability of the code.
Signed-off-by: Yao Xingtao <yaoxt.fnst@fujitsu.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240722040742.11513-9-yaoxt.fnst@fujitsu.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-07-23 20:30:36 +02:00
Peter Maydell
4f7b1ecba8
target: Set TCGCPUOps::cpu_exec_halt to target's has_work implementation
...
Currently the TCGCPUOps::cpu_exec_halt method is optional, and if it
is not set then the default is to call the CPUClass::has_work
method (which has an identical function signature).
We would like to make the cpu_exec_halt method mandatory so we can
remove the runtime check and fallback handling. In preparation for
that, make all the targets which don't need special handling in their
cpu_exec_halt set it to their cpu_has_work implementation instead of
leaving it unset. (This is every target except for arm and i386.)
In the riscv case this requires us to make the function not
be local to the source file it's defined in.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-07-11 11:41:34 +01:00
Clément Chigot
6b4965373e
target/sparc: use signed denominator in sdiv helper
...
The result has to be done with the signed denominator (b32) instead of
the unsigned value passed in argument (b).
Cc: qemu-stable@nongnu.org
Fixes: 1326010322
("target/sparc: Remove CC_OP_DIV")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2319
Signed-off-by: Clément Chigot <chigot@adacore.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240606144331.698361-1-chigot@adacore.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-19 13:50:22 -07:00
Richard Henderson
b12b722743
target/sparc: Enable VIS4 feature bit
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:11:17 -07:00
Richard Henderson
eeb3f592cb
target/sparc: Implement monitor ASIs
...
Ignore the "monitor" portion and treat them the same
as their base ASIs.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:11:17 -07:00
Richard Henderson
6fbc032cbc
target/sparc: Implement MWAIT
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:10:02 -07:00
Richard Henderson
56f2ef9c79
target/sparc: Implement SUBXC, SUBXCcc
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:10:02 -07:00
Richard Henderson
db11dfea83
target/sparc: Implement FPMIN, FPMAX
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:10:02 -07:00
Richard Henderson
b3c934dd34
target/sparc: Implement VIS4 comparisons
...
VIS4 completes the set, adding missing signed 8-bit ops
and missing unsigned 16 and 32-bit ops.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:09:36 -07:00
Richard Henderson
b99c1bbddd
target/sparc: Implement 8-bit FPADD, FPADDS, and FPADDUS
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:09:36 -07:00
Richard Henderson
b2b4849336
target/sparc: Implement FALIGNDATAi
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:54 -07:00
Richard Henderson
90b1433da8
target/sparc: Add feature bit for VIS4
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
68a414e99d
target/sparc: Implement IMA extension
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
deadbb14ba
target/sparc: Enable VIS3 feature bit
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
029b0283df
target/sparc: Implement XMULX
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
680af1b4a5
target/sparc: Implement UMULXHI
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
7d5ebd8ffe
target/sparc: Implement PDISTN
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:39 -07:00
Richard Henderson
09b157e628
target/sparc: Implement MOVsTOw, MOVdTOx, MOVwTOs, MOVxTOd
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:16 -07:00
Richard Henderson
875ce3929a
target/sparc: Implement LZCNT
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:08:16 -07:00
Richard Henderson
298c52f784
target/sparc: Implement LDXEFSR
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:07:34 -07:00
Richard Henderson
fbc5c8d4e8
target/sparc: Implement FSLL, FSRL, FSRA, FSLAS
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:07:34 -07:00
Richard Henderson
669e077437
target/sparc: Implement FPCMPEQ8, FPCMPNE8, FPCMPULE8, FPCMPUGT8
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:06:32 -07:00
Richard Henderson
0d1d3aaf64
target/sparc: Implement FPADDS, FPSUBS
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:53 -07:00
Richard Henderson
bc3f14a9ed
target/sparc: Implement FPADD64, FPSUB64
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:53 -07:00
Richard Henderson
d6ff1ccb45
target/sparc: Implement FMEAN16
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:53 -07:00
Richard Henderson
1d3ed3d728
target/sparc: Implement FLCMP
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:53 -07:00
Richard Henderson
3d50b7287e
target/sparc: Implement FHADD, FHSUB, FNHADD, FNADD, FNMUL
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:53 -07:00
Richard Henderson
7837185e40
target/sparc: Implement FCHKSM16
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:41 -07:00
Richard Henderson
c973b4e8df
target/sparc: Implement CMASK instructions
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:11 -07:00
Richard Henderson
015fc6fcdb
target/sparc: Implement ADDXC, ADDXCcc
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
3335a04806
target/sparc: Add feature bits for VIS 3
...
The manual separates VIS 3 and VIS 3B, even though they are both
present in all extant cpus. For clarity, let the translator
match the manual but otherwise leave them on the same feature bit.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
4fd71d19ac
target/sparc: Implement FMAf extension
...
Rearrange PDIST so that do_dddd is general purpose and may
be re-used for FMADDd etc. Add pickNaN and pickNaNMulAdd.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
28c131a34d
target/sparc: Use gvec for VIS1 parallel add/sub
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
1210a0367d
target/sparc: Remove cpu_fpr[]
...
Use explicit loads and stores to env instead.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
52f46d4627
target/sparc: Remove gen_dest_fpr_D
...
Replace with tcg_temp_new_i64.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
0bba7572d4
target/sparc: Perform DFPREG/QFPREG in decodetree
...
Form the proper register decoding from the start.
Because we're removing the translation from the inner-most
gen_load_fpr_* and gen_store_fpr_* routines, this must be
done for all insns at once.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
b5c960470d
target/sparc: Fix helper_fmul8ulx16
...
This operation returns the high 16 bits of a 24-bit multiply
that has been sign-extended to 32 bits.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
04d5bf3041
target/sparc: Fix do_dc
...
Apply DFPREG to compute the register number.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
43db583802
target/sparc: Rewrite gen_edge
...
Drop the tables and compute the left and right edges directly.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
fa9079a86d
target/sparc: Fix ARRAY8
...
Follow the Oracle Sparc 2015 implementation note and bound
the input value of N to 5 from the lower 3 bits of rs2.
Spell out all of the intermediate values, matching the diagram
in the manual. Fix extraction of upper_x and upper_y for N=0.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-06-05 09:05:10 -07:00
Richard Henderson
962a145cdc
accel/tcg: Provide default implementation of disas_log
...
Almost all of the disas_log implementations are identical.
Unify them within translator_loop.
Drop extra Priv/Virt logging from target/riscv.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-15 08:55:18 +02:00
Richard Henderson
e116b92d01
Merge tag 'qemu-sparc-20240506' of https://github.com/mcayland/qemu into staging
...
qemu-sparc queue
# -----BEGIN PGP SIGNATURE-----
#
# iQFSBAABCgA8FiEEzGIauY6CIA2RXMnEW8LFb64PMh8FAmY4wZceHG1hcmsuY2F2
# ZS1heWxhbmRAaWxhbmRlLmNvLnVrAAoJEFvCxW+uDzIftQsH+wfIWymTdQMowfM6
# Ze/T8KODn+MqU5eg25VPSTojnmr7LFaCj2yK6zWX61RwIqtMc3NaxX0G7ksW12/g
# 35ACqiEEd5WRDhAtVhj5Wp+WEDoR4AD3LWIaN7a/qjO3qb78l7Bujw3qXzGSq4lQ
# hST6dTgMwn5LhJOyz+5dORVUK1UZSBuDxHeKRHgdoFi6yqGQ5bao5TpaDYOnGSbx
# 8KPrAFfXG1T6xRS8Ih5HXAPE5VJztLFPiVtCTTrETDP/o8EzvOZj5y/nJVZXXC3N
# 57g+QyJX9EdrRZvobef4LnNnoZyiqG+uQNugglqZqjiiLjl6AzYxI+ed0hU+cZR9
# pz76Hr8=
# =i2cV
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 06 May 2024 04:40:07 AM PDT
# gpg: using RSA key CC621AB98E82200D915CC9C45BC2C56FAE0F321F
# gpg: issuer "mark.cave-ayland@ilande.co.uk "
# gpg: Good signature from "Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >" [full]
* tag 'qemu-sparc-20240506' of https://github.com/mcayland/qemu :
target/sparc: Split out do_ms16b
target/sparc: Fix FPMERGE
target/sparc: Fix FMULD8*X16
target/sparc: Fix FMUL8x16A{U,L}
target/sparc: Fix FMUL8x16
target/sparc: Fix FEXPAND
linux-user/sparc: Add more hwcap bits for sparc64
hw/sparc64: set iommu_platform=on for virtio devices attached to the sun4u machine
docs/about: Deprecate the old "UltraSparc" CPU names that contain a "+"
docs/system/target-sparc: Improve the Sparc documentation
target/sparc/cpu: Avoid spaces by default in the CPU names
target/sparc/cpu: Rename the CPU models with a "+" in their names
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-06 10:19:56 -07:00
Philippe Mathieu-Daudé
b254c342cf
accel/tcg: Access tcg_cflags with getter / setter
...
Access the CPUState::tcg_cflags via tcg_cflags_has() and
tcg_cflags_set() helpers.
Mechanical change using the following Coccinelle spatch script:
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags & flags
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- (tcg_cflags_has(cpu, flags))
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags |= flags;
+ tcg_cflags_set(cpu, flags);
Then manually moving the declarations, and adding both
tcg_cflags_has() and tcg_cflags_set() definitions.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-15-philmd@linaro.org >
2024-05-06 11:21:05 +02:00