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
554abe47c7
target/sparc: Partition cpu features
...
In the sparc32 binaries, do not advertise features only available
to sparc64, so they cannot be enabled. In the sparc64 binaries,
do not advertise features mandatory in v9, so they cannot be disabled.
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
de1f52032f
target/sparc: Use CPU_FEATURE_BIT_* for cpu properties
...
Use symbols not integer constants for the bit positions.
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
bd7ff659a7
target/sparc: Define features via cpu-feature.h.inc
...
Manage feature bits automatically.
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
ec860e5d03
configs: Enable MTTCG for sparc, sparc64
...
This will be of small comfort to sparc64, because both
sun4u and sun4v board models force max_cpus = 1.
But it does enable actual smp for sparc32 sun4m.
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
e0f46055a1
target/sparc: Set TCG_GUEST_DEFAULT_MO
...
Always use TSO, per the Oracle 2015 manual.
This is slightly less restrictive than the TCG_MO_ALL default,
and happens to match the i386 model, which will eliminate a few
extra barriers on that host.
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
d9125cf27c
target/sparc: Avoid helper_raise_exception in helper_st_asi
...
Always use cpu_raise_exception_ra with GETPC for unwind.
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
Philippe Mathieu-Daudé
dd41ce7a6f
hw/arm/aspeed: Move AspeedSoCState::cpu/vic to Aspeed2400SoCState
...
The ARM array and VIC peripheral are only used by the
2400 series, remove them from the common AspeedSoCState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
c17fc02571
hw/arm/aspeed: Move AspeedSoCState::a7mpcore to Aspeed2600SoCState
...
The v7-A cluster is specific to the Aspeed 2600 series,
remove it from the common AspeedSoCState.
The ARM cores belong to the MP cluster, but the array
is currently used by TYPE_ASPEED2600_SOC. We'll clean
that soon, but for now keep it in Aspeed2600SoCState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
a0c2103070
hw/arm/aspeed: Move AspeedSoCState::armv7m to Aspeed10x0SoCState
...
The v7-M core is specific to the Aspeed 10x0 series,
remove it from the common AspeedSoCState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
24a88476ff
hw/arm/aspeed: Check 'memory' link is set in common aspeed_soc_realize
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
1a94fae4c1
hw/arm/aspeed: Introduce TYPE_ASPEED2400_SOC
...
TYPE_ASPEED2400_SOC inherits from TYPE_ASPEED_SOC.
In few commits we'll add more fields, but to keep
review process simple, don't add any yet.
TYPE_ASPEED_SOC is common to various Aspeed SoCs,
define it in aspeed_soc_common.c.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
4fc5e8065b
hw/arm/aspeed: Introduce TYPE_ASPEED2600_SOC
...
TYPE_ASPEED2600_SOC inherits from TYPE_ASPEED_SOC.
In few commits we'll add more fields, but to keep
review process simple, don't add any yet.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
df4ab0764d
hw/arm/aspeed: Introduce TYPE_ASPEED10X0_SOC
...
TYPE_ASPEED10X0_SOC inherits from TYPE_ASPEED_SOC.
In few commits we'll add more fields, but to keep
review process simple, don't add any yet.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
3c392e87df
hw/arm/aspeed: Dynamically allocate AspeedMachineState::soc field
...
We want to derivate the big AspeedSoCState object in some more
SoC-specific ones. Since the object size will vary, allocate it
dynamically.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
aa6c6697bb
hw/arm/aspeed: Rename aspeed_soc_realize() as AST2400/2500 specific
...
Keep aspeed_soc_class_init() generic, set the realize handler
to aspeed_ast2400_soc_realize() in each 2400/2500 class_init.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
a150836239
hw/arm/aspeed: Rename aspeed_soc_init() as AST2400/2500 specific
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00
Philippe Mathieu-Daudé
2f4ec77679
hw/arm/aspeed: Extract code common to all boards to a common file
...
aspeed_soc.c contains definitions specific to the AST2400
and AST2500 SoCs, but also some definitions for other AST
SoCs: move them to a common file.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2023-10-25 09:52:44 +02:00