softmmu: Restrict cpu_check_watchpoint / address_matches to TCG accel
Both cpu_check_watchpoint() and cpu_watchpoint_address_matches() are specific to TCG system emulation. Declare them in "tcg-cpu-ops.h" to be sure accessing them from non-TCG code is a compilation error. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20230328173117.15226-2-philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
4f5c67f8df
commit
6eece7f531
@ -970,17 +970,6 @@ static inline void cpu_watchpoint_remove_by_ref(CPUState *cpu,
|
|||||||
static inline void cpu_watchpoint_remove_all(CPUState *cpu, int mask)
|
static inline void cpu_watchpoint_remove_all(CPUState *cpu, int mask)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
#else
|
||||||
int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len,
|
int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len,
|
||||||
int flags, CPUWatchpoint **watchpoint);
|
int flags, CPUWatchpoint **watchpoint);
|
||||||
@ -988,32 +977,6 @@ int cpu_watchpoint_remove(CPUState *cpu, vaddr addr,
|
|||||||
vaddr len, int flags);
|
vaddr len, int flags);
|
||||||
void cpu_watchpoint_remove_by_ref(CPUState *cpu, CPUWatchpoint *watchpoint);
|
void cpu_watchpoint_remove_by_ref(CPUState *cpu, CPUWatchpoint *watchpoint);
|
||||||
void cpu_watchpoint_remove_all(CPUState *cpu, int mask);
|
void cpu_watchpoint_remove_all(CPUState *cpu, int mask);
|
||||||
|
|
||||||
/**
|
|
||||||
* cpu_check_watchpoint:
|
|
||||||
* @cpu: cpu context
|
|
||||||
* @addr: guest virtual address
|
|
||||||
* @len: access length
|
|
||||||
* @attrs: memory access attributes
|
|
||||||
* @flags: watchpoint access type
|
|
||||||
* @ra: unwind return address
|
|
||||||
*
|
|
||||||
* Check for a watchpoint hit in [addr, addr+len) of the type
|
|
||||||
* specified by @flags. Exit via exception with a hit.
|
|
||||||
*/
|
|
||||||
void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
|
|
||||||
MemTxAttrs attrs, int flags, uintptr_t ra);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* cpu_watchpoint_address_matches:
|
|
||||||
* @cpu: cpu context
|
|
||||||
* @addr: guest virtual address
|
|
||||||
* @len: access length
|
|
||||||
*
|
|
||||||
* Return the watchpoint flags that apply to [addr, addr+len).
|
|
||||||
* If no watchpoint is registered for the range, the result is 0.
|
|
||||||
*/
|
|
||||||
int cpu_watchpoint_address_matches(CPUState *cpu, vaddr addr, vaddr len);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -175,4 +175,47 @@ struct TCGCPUOps {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#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
|
||||||
|
* @addr: guest virtual address
|
||||||
|
* @len: access length
|
||||||
|
* @attrs: memory access attributes
|
||||||
|
* @flags: watchpoint access type
|
||||||
|
* @ra: unwind return address
|
||||||
|
*
|
||||||
|
* Check for a watchpoint hit in [addr, addr+len) of the type
|
||||||
|
* specified by @flags. Exit via exception with a hit.
|
||||||
|
*/
|
||||||
|
void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
|
||||||
|
MemTxAttrs attrs, int flags, uintptr_t ra);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cpu_watchpoint_address_matches:
|
||||||
|
* @cpu: cpu context
|
||||||
|
* @addr: guest virtual address
|
||||||
|
* @len: access length
|
||||||
|
*
|
||||||
|
* Return the watchpoint flags that apply to [addr, addr+len).
|
||||||
|
* If no watchpoint is registered for the range, the result is 0.
|
||||||
|
*/
|
||||||
|
int cpu_watchpoint_address_matches(CPUState *cpu, vaddr addr, vaddr len);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* TCG_CPU_OPS_H */
|
#endif /* TCG_CPU_OPS_H */
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "exec/ram_addr.h"
|
#include "exec/ram_addr.h"
|
||||||
#include "exec/cpu_ldst.h"
|
#include "exec/cpu_ldst.h"
|
||||||
#include "exec/helper-proto.h"
|
#include "exec/helper-proto.h"
|
||||||
|
#include "hw/core/tcg-cpu-ops.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qemu/guest-random.h"
|
#include "qemu/guest-random.h"
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "tcg/tcg.h"
|
#include "tcg/tcg.h"
|
||||||
#include "vec_internal.h"
|
#include "vec_internal.h"
|
||||||
#include "sve_ldst_internal.h"
|
#include "sve_ldst_internal.h"
|
||||||
|
#include "hw/core/tcg-cpu-ops.h"
|
||||||
|
|
||||||
|
|
||||||
/* Return a value for NZCV as per the ARM PredTest pseudofunction.
|
/* Return a value for NZCV as per the ARM PredTest pseudofunction.
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "exec/helper-proto.h"
|
#include "exec/helper-proto.h"
|
||||||
#include "exec/exec-all.h"
|
#include "exec/exec-all.h"
|
||||||
#include "exec/cpu_ldst.h"
|
#include "exec/cpu_ldst.h"
|
||||||
|
#include "hw/core/tcg-cpu-ops.h"
|
||||||
#include "qemu/int128.h"
|
#include "qemu/int128.h"
|
||||||
#include "qemu/atomic128.h"
|
#include "qemu/atomic128.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user