The cpu_watchpoint_insert function cannot fail, so the error return value isn't actually used. Instead of returning the new watchpoint by reference, return it directly.
Signed-off-by: Richard Henderson <[email protected]> --- include/exec/breakpoint.h | 5 ++--- accel/tcg/tcg-accel-ops.c | 9 ++------- accel/tcg/user-exec-stub.c | 7 +++---- system/watchpoint.c | 11 +++-------- target/arm/tcg/debug.c | 4 ++-- target/i386/tcg/system/bpt_helper.c | 20 ++++++++------------ target/ppc/cpu.c | 4 ++-- target/riscv/debug.c | 28 +++++++++------------------- target/s390x/tcg/debug.c | 10 +++++----- target/xtensa/dbg_helper.c | 10 +++------- 10 files changed, 39 insertions(+), 69 deletions(-) diff --git a/include/exec/breakpoint.h b/include/exec/breakpoint.h index 95aa4f5933..60fda8dbb7 100644 --- a/include/exec/breakpoint.h +++ b/include/exec/breakpoint.h @@ -49,9 +49,8 @@ void cpu_breakpoint_remove_by_ref(CPUState *cpu, CPUBreakpoint *breakpoint); void cpu_breakpoint_remove_all(CPUState *cpu, BreakpointFlags mask); bool cpu_breakpoint_test(CPUState *cpu, vaddr pc, BreakpointFlags mask); -int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, - BreakpointFlags flags, unsigned id, - CPUWatchpoint **watchpoint); +CPUWatchpoint *cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, + BreakpointFlags flags, unsigned id); int cpu_watchpoint_remove(CPUState *cpu, vaddr addr, vaddr len, BreakpointFlags flags); void cpu_watchpoint_remove_by_ref(CPUState *cpu, CPUWatchpoint *watchpoint); diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c index 4dee5ea57f..79289bf7b2 100644 --- a/accel/tcg/tcg-accel-ops.c +++ b/accel/tcg/tcg-accel-ops.c @@ -131,7 +131,6 @@ static int tcg_insert_gdbstub_breakpoint(CPUState *cs, GdbBreakpointType type, vaddr addr, vaddr len) { CPUState *cpu; - int err = 0; switch (type) { case GDB_BREAKPOINT_SW: @@ -147,13 +146,9 @@ static int tcg_insert_gdbstub_breakpoint(CPUState *cs, GdbBreakpointType type, return -EINVAL; } CPU_FOREACH(cpu) { - err = cpu_watchpoint_insert(cpu, addr, len, - xlat_gdb_type(cpu, type), 0, NULL); - if (err) { - break; - } + cpu_watchpoint_insert(cpu, addr, len, xlat_gdb_type(cpu, type), 0); } - return err; + return 0; default: return -ENOSYS; } diff --git a/accel/tcg/user-exec-stub.c b/accel/tcg/user-exec-stub.c index 42e4861868..bf8b7113b8 100644 --- a/accel/tcg/user-exec-stub.c +++ b/accel/tcg/user-exec-stub.c @@ -21,11 +21,10 @@ void cpu_exec_reset_hold(CPUState *cpu) { } -int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, - BreakpointFlags flags, unsigned id, - CPUWatchpoint **watchpoint) +CPUWatchpoint *cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, + BreakpointFlags flags, unsigned id) { - return -ENOSYS; + g_assert_not_reached(); } int cpu_watchpoint_remove(CPUState *cpu, vaddr addr, diff --git a/system/watchpoint.c b/system/watchpoint.c index 01cf0f61a8..183b194403 100644 --- a/system/watchpoint.c +++ b/system/watchpoint.c @@ -24,9 +24,8 @@ #include "hw/core/cpu.h" /* Add a watchpoint. */ -int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, - BreakpointFlags flags, unsigned id, - CPUWatchpoint **watchpoint) +CPUWatchpoint *cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, + BreakpointFlags flags, unsigned id) { CPUWatchpoint *wp; vaddr last = addr + len - 1; @@ -49,11 +48,7 @@ int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, } else { tlb_flush(cpu); } - - if (watchpoint) { - *watchpoint = wp; - } - return 0; + return wp; } /* Remove a specific watchpoint. */ diff --git a/target/arm/tcg/debug.c b/target/arm/tcg/debug.c index 2c73ca1080..e75fd39fb6 100644 --- a/target/arm/tcg/debug.c +++ b/target/arm/tcg/debug.c @@ -581,8 +581,8 @@ void hw_watchpoint_update(ARMCPU *cpu, int n) wvr += basstart; } - cpu_watchpoint_insert(CPU(cpu), wvr, len, flags, n, - &env->cpu_watchpoint[n]); + env->cpu_watchpoint[n] = cpu_watchpoint_insert(CPU(cpu), wvr, len, + flags, n); } void hw_watchpoint_update_all(ARMCPU *cpu) diff --git a/target/i386/tcg/system/bpt_helper.c b/target/i386/tcg/system/bpt_helper.c index 23f2d05126..c0c63e3e89 100644 --- a/target/i386/tcg/system/bpt_helper.c +++ b/target/i386/tcg/system/bpt_helper.c @@ -57,7 +57,6 @@ static int hw_breakpoint_insert(CPUX86State *env, int index) CPUState *cs = env_cpu(env); target_ulong dr7 = env->dr[7]; target_ulong drN = env->dr[index]; - int err = 0; switch (hw_breakpoint_type(dr7, index)) { case DR7_TYPE_BP_INST: @@ -73,25 +72,22 @@ static int hw_breakpoint_insert(CPUX86State *env, int index) case DR7_TYPE_DATA_WR: if (hw_breakpoint_enabled(dr7, index)) { - err = cpu_watchpoint_insert(cs, drN, - hw_breakpoint_len(dr7, index), - BP_CPU | BP_MEM_WRITE, index, - &env->cpu_watchpoint[index]); + env->cpu_watchpoint[index] = + cpu_watchpoint_insert(cs, drN, + hw_breakpoint_len(dr7, index), + BP_CPU | BP_MEM_WRITE, index); } break; case DR7_TYPE_DATA_RW: if (hw_breakpoint_enabled(dr7, index)) { - err = cpu_watchpoint_insert(cs, drN, - hw_breakpoint_len(dr7, index), - BP_CPU | BP_MEM_ACCESS, index, - &env->cpu_watchpoint[index]); + env->cpu_watchpoint[index] = + cpu_watchpoint_insert(cs, drN, + hw_breakpoint_len(dr7, index), + BP_CPU | BP_MEM_ACCESS, index); } break; } - if (err) { - env->cpu_breakpoint[index] = NULL; - } return 0; } diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index a25c8ae2f1..fbd199c08d 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -171,8 +171,8 @@ void ppc_update_daw(CPUPPCState *env, int rid) flags |= BP_MEM_WRITE; } - cpu_watchpoint_insert(cs, deaw, len, flags, rid, - &env->dawr_watchpoint[rid]); + env->dawr_watchpoint[rid] = + cpu_watchpoint_insert(cs, deaw, len, flags, rid); } void ppc_store_dawr0(CPUPPCState *env, target_ulong val) diff --git a/target/riscv/debug.c b/target/riscv/debug.c index d6bba24c81..6777f1a905 100644 --- a/target/riscv/debug.c +++ b/target/riscv/debug.c @@ -481,7 +481,6 @@ static void type2_breakpoint_insert(CPURISCVState *env, target_ulong index) bool enabled = type2_breakpoint_enabled(ctrl); CPUState *cs = env_cpu(env); BreakpointFlags flags = BP_CPU | BP_STOP_BEFORE_ACCESS; - uint32_t size, def_size; if (!enabled) { return; @@ -499,16 +498,12 @@ static void type2_breakpoint_insert(CPURISCVState *env, target_ulong index) } if (flags & BP_MEM_ACCESS) { - size = type2_breakpoint_size(env, ctrl); - if (size != 0) { - cpu_watchpoint_insert(cs, addr, size, flags, index, - &env->cpu_watchpoint[index]); - } else { - def_size = riscv_cpu_mxl(env) == MXL_RV64 ? 8 : 4; - - cpu_watchpoint_insert(cs, addr, def_size, flags, index, - &env->cpu_watchpoint[index]); + uint32_t size = type2_breakpoint_size(env, ctrl); + if (size == 0) { + size = riscv_cpu_mxl(env) == MXL_RV64 ? 8 : 4; } + env->cpu_watchpoint[index] = + cpu_watchpoint_insert(cs, addr, size, flags, index); } } @@ -606,7 +601,6 @@ static void type6_breakpoint_insert(CPURISCVState *env, target_ulong index) bool enabled = type6_breakpoint_enabled(ctrl); CPUState *cs = env_cpu(env); BreakpointFlags flags = BP_CPU | BP_STOP_BEFORE_ACCESS; - uint32_t size; if (!enabled) { return; @@ -625,14 +619,10 @@ static void type6_breakpoint_insert(CPURISCVState *env, target_ulong index) } if (flags & BP_MEM_ACCESS) { - size = extract32(ctrl, 16, 4); - if (size != 0) { - cpu_watchpoint_insert(cs, addr, size, flags, index, - &env->cpu_watchpoint[index]); - } else { - cpu_watchpoint_insert(cs, addr, 8, flags, index, - &env->cpu_watchpoint[index]); - } + uint32_t size = extract32(ctrl, 16, 4) ? : 8; + + env->cpu_watchpoint[index] = + cpu_watchpoint_insert(cs, addr, size, flags, index); } } diff --git a/target/s390x/tcg/debug.c b/target/s390x/tcg/debug.c index 25968d9a3c..bd30b85ada 100644 --- a/target/s390x/tcg/debug.c +++ b/target/s390x/tcg/debug.c @@ -34,18 +34,18 @@ void s390_cpu_recompute_watchpoints(CPUState *cs) if (env->cregs[10] == 0 && env->cregs[11] == -1LL) { /* We can't create a watchoint spanning the whole memory range, so split it in two parts. */ - cpu_watchpoint_insert(cs, 0, 1ULL << 63, wp_flags, 0, NULL); - cpu_watchpoint_insert(cs, 1ULL << 63, 1ULL << 63, wp_flags, 0, NULL); + cpu_watchpoint_insert(cs, 0, 1ULL << 63, wp_flags, 0); + cpu_watchpoint_insert(cs, 1ULL << 63, 1ULL << 63, wp_flags, 0); } else if (env->cregs[10] > env->cregs[11]) { /* The address range loops, create two watchpoints. */ cpu_watchpoint_insert(cs, env->cregs[10], -env->cregs[10], - wp_flags, 0, NULL); - cpu_watchpoint_insert(cs, 0, env->cregs[11] + 1, wp_flags, 0, NULL); + wp_flags, 0); + cpu_watchpoint_insert(cs, 0, env->cregs[11] + 1, wp_flags, 0); } else { /* Default case, create a single watchpoint. */ cpu_watchpoint_insert(cs, env->cregs[10], env->cregs[11] - env->cregs[10] + 1, - wp_flags, 0, NULL); + wp_flags, 0); } } diff --git a/target/xtensa/dbg_helper.c b/target/xtensa/dbg_helper.c index 9df0c519b3..ae3791ac23 100644 --- a/target/xtensa/dbg_helper.c +++ b/target/xtensa/dbg_helper.c @@ -97,13 +97,9 @@ static void set_dbreak(CPUXtensaState *env, unsigned i, uint32_t dbreaka, /* cut mask after the first zero bit */ mask = 0xffffffff << (32 - clo32(mask)); } - if (cpu_watchpoint_insert(cs, dbreaka & mask, ~mask + 1, - flags, i, &env->cpu_watchpoint[i])) { - env->cpu_watchpoint[i] = NULL; - qemu_log_mask(LOG_GUEST_ERROR, - "Failed to set data breakpoint at 0x%08x/%d\n", - dbreaka & mask, ~mask + 1); - } + + env->cpu_watchpoint[i] = + cpu_watchpoint_insert(cs, dbreaka & mask, ~mask + 1, flags, i); } void HELPER(wsr_dbreaka)(CPUXtensaState *env, uint32_t i, uint32_t v) -- 2.43.0
