Richard Henderson
b73f58496d
accel/tcg: Split out getpc.h
...
Split out GETPC to a target-independent header.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20250308072348.65723-3-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-03-08 09:34:43 -08:00
Philippe Mathieu-Daudé and Richard Henderson
bf4a155b7a
accel/tcg: Restrict GETPC_ADJ to 'tb-internal.h'
...
GETPC_ADJ is only used within accel/tcg/, no need to
expose it to all the code base.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20250308072348.65723-2-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-03-08 08:05:40 -08:00
Philippe Mathieu-Daudé and Richard Henderson
6ff5da1600
exec: Declare tlb_flush*() in 'exec/cputlb.h'
...
Move CPU TLB related methods to "exec/cputlb.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20241114011310.3615-19-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-03-08 07:56:14 -08:00
Philippe Mathieu-Daudé and Richard Henderson
eb9b25c656
exec: Declare tlb_set_page() in 'exec/cputlb.h'
...
Move CPU TLB related methods to "exec/cputlb.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20241114011310.3615-18-philmd@linaro.org >
2025-03-08 07:56:14 -08:00
Philippe Mathieu-Daudé and Richard Henderson
2809e2d6c4
exec: Declare tlb_set_page_with_attrs() in 'exec/cputlb.h'
...
Move CPU TLB related methods to "exec/cputlb.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20241114011310.3615-17-philmd@linaro.org >
2025-03-08 07:56:14 -08:00
Philippe Mathieu-Daudé and Richard Henderson
a9f5ab9279
exec: Declare tlb_set_page_full() in 'exec/cputlb.h'
...
Move CPU TLB related methods to "exec/cputlb.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20241114011310.3615-16-philmd@linaro.org >
2025-03-08 07:56:14 -08:00
Philippe Mathieu-Daudé and Richard Henderson
e7d269adb2
exec: Declare tlb_reset_dirty*() in 'exec/cputlb.h'
...
Move CPU TLB related methods to "exec/cputlb.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20241114011310.3615-14-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-03-08 07:56:14 -08:00
Philippe Mathieu-Daudé
cbaae5338b
accel/tcg: Restrict tlb_init() / destroy() to TCG
...
Move CPU TLB related methods to accel/tcg/ scope,
in "internal-common.h".
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250123234415.59850-9-philmd@linaro.org >
2025-03-06 15:46:17 +01:00
Philippe Mathieu-Daudé
47f7b6441a
accel/tcg: Declare cpu_loop_exit_requested() in 'exec/cpu-common.h'
...
Move cpu_loop_exit_requested() declaration to "exec/cpu-common.h",
along with the related cpu_loop_exit_noexc(), cpu_loop_exit(),
cpu_loop_exit_atomic() and cpu_loop_exit_restore() methods.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20241217140648.98538-1-philmd@linaro.org >
2024-12-20 17:44:57 +01:00
Philippe Mathieu-Daudé
1bf0d6e476
user: Move various declarations out of 'exec/exec-all.h'
...
Move various declarations related to user emulation
from "exec/exec-all.h" to "user/cpu_loop.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20241212185341.2857-19-philmd@linaro.org >
2024-12-20 17:44:57 +01:00
Philippe Mathieu-Daudé
487a31e0ac
accel/tcg: Declare mmap_[un]lock() in 'exec/page-protection.h'
...
Move mmap_lock(), mmap_unlock() declarations and the
WITH_MMAP_LOCK_GUARD() definition to 'exec/page-protection.h'.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20241212185341.2857-5-philmd@linaro.org >
2024-12-20 17:44:57 +01:00
Richard Henderson
4a75c8c7d6
include/exec: Improve probe_access_full{, _mmu} documentation
...
Suggested-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20241013184733.1423747-2-richard.henderson@linaro.org >
2024-10-22 13:45:03 -07:00
Philippe Mathieu-Daudé
99481a0988
accel: Restrict probe_access*() functions to TCG
...
This API is specific to TCG (already handled by hardware
accelerators), so restrict it with #ifdef'ry. Remove
unnecessary stubs.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240529155918.6221-1-philmd@linaro.org >
2024-07-23 18:08:44 +02:00
Nicholas Piggin
99cd12ced1
tcg/cputlb: Remove non-synced variants of global TLB flushes
...
These are no longer used.
tlb_flush_all_cpus: removed by previous commit.
tlb_flush_page_all_cpus: removed by previous commit.
tlb_flush_page_bits_by_mmuidx_all_cpus: never used.
tlb_flush_page_by_mmuidx_all_cpus: never used.
tlb_flush_page_bits_by_mmuidx_all_cpus: never used, thus:
tlb_flush_range_by_mmuidx_all_cpus: never used.
tlb_flush_by_mmuidx_all_cpus: never used.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Nicholas Piggin <npiggin@gmail.com >
2024-05-24 08:57:50 +10: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
Philippe Mathieu-Daudé
9c1283dd76
exec: Declare MMUAccessType type in 'mmu-access-type.h' header
...
The MMUAccessType enum is declared in "hw/core/cpu.h".
"hw/core/cpu.h" contains declarations related to CPUState
and CPUClass. Some source files only require MMUAccessType
and don't need to pull in all CPU* declarations. In order
to simplify, create a new "exec/mmu-access-type.h" header.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240418192525.97451-2-philmd@linaro.org >
2024-04-26 17:03:05 +02:00
Philippe Mathieu-Daudé
471558cb6e
exec: Declare abi_ptr type in its own 'abi_ptr.h' header
...
The abi_ptr type is declared in "exec/cpu_ldst.h" with all
the load/store helpers. Some source files requiring abi_ptr
type don't need the load/store helpers. In order to simplify,
create a new "exec/abi_ptr.h" header.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20231212123401.37493-21-philmd@linaro.org >
2024-04-26 17:03:05 +02:00
Philippe Mathieu-Daudé
51579d40f9
exec: Reduce tlb_set_dirty() declaration scope
...
tlb_set_dirty() is only used in accel/tcg/cputlb.c,
where it is defined. Declare it statically, removing
the stub.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240418192525.97451-11-philmd@linaro.org >
2024-04-26 15:28:11 +02:00
Philippe Mathieu-Daudé and Peter Xu
7e8ccf99ed
physmem: Expose tlb_reset_dirty_range_all()
...
In order to call tlb_reset_dirty_range_all() outside of
system/physmem.c, expose its prototype.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Link: https://lore.kernel.org/r/20240312201458.79532-2-philmd@linaro.org
Signed-off-by: Peter Xu <peterx@redhat.com >
2024-03-12 17:39:40 -04:00
Ilya Leoshkevich and Richard Henderson
88d4b5138a
tcg: Make tb_cflags() usable from target-agnostic code
...
Currently tb_cflags() is defined in exec-all.h, which is not usable
from target-agnostic code. Move it to translation-block.h, which is.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20231212003837.64090-3-iii@linux.ibm.com >
Message-Id: <20240125054631.78867-3-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-01-29 21:04:10 +10:00
Philippe Mathieu-Daudé
c076f37a77
accel/tcg: Remove unused tb_invalidate_phys_addr()
...
Commit e3f7c801f1 introduced the TCGCPUOps::debug_check_breakpoint()
handler, and commit 10c37828b2 "moved breakpoint recognition outside
of translation", so "we no longer need to flush any TBs when changing
BPs".
The last target using tb_invalidate_phys_addr() was converted to the
debug_check_breakpoint(), so this function is now unused. Remove it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20231130203241.31099-1-philmd@linaro.org >
2024-01-19 12:28:59 +01:00
Philippe Mathieu-Daudé and Richard Henderson
3549118b49
exec: Move cpu_loop_foo() target agnostic functions to 'cpu-common.h'
...
While these functions are not TCG specific, they are not target
specific. Move them to "exec/cpu-common.h" so their callers don't
have to be tainted as target specific.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Anton Johansson <anjo@rev.ng >
Message-Id: <20230914185718.76241-3-philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-04 11:03:54 -07:00
Richard Henderson
a953b5fa15
accel/tcg: Remove cpu_neg()
...
Now that CPUNegativeOffsetState is part of CPUState,
we can reference it directly.
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é
dcc0f35d3f
target/translate: Restrict 'exec/cpu_ldst.h' to user emulation
...
Only handle_sigsegv_accerr_write(), declared with user
emulation, requires "exec/cpu_ldst.h" (for the abi_ptr
typedef).
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230828221314.18435-6-philmd@linaro.org >
2023-08-31 19:47:43 +02:00
Richard Henderson
990ef9182b
include/exec: Add WITH_MMAP_LOCK_GUARD
...
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-23 17:57:10 +01:00