aboutsummaryrefslogtreecommitdiff
path: root/target-i386/bpt_helper.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2015-09-15 11:45:10 -0700
committerEduardo Habkost <ehabkost@redhat.com>2015-10-23 12:59:27 -0200
commit696ad9e4b27a49a9706010d00b31b17fe1f0d569 (patch)
tree54270c726fb01863db9415dfaeb8a180b96405db /target-i386/bpt_helper.c
parent9055330ffbf5ca85f024c29874799d9c8bd17aa9 (diff)
target-i386: Move hw_*breakpoint_* functions
They're only used from bpt_helper.c now. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target-i386/bpt_helper.c')
-rw-r--r--target-i386/bpt_helper.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/target-i386/bpt_helper.c b/target-i386/bpt_helper.c
index 49472ea85b..ca58ab78c7 100644
--- a/target-i386/bpt_helper.c
+++ b/target-i386/bpt_helper.c
@@ -22,6 +22,33 @@
#ifndef CONFIG_USER_ONLY
+static inline bool hw_local_breakpoint_enabled(unsigned long dr7, int index)
+{
+ return (dr7 >> (index * 2)) & 1;
+}
+
+static inline bool hw_global_breakpoint_enabled(unsigned long dr7, int index)
+{
+ return (dr7 >> (index * 2)) & 2;
+
+}
+static inline bool hw_breakpoint_enabled(unsigned long dr7, int index)
+{
+ return hw_global_breakpoint_enabled(dr7, index) ||
+ hw_local_breakpoint_enabled(dr7, index);
+}
+
+static inline int hw_breakpoint_type(unsigned long dr7, int index)
+{
+ return (dr7 >> (DR7_TYPE_SHIFT + (index * 4))) & 3;
+}
+
+static inline int hw_breakpoint_len(unsigned long dr7, int index)
+{
+ int len = ((dr7 >> (DR7_LEN_SHIFT + (index * 4))) & 3);
+ return (len == 2) ? 8 : len + 1;
+}
+
static void hw_breakpoint_insert(CPUX86State *env, int index)
{
CPUState *cs = CPU(x86_env_get_cpu(env));
@@ -116,7 +143,6 @@ void cpu_x86_update_dr7(CPUX86State *env, uint32_t new_dr7)
}
}
}
-#endif
static bool check_hw_breakpoints(CPUX86State *env, bool force_dr6_update)
{
@@ -187,6 +213,7 @@ void breakpoint_handler(CPUState *cs)
}
}
}
+#endif
void helper_single_step(CPUX86State *env)
{