aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-25 22:13:57 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-25 22:13:57 +0000
commitc0ce998e94fadb7fdc83dbc7455372af933f8fa9 (patch)
tree693b71edb466649af8b432e593464f5b217562e8 /target-i386
parentAdd TAILQ_FOREACH_SAFE (Jan Kiszka) (diff)
downloadqemu-kvm-c0ce998e94fadb7fdc83dbc7455372af933f8fa9.tar.gz
qemu-kvm-c0ce998e94fadb7fdc83dbc7455372af933f8fa9.tar.bz2
qemu-kvm-c0ce998e94fadb7fdc83dbc7455372af933f8fa9.zip
Use sys-queue.h for break/watchpoint managment (Jan Kiszka)
This switches cpu_break/watchpoint_* to TAILQ wrappers, simplifying the code and also fixing a use after release issue in cpu_break/watchpoint_remove_all. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5799 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-i386')
-rw-r--r--target-i386/helper.c2
-rw-r--r--target-i386/translate.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 2a61cb0cc..037540d79 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1364,7 +1364,7 @@ static void breakpoint_handler(CPUState *env)
cpu_resume_from_signal(env, NULL);
}
} else {
- for (bp = env->breakpoints; bp != NULL; bp = bp->next)
+ TAILQ_FOREACH(bp, &env->breakpoints, entry)
if (bp->pc == env->eip) {
if (bp->flags & BP_CPU) {
check_hw_breakpoints(env, 1);
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 0de238b57..612811b02 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -7606,8 +7606,8 @@ static inline void gen_intermediate_code_internal(CPUState *env,
gen_icount_start();
for(;;) {
- if (unlikely(env->breakpoints)) {
- for (bp = env->breakpoints; bp != NULL; bp = bp->next) {
+ if (unlikely(!TAILQ_EMPTY(&env->breakpoints))) {
+ TAILQ_FOREACH(bp, &env->breakpoints, entry) {
if (bp->pc == pc_ptr) {
gen_debug(dc, pc_ptr - dc->cs_base);
break;