about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2015-12-16 15:52:57 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2015-12-16 15:52:57 +0100
commitb998b1a8b2814585692e885e656c48357fbbb9b8 (patch)
tree546b40e8bbfd7f8ee6ece5c1bcd5176f3c06d3de
parent50bd2c19a44cf511264f4d56f833a3e416441fef (diff)
parentfd4130d5ed14885557381cdb5fc7342abf29eb48 (diff)
downloadmiasm-b998b1a8b2814585692e885e656c48357fbbb9b8.tar.gz
miasm-b998b1a8b2814585692e885e656c48357fbbb9b8.zip
Merge pull request #285 from serpilliere/fix_except_priv
Fix except priv
-rw-r--r--miasm2/arch/x86/sem.py1
-rw-r--r--miasm2/jitter/csts.py2
-rw-r--r--miasm2/jitter/jitload.py7
3 files changed, 5 insertions, 5 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index 800a1fa2..802b6283 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -660,7 +660,6 @@ def cli(ir, instr):
 
 def sti(ir, instr):
     e = [m2_expr.ExprAff(exception_flags, m2_expr.ExprInt32(EXCEPT_PRIV_INSN))]
-    e = []  # XXX TODO HACK
     return e, []
 
 
diff --git a/miasm2/jitter/csts.py b/miasm2/jitter/csts.py
index e4b315e1..b71e9463 100644
--- a/miasm2/jitter/csts.py
+++ b/miasm2/jitter/csts.py
@@ -11,6 +11,8 @@ EXCEPT_INT_XX = (1 << 2)
 EXCEPT_BREAKPOINT_INTERN = (1 << 10)
 
 EXCEPT_ACCESS_VIOL = ((1 << 14) | EXCEPT_DO_NOT_UPDATE_PC)
+EXCEPT_DIV_BY_ZERO = ((1 << 16) | EXCEPT_DO_NOT_UPDATE_PC)
+EXCEPT_PRIV_INSN = ((1 << 17) | EXCEPT_DO_NOT_UPDATE_PC)
 # VM Mngr constants
 
 PAGE_READ = 1
diff --git a/miasm2/jitter/jitload.py b/miasm2/jitter/jitload.py
index a035445b..2335cc3c 100644
--- a/miasm2/jitter/jitload.py
+++ b/miasm2/jitter/jitload.py
@@ -144,12 +144,11 @@ class CallbackHandlerBitflag(CallbackHandler):
         Iterator on other results"""
 
         res = True
-        for b in self.callbacks:
-
-            if b & bitflag != 0:
+        for bitflag_expected in self.callbacks:
+            if bitflag_expected & bitflag == bitflag_expected:
                 # If the flag matched
                 for res in super(CallbackHandlerBitflag,
-                                 self).call_callbacks(b, *args):
+                                 self).call_callbacks(bitflag_expected, *args):
                     if res is not True:
                         yield res