diff options
| -rw-r--r-- | miasm2/arch/x86/regs.py | 5 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_x86.c | 20 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_x86.h | 2 |
3 files changed, 25 insertions, 2 deletions
diff --git a/miasm2/arch/x86/regs.py b/miasm2/arch/x86/regs.py index 9c87834f..3bca8fe2 100644 --- a/miasm2/arch/x86/regs.py +++ b/miasm2/arch/x86/regs.py @@ -6,6 +6,7 @@ IP = ExprId('IP', 16) EIP = ExprId('EIP', 32) RIP = ExprId('RIP', 64) exception_flags = ExprId('exception_flags', 32) +interrupt_num = ExprId('interrupt_num', 8) # GP @@ -399,7 +400,7 @@ all_regs_ids = [ XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, - exception_flags, + exception_flags, interrupt_num, ] + fltregs32_expr all_regs_ids_no_alias = [ @@ -421,7 +422,7 @@ all_regs_ids_no_alias = [ XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, - exception_flags, + exception_flags, interrupt_num, ] + fltregs32_expr all_regs_ids_byname = dict([(x.name, x) for x in all_regs_ids]) diff --git a/miasm2/jitter/arch/JitCore_x86.c b/miasm2/jitter/arch/JitCore_x86.c index dd4ce7cb..9d15cd20 100644 --- a/miasm2/jitter/arch/JitCore_x86.c +++ b/miasm2/jitter/arch/JitCore_x86.c @@ -197,9 +197,25 @@ PyObject* cpu_get_exception(JitCpu* self, PyObject* args) return PyLong_FromUnsignedLongLong((uint64_t)(((vm_cpu_t*)self->cpu)->exception_flags)); } +PyObject* cpu_set_interrupt_num(JitCpu* self, PyObject* args) +{ + PyObject *item1; + uint64_t i; + if (!PyArg_ParseTuple(args, "O", &item1)) + return NULL; + + PyGetInt(item1, i); + ((vm_cpu_t*)self->cpu)->interrupt_num = i; + Py_INCREF(Py_None); + return Py_None; +} +PyObject* cpu_get_interrupt_num(JitCpu* self, PyObject* args) +{ + return PyLong_FromUnsignedLongLong((uint64_t)(((vm_cpu_t*)self->cpu)->interrupt_num)); +} PyObject* cpu_set_segm_base(JitCpu* self, PyObject* args) { @@ -349,6 +365,10 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"}, + {"get_interrupt_num", (PyCFunction)cpu_get_interrupt_num, METH_VARARGS, + "X"}, + {"set_interrupt_num", (PyCFunction)cpu_set_interrupt_num, METH_VARARGS, + "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm2/jitter/arch/JitCore_x86.h b/miasm2/jitter/arch/JitCore_x86.h index 7e518395..c90c10b8 100644 --- a/miasm2/jitter/arch/JitCore_x86.h +++ b/miasm2/jitter/arch/JitCore_x86.h @@ -2,6 +2,8 @@ typedef struct { uint32_t exception_flags; uint32_t exception_flags_new; + uint32_t interrupt_num; + uint32_t interrupt_num_new; /* gpregs */ |