Bruno Larsen (billionai)
4fe011d3c1
target/ppc: remove ppc_cpu_dump_statistics
...
This function requires surce code modification to be useful, which means
it probably is not used often, and the move to using decodetree means
the statistics won't even be collected anymore.
Also removed setting dump_statistics in ppc_cpu_realize, since it was
only useful when in conjunction with ppc_cpu_dump_statistics.
Suggested-by: Richard Henderson<richard.henderson@linaro.org >
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210526202104.127910-3-bruno.larsen@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 18:10:31 +10:00
Bruno Larsen (billionai)
c274358279
target/ppc: updated meson.build to support disable-tcg
...
updated build file to not compile some sources that are unnecessary if
TCG is disabled on the system.
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210525115355.8254-5-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 18:10:20 +10:00
Bruno Larsen (billionai)
8033fb3fbf
target/ppc: created tcg-stub.c file
...
Created a file with stubs needed to compile disabling TCG. *_ppc_opcodes
were created to make cpu_init.c have a few less ifdefs, since they are
not needed. softmmu_resize_hpt_* have to be created because the compiler
can't automatically know they aren't used, but they should never be
reached.
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210525115355.8254-4-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
2b44e21949
target/ppc: added ifdefs around TCG-only code
...
excp_helper.c, mmu-hash64.c and mmu_helper.c have some function
declarations that are TCG-only, and couldn't be easily moved to a
TCG only file, so ifdefs were added around them.
We also needed ifdefs around some header files because helper-proto.h
includes trace/generated-helpers.h, which is never created when building
without TCG, and cpu_ldst.h includes tcg/tcg.h, whose containing folder
is not included as a -iquote. As future cleanup, we could change the
part of the configuration script to add those.
cpu_init.c also had a callback definition that is TCG only and could be
removed as part of a future cleanup (all the dump_statistics part is
almost never used and will become obsolete as we transition to using
decodetree).
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210525115355.8254-3-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
52e9612ee9
target/ppc: used ternary operator when registering MAS
...
The write calback decision when registering the MAS SPR has been turned
into a ternary operation, rather than an if-then-else block.
This was done because when building without TCG, even though the
compiler will optimize away the pointers to spr_write_generic*, it
doesn't optimize away the decision and assignment to the local pointer,
creating compiler errors. This cleanup looked better than using ifdefs,
so we decided to with it.
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210525115355.8254-2-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
22adb61ff6
target/ppc: fold ppc_store_ptcr into it's only caller
...
ppc_store_ptcr, defined in mmu_helper.c, was only used by
helper_store_ptcr, in misc_helper.c. To avoid possible confusion,
the function was folded into the helper.
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210526143516.125582-1-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
f2fac71d81
target/ppc: removed unnecessary inclusion of helper-proto.h
...
These files included helper-proto.h, but didn't use or declare any
helpers, so the #include has been removed
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210521201759.85475-6-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
63d06e90e6
target/ppc: reduce usage of fpscr_set_rounding_mode
...
It is preferable to store the current rounding mode and retore from that
than recalculating from fpscr, so we changed the behavior of do_fri and
VSX_ROUND to do it like that.
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210521201759.85475-4-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
a3f5c31539
target/ppc: moved ppc_store_lpcr and ppc_store_msr to cpu.c
...
These functions are used in hw/ppc logic, during machine startup, which
means it must be compiled when --disable-tcg is selected, and so it has
been moved into a common code file
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Message-Id: <20210521201759.85475-3-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Bruno Larsen (billionai)
dbf2e70a30
target/ppc: cleaned error_report from ppc_store_sdr1
...
Changed how the function ppc_store_sdr1, from error_report(...) to
qemu_log_mask(LOG_GUEST_ERROR, ...).
Signed-off-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210521201759.85475-2-bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-06-03 13:22:06 +10:00
Stefano Garzarella
d0fb9657a3
docs: fix references to docs/devel/tracing.rst
...
Commit e50caf4a5c ("tracing: convert documentation to rST")
converted docs/devel/tracing.txt to docs/devel/tracing.rst.
We still have several references to the old file, so let's fix them
with the following command:
sed -i s/tracing.txt/tracing.rst/ $(git grep -l docs/devel/tracing.txt)
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20210517151702.109066-2-sgarzare@redhat.com >
Signed-off-by: Thomas Huth <thuth@redhat.com >
2021-06-02 06:51:09 +02:00
Richard Henderson
119065574d
hw/core: Constify TCGCPUOps
...
We no longer have any runtime modifications to this struct,
so declare them all const.
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20210227232519.222663-3-richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
08928c6d0d
cpu: Move CPUClass::get_phys_page_debug to SysemuCPUOps
...
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210517105140.1062037-21-f4bug@amsat.org >
[rth: Drop declaration movement from target/*/cpu.h]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
715e3c1afb
cpu: Move CPUClass::write_elf* to SysemuCPUOps
...
The write_elf*() handlers are used to dump vmcore images.
This feature is only meaningful for system emulation.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210517105140.1062037-19-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
da383e0263
cpu: Move CPUClass::virtio_is_big_endian to SysemuCPUOps
...
VirtIO devices are only meaningful with system emulation.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210517105140.1062037-17-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
feece4d070
cpu: Move CPUClass::vmsd to SysemuCPUOps
...
Migration is specific to system emulation.
- Move the CPUClass::vmsd field to SysemuCPUOps,
- restrict VMSTATE_CPU() macro to sysemu,
- vmstate_dummy is now unused, remove it.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210517105140.1062037-16-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
8b80bd28a5
cpu: Introduce SysemuCPUOps structure
...
Introduce a structure to hold handler specific to sysemu.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210517105140.1062037-15-f4bug@amsat.org >
[rth: Squash "restrict hw/core/sysemu-cpu-ops.h" patch]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Philippe Mathieu-Daudé
744c72a837
cpu: Rename CPUClass vmsd -> legacy_vmsd
...
Quoting Peter Maydell [*]:
There are two ways to handle migration for
a CPU object:
(1) like any other device, so it has a dc->vmsd that covers
migration for the whole object. As usual for objects that are a
subclass of a parent that has state, the first entry in the
VMStateDescription field list is VMSTATE_CPU(), which migrates
the cpu_common fields, followed by whatever the CPU's own migration
fields are.
(2) a backwards-compatible mechanism for CPUs that were
originally migrated using manual "write fields to the migration
stream structures". The on-the-wire migration format
for those is based on the 'env' pointer (which isn't a QOM object),
and the cpu_common part of the migration data is elsewhere.
cpu_exec_realizefn() handles both possibilities:
* for type 1, dc->vmsd is set and cc->vmsd is not,
so cpu_exec_realizefn() does nothing, and the standard
"register dc->vmsd for a device" code does everything needed
* for type 2, dc->vmsd is NULL and so we register the
vmstate_cpu_common directly to handle the cpu-common fields,
and the cc->vmsd to handle the per-CPU stuff
You can't change a CPU from one type to the other without breaking
migration compatibility, which is why some guest architectures
are stuck on the cc->vmsd form. New targets should use dc->vmsd.
To avoid new targets to start using type (2), rename cc->vmsd as
cc->legacy_vmsd. The correct field to implement is dc->vmsd (the
DeviceClass one).
See also commit b170fce3dd ("cpu: Register VMStateDescription
through CPUState") for historic background.
[*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg800849.html
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Cc: Peter Maydell <peter.maydell@linaro.org >
Message-Id: <20210517105140.1062037-13-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-26 15:33:59 -07:00
Richard Henderson
e543f94685
target/ppc: Remove type argument for mmubooke206_get_physical_address
...
It is no longer used.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-16-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
5507d62609
target/ppc: Remove type argument from mmubooke206_check_tlb
...
We can now use MMU_INST_FETCH from access_type for this.
Unify the I/D code paths, making use of prot_for_access_type.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-15-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
40079604ae
target/ppc: Remove type argument from mmubooke_get_physical_address
...
It is no longer used.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-14-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
05c3ef1451
target/ppc: Remove type argument from mmubooke_check_tlb
...
We can now use MMU_INST_FETCH from access_type for this.
Unify the I/D code paths, making use of prot_for_access_type.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-13-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
61d2cde867
target/ppc: Remove type argument from mmu40x_get_physical_address
...
It is no longer used.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-12-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
590fc3c01d
target/ppc: Remove type argument from get_bat_6xx_tlb
...
We can now use MMU_INST_FETCH from access_type for this.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-11-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
f3f5794d79
target/ppc: Remove type argument from ppc6xx_tlb_check
...
We can now use MMU_INST_FETCH from access_type for this.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-10-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
574c5585e3
target/ppc: Remove type argument from ppc6xx_tlb_pte_check
...
It is no longer used.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-9-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:52:07 +10:00
Richard Henderson
91e615a07d
target/ppc: Remove type argument from check_prot
...
We can now use MMU_INST_FETCH from access_type for this.
Use prot_for_access_type to simplify everything.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-8-richard.henderson@linaro.org >
[dwg: Remove a stray trailing whitespace]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:51:51 +10:00
Richard Henderson
9630cd6262
target/ppc: Use MMUAccessType in mmu_helper.c
...
This replaces 'int rw' with 'MMUAccessType access_type'.
Comparisons vs zero become either MMU_DATA_LOAD or MMU_DATA_STORE,
since we had previously squashed rw to 0 for code access.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-7-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Richard Henderson
352e3627b2
target/ppc: Rename access_type to type in mmu_helper.c
...
The variable that holds ACCESS_INT, ACCESS_FLOAT, etc is
variously called 'int type' or 'int access_type' within
this file. Standardize on 'int type' throughout.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-6-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Richard Henderson
31fa64ecfd
target/ppc: Use MMUAccessType in mmu-hash32.c
...
We must leave the 'int rwx' parameter to ppc_hash32_handle_mmu_fault
for now, but will clean that up later.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-5-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Richard Henderson
59dec5bf5a
target/ppc: Use MMUAccessType in mmu-hash64.c
...
We must leave the 'int rwx' parameter to ppc_hash64_handle_mmu_fault
for now, but will clean that up later.
Signed-off-by: Ricgard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-4-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Richard Henderson
13c5fdbac6
target/ppc: Use MMUAccessType in mmu-radix64.c
...
We must leave the 'int rwx' parameter to ppc_radix64_handle_mmu_fault
for now, but will clean that up later.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-3-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Richard Henderson
182357dbb6
target/ppc: Introduce prot_for_access_type
...
Use this in the three places we currently have a local array
indexed by rwx (which happens to have the same values).
The types will match up correctly with additional changes.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210518201146.794854-2-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 12:50:47 +10:00
Giuseppe Musacchio
861f10fd52
target/ppc: Fix load endianness for lxvwsx/lxvdsx
...
TARGET_WORDS_BIGENDIAN may not match the machine endianness if that's a
runtime-configurable parameter.
Fixes: bcb0b7b1a1
Fixes: afae37d98a
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/212
Signed-off-by: Giuseppe Musacchio <thatlemon@gmail.com >
Message-Id: <20210518133020.58927-1-thatlemon@gmail.com >
Tested-by: Paul A. Clarke <pc@us.ibm.com >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:44:04 +10:00
Richard Henderson
51eb7b1d10
target/ppc: Use translator_loop_temp_check
...
The special logging is unnecessary. It will have been done
immediately before in the log file.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Message-Id: <20210517205025.3777947-9-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
46a0add975
target/ppc: Mark helper_raise_exception* as noreturn
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-8-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
0032dbdb41
target/ppc: Tidy exception vs exit_tb
...
We do not need to emit an exit_tb after an exception,
as the latter will exit via longjmp.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-7-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
13b4557567
target/ppc: Move single-step check to ppc_tr_tb_stop
...
When single-stepping, force max_insns to 1 in init_disas
so that we exit the translation loop immediately.
Combine the single-step checks in tb_stop, and give the
gdb exception priority over the cpu exception, just as
we already do in gen_lookup_and_goto_ptr.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-6-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
7a3fe174b1
target/ppc: Remove DisasContext.exception
...
Now that we have removed all of the fake exceptions, and all real
exceptions exit via DISAS_NORETURN, we can remove this field.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-5-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
6086c751c3
target/ppc: Replace POWERPC_EXCP_BRANCH with DISAS_NORETURN
...
The translation of branch instructions always results in exit from
the TB. Remove the synthetic "exception" after no more uses.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-4-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
d736de8ff6
target/ppc: Replace POWERPC_EXCP_STOP with DISAS_EXIT_UPDATE
...
Remove the synthetic "exception" after no more uses.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-3-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
f5b6daacd6
target/ppc: Introduce gen_icount_io_start
...
Create a function to handle the details for interacting with icount.
Force the exit from the tb via DISAS_TOO_MANY, which allows chaining
to the next tb, where the code emitted for gen_tb_start() will
determine if we must exit. We can thus remove any matching
conditional call to gen_stop_exception.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-2-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson
a68cf3a520
target/ppc: Remove unnecessary gen_io_end calls
...
Since ba3e792669 , we switched the implementation of icount
to always reset can_do_io at the start of the following TB.
Most of them were removed in 9e9b10c649 , but some were missed.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-10-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
59bf23faf5
target/ppc: Replace POWERPC_EXCP_SYNC with DISAS_EXIT
...
Remove the synthetic "exception" after no more uses.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-9-matheus.ferst@eldorado.org.br >
Reviewed-by: Bruno Larsen (billionai) <bruno.larsen@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
a9b5b3d06c
target/ppc: Introduce DISAS_{EXIT,CHAIN}{,_UPDATE}
...
Rewrite ppc_tr_tb_stop to handle these new codes.
Convert ctx->exception into these new codes at the end of
ppc_tr_translate_insn, prior to pushing the change back
throughout translate.c.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-8-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
2736fc6181
target/ppc: Simplify gen_debug_exception
...
Two of the call sites that use gen_debug_exception have already
updated NIP. Only ppc_tr_breakpoint_check requires the update.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-7-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
506fadcfd7
target/ppc: Remove special case for POWERPC_EXCP_TRAP
...
Since POWERPC_EXCP_TRAP is raised by gen_exception_err,
we will have also set DISAS_NORETURN.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-6-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
da3527d96d
target/ppc: Remove special case for POWERPC_SYSCALL
...
Since POWERPC_SYSCALL is raised by gen_exception_err,
we will have also set DISAS_NORETURN.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-5-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
3d8a5b69bd
target/ppc: Move DISAS_NORETURN setting into gen_exception*
...
There are other valid settings for is_jmp besides
DISAS_NEXT and DISAS_NORETURN, so eliminating that
dichotomy from ppc_tr_translate_insn is helpful.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-4-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00
Richard Henderson
624cb07fde
target/ppc: Split out decode_legacy
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210512185441.3619828-3-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:28 +10:00