mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
target/xtensa: use generic instruction breakpoint infrastructure
Don't embed ibreak exception generation into TB and don't invalidate TB on ibreak address change. Add CPUBreakpoint pointers to xtensa CPUArchState, use cpu_breakpoint_insert/cpu_breakpoint_remove_by_ref to manage ibreak breakpoints and provide TCGCPUOps::debug_check_breakpoint callback that recognizes valid instruction breakpoints. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20231130171920.3798954-2-jcmvbkbc@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
396f66f99d
commit
5f3ebbc86d
5 changed files with 47 additions and 33 deletions
|
@ -229,6 +229,7 @@ enum {
|
|||
#define MAX_NCCOMPARE 3
|
||||
#define MAX_TLB_WAY_SIZE 8
|
||||
#define MAX_NDBREAK 2
|
||||
#define MAX_NIBREAK 2
|
||||
#define MAX_NMEMORY 4
|
||||
#define MAX_MPU_FOREGROUND_SEGMENTS 32
|
||||
|
||||
|
@ -547,6 +548,8 @@ struct CPUArchState {
|
|||
|
||||
/* Watchpoints for DBREAK registers */
|
||||
struct CPUWatchpoint *cpu_watchpoint[MAX_NDBREAK];
|
||||
/* Breakpoints for IBREAK registers */
|
||||
struct CPUBreakpoint *cpu_breakpoint[MAX_NIBREAK];
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -590,6 +593,7 @@ void xtensa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, vaddr addr,
|
|||
int mmu_idx, MemTxAttrs attrs,
|
||||
MemTxResult response, uintptr_t retaddr);
|
||||
hwaddr xtensa_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
||||
bool xtensa_debug_check_breakpoint(CPUState *cs);
|
||||
#endif
|
||||
void xtensa_cpu_dump_state(CPUState *cpu, FILE *f, int flags);
|
||||
void xtensa_count_regs(const XtensaConfig *config,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue