Richard Henderson
c26368532d
target/sparc: Move UDIV, SDIV to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
4ee85ea94b
target/sparc: Move UDIVX, SDIVX to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
dfebb950da
target/sparc: Move SUBC to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
b5372650e2
target/sparc: Move UMUL, SMUL to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
22188d7da8
target/sparc: Move MULX to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
420a187d80
target/sparc: Move ADDC to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
428881deba
target/sparc: Move basic arithmetic to decodetree
...
Move ADD, AND, OR, XOR, SUB, ANDN, ORN, XORN.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
2da789ded5
target/sparc: Remove cpu_hintp, cpu_htba, cpu_hver, cpu_ssr, cpu_ver
...
Use direct loads and stores to env instead.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
577efa4557
target/sparc: Remove cpu_tick_cmpr, cpu_stick_cmpr, cpu_hstick_cmpr
...
Use direct loads and stores to env instead.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
cd6269f7c9
target/sparc: Remove cpu_wim
...
Use direct loads and stores to env instead.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
bb97f2f5d7
target/sparc: Move WRTBR, WRHPR to decodetree
...
Implement htstate in the obvious way.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
9422278ef8
target/sparc: Move WRWIM, WRPR to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
25524734c6
target/sparc: Move WRPSR, SAVED, RESTORED to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
0faef01b39
target/sparc: Move WRASR to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
e8325dc02d
target/sparc: Move RDTBR, FLUSHW to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
5d617bfba0
target/sparc: Move RDWIM, RDPR to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
668bb9b755
target/sparc: Move RDPSR, RDHPR to decodetree
...
Implement htstate in the obvious way.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/847
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
af25071c1d
target/sparc: Move RDASR, STBAR, MEMBAR to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
3037663616
target/sparc: Move Tcc to decodetree
...
Use the new delay_exceptionv function in the implementation.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
6d2a076842
target/sparc: Move SETHI to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
9d4e2bc761
target/sparc: Pass DisasCompare to advance_jump_cond
...
Fold the condition into the branch or movcond when possible.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:13 -07:00
Richard Henderson
6b3e4cc685
target/sparc: Merge gen_branch_[an] with only caller
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
d547193616
target/sparc: Merge gen_fcond with only caller
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
1ea9c62a5e
target/sparc: Merge gen_cond with only caller
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
45196ea4f4
target/sparc: Move FBPfcc and FBfcc to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
ab9ffe988a
target/sparc: Move BPr to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
276567aaf6
target/sparc: Move BPcc and Bicc to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
23ada1b16f
target/sparc: Move CALL to decodetree
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
b1bc09ea6b
target/sparc: Define AM_CHECK for sparc32
...
Define as false, which allows some ifdef removal.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
878cc6773a
target/sparc: Add decodetree infrastructure
...
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
5f25b383a8
target/sparc: Remove sparcv7 cpu features
...
The oldest supported cpu is the microsparc 1; all other cpus
use CPU_DEFAULT_FEATURES. Remove the features that must always
be present for sparcv7: FLOAT, SWAP, FLUSH, FSQRT, FMUL.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
186e78905a
target/sparc: Implement check_align inline
...
Emit the exception at the end of the translation block,
so that the non-exception case can fall through.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
930f1865cc
target/sparc: Clear may_lookup for npc == DYNAMIC_PC
...
With pairs of jmp+rett, pc == DYNAMIC_PC_LOOKUP and
npc == DYNAMIC_PC. Make sure that we exit for interrupts.
Cc: qemu-stable@nongnu.org
Fixes: 633c42834c
("target/sparc: Introduce DYNAMIC_PC_LOOKUP")
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-25 01:01:12 -07:00
Richard Henderson
b77af26e97
accel/tcg: Replace CPUState.env_ptr with cpu_env()
...
Reviewed-by: Anton Johansson <anjo@rev.ng >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-04 11:03:54 -07:00
Richard Henderson
ad75a51e84
tcg: Rename cpu_env to tcg_env
...
Allow the name 'cpu_env' to be used for something else.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-03 08:01:02 -07:00
Philippe Mathieu-Daudé
026ad97e07
target/translate: Remove unnecessary 'exec/cpu_ldst.h' header
...
All these files only access the translator_ld/st API declared
in "exec/translator.h". The CPU ld/st API from declared in
"exec/cpu_ldst.h" is not used, remove it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230828221314.18435-5-philmd@linaro.org >
2023-08-31 19:47:43 +02:00
Richard Henderson
e3ebbade58
target/sparc: Use tcg_gen_movcond_i64 in gen_edge
...
The setcond + neg + or sequence is a complex method of
performing a conditional move.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-24 11:22:42 -07:00
Richard Henderson
44a7c2ecd4
target/sparc: Use tcg_gen_lookup_and_goto_ptr for v9 WRASI
...
We incorporate %asi into tb->flags so that we may generate
inline code for the many ASIs for which it is easy to do so.
Setting %asi is common for e.g. memcpy and memset performing
block copy and clear, so it is worth noticing this case.
We must end the TB but do not need to return to the main loop.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-9-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:57 +01:00
Richard Henderson
553338dc32
target/sparc: Use DYNAMIC_PC_LOOKUP for v9 RETURN
...
After the register window unwind, this is for a plain indirect
branch with no further side effects.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-8-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:57 +01:00
Richard Henderson
831543fc76
target/sparc: Use DYNAMIC_PC_LOOKUP for JMPL
...
This is for a plain indirect branch with no other side effects.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-7-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:57 +01:00
Richard Henderson
99c82c479b
target/sparc: Use DYNAMIC_PC_LOOKUP for conditional branches
...
When resolving JUMP_PC, we know this is for a plain branch
with no other side effects.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-6-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:57 +01:00
Richard Henderson
633c42834c
target/sparc: Introduce DYNAMIC_PC_LOOKUP
...
Create a new artificial "next pc" which also indicates
that nothing has changed within the cpu state which
requires returning to the main loop.
Pipe this new value though all pc/npc checks.
Do not produce this new value yet.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230628071202.230991-5-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:44 +01:00
Richard Henderson
0c2e96c170
target/sparc: Drop inline markers from translate.c
...
Let the compiler decide about inlining.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-4-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:02 +01:00
Richard Henderson
611a1684d0
target/sparc: Fix npc comparison in sparc_tr_insn_start
...
During translation, npc == address, DYNAMIC_PC, or JUMP_PC.
It is only the encoding between here and sparc_restore_state_to_opc
that considers JUMP_PC to be a bit within a larger value.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-3-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:02 +01:00
Richard Henderson
f67ccb2f77
target/sparc: Use tcg_gen_lookup_and_goto_ptr in gen_goto_tb
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230628071202.230991-2-richard.henderson@linaro.org >
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
2023-06-28 10:53:02 +01:00
Richard Henderson
dfd1b81274
accel/tcg: Introduce translator_io_start
...
New wrapper around gen_io_start which takes care of the USE_ICOUNT
check, as well as marking the DisasContext to end the TB.
Remove exec/gen-icount.h.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-06-05 12:04:29 -07:00
Richard Henderson
d53106c997
tcg: Pass TCGHelperInfo to tcg_gen_callN
...
In preparation for compiling tcg/ only once, eliminate
the all_helpers array. Instantiate the info structs for
the generic helpers in accel/tcg/, and the structs for
the target-specific helpers in each translate.c.
Since we don't see all of the info structs at startup,
initialize at first use, using g_once_init_* to make
sure we don't race while doing so.
Reviewed-by: Anton Johansson <anjo@rev.ng >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-06-05 12:04:29 -07:00
Richard Henderson
645e3a812a
tcg: Remove DEBUG_DISAS
...
This had been set since the beginning, is never undefined,
and it would seem to be harmful to debugging to do so.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-05-23 18:54:55 -07:00
Richard Henderson
316b6783f1
target/sparc: Use MO_ALIGN where required
...
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-05-05 17:09:47 +01:00
Richard Henderson
0814911883
target/sparc: Finish conversion to tcg_gen_qemu_{ld, st}_*
...
Convert away from the old interface with the implicit
MemOp argument.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Anton Johansson <anjo@rev.ng >
Message-Id: <20230502135741.1158035-8-richard.henderson@linaro.org >
2023-05-05 17:05:28 +01:00