From: Philippe Mathieu-Daudé Date: Tue, 6 Jan 2026 22:01:33 +0000 (+0100) Subject: accel/tcg: Un-inline WatchPoint API user-emulation stubs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec77d52cc5bd859df2d85e8e2c090766bd4ce585;p=thirdparty%2Fqemu.git accel/tcg: Un-inline WatchPoint API user-emulation stubs Currently we can not build files including "exec/watchpoint.h" as meson common objects because the CONFIG_USER_ONLY definition is poisoned. We can easily fix that by un-inlining the user-emulation stubs. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Pierrick Bouvier Message-ID: <20260106231908.16756-5-philmd@linaro.org> --- diff --git a/accel/tcg/user-exec-stub.c b/accel/tcg/user-exec-stub.c index 1d52f48226..28286e11a6 100644 --- a/accel/tcg/user-exec-stub.c +++ b/accel/tcg/user-exec-stub.c @@ -1,6 +1,8 @@ #include "qemu/osdep.h" #include "hw/core/cpu.h" +#include "accel/tcg/cpu-ops.h" #include "exec/replay-core.h" +#include "exec/watchpoint.h" #include "internal-common.h" void cpu_resume(CPUState *cpu) @@ -19,6 +21,37 @@ void cpu_exec_reset_hold(CPUState *cpu) { } +int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, + int flags, CPUWatchpoint **watchpoint) +{ + return -ENOSYS; +} + +int cpu_watchpoint_remove(CPUState *cpu, vaddr addr, + vaddr len, int flags) +{ + return -ENOSYS; +} + +void cpu_watchpoint_remove_by_ref(CPUState *cpu, CPUWatchpoint *wp) +{ +} + +void cpu_watchpoint_remove_all(CPUState *cpu, int mask) +{ +} + +int cpu_watchpoint_address_matches(CPUState *cpu, vaddr addr, vaddr len) +{ + return 0; +} + +void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len, + MemTxAttrs atr, int fl, uintptr_t ra) +{ +} + + /* User mode emulation does not support softmmu yet. */ void tlb_init(CPUState *cpu) diff --git a/include/accel/tcg/cpu-ops.h b/include/accel/tcg/cpu-ops.h index dd8ea30016..5950cdcaab 100644 --- a/include/accel/tcg/cpu-ops.h +++ b/include/accel/tcg/cpu-ops.h @@ -281,21 +281,6 @@ struct TCGCPUOps { #endif /* !CONFIG_USER_ONLY */ }; -#if defined(CONFIG_USER_ONLY) - -static inline void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len, - MemTxAttrs atr, int fl, uintptr_t ra) -{ -} - -static inline int cpu_watchpoint_address_matches(CPUState *cpu, - vaddr addr, vaddr len) -{ - return 0; -} - -#else - /** * cpu_check_watchpoint: * @cpu: cpu context @@ -328,6 +313,4 @@ int cpu_watchpoint_address_matches(CPUState *cpu, vaddr addr, vaddr len); vaddr cpu_pointer_wrap_notreached(CPUState *, int, vaddr, vaddr); vaddr cpu_pointer_wrap_uint32(CPUState *, int, vaddr, vaddr); -#endif - #endif /* TCG_CPU_OPS_H */ diff --git a/include/exec/watchpoint.h b/include/exec/watchpoint.h index 4b6668826c..c4d069425b 100644 --- a/include/exec/watchpoint.h +++ b/include/exec/watchpoint.h @@ -8,34 +8,11 @@ #ifndef EXEC_WATCHPOINT_H #define EXEC_WATCHPOINT_H -#if defined(CONFIG_USER_ONLY) -static inline int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, - int flags, CPUWatchpoint **watchpoint) -{ - return -ENOSYS; -} - -static inline int cpu_watchpoint_remove(CPUState *cpu, vaddr addr, - vaddr len, int flags) -{ - return -ENOSYS; -} - -static inline void cpu_watchpoint_remove_by_ref(CPUState *cpu, - CPUWatchpoint *wp) -{ -} - -static inline void cpu_watchpoint_remove_all(CPUState *cpu, int mask) -{ -} -#else int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, int flags, CPUWatchpoint **watchpoint); int cpu_watchpoint_remove(CPUState *cpu, vaddr addr, vaddr len, int flags); void cpu_watchpoint_remove_by_ref(CPUState *cpu, CPUWatchpoint *watchpoint); void cpu_watchpoint_remove_all(CPUState *cpu, int mask); -#endif #endif /* EXEC_WATCHPOINT_H */