diff options
| -rw-r--r-- | miasm2/arch/aarch64/regs.py | 3 | ||||
| -rw-r--r-- | miasm2/arch/aarch64/sem.py | 1 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_aarch64.c | 10 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_aarch64.h | 1 |
4 files changed, 14 insertions, 1 deletions
diff --git a/miasm2/arch/aarch64/regs.py b/miasm2/arch/aarch64/regs.py index 4589c17a..f2655ea7 100644 --- a/miasm2/arch/aarch64/regs.py +++ b/miasm2/arch/aarch64/regs.py @@ -4,6 +4,7 @@ from miasm2.expression.expression import * from miasm2.core.cpu import gen_reg, gen_regs exception_flags = ExprId('exception_flags', 32) +interrupt_num = ExprId('interrupt_num', 32) gpregs32_str = ["W%d" % i for i in xrange(0x1f)] + ["WSP"] @@ -86,7 +87,7 @@ all_regs_ids = [ X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, LR, SP, - exception_flags, + exception_flags, interrupt_num, PC, WZR, zf, nf, of, cf, diff --git a/miasm2/arch/aarch64/sem.py b/miasm2/arch/aarch64/sem.py index 56c37710..57f4a658 100644 --- a/miasm2/arch/aarch64/sem.py +++ b/miasm2/arch/aarch64/sem.py @@ -148,6 +148,7 @@ ctx = {"PC": PC, "extend_arg": extend_arg, "m2_expr":m2_expr, "exception_flags": exception_flags, + "interrupt_num": interrupt_num, "EXCEPT_DIV_BY_ZERO": EXCEPT_DIV_BY_ZERO, } diff --git a/miasm2/jitter/arch/JitCore_aarch64.c b/miasm2/jitter/arch/JitCore_aarch64.c index 03113d30..e10d847e 100644 --- a/miasm2/jitter/arch/JitCore_aarch64.c +++ b/miasm2/jitter/arch/JitCore_aarch64.c @@ -50,6 +50,10 @@ reg_dict gpreg_dict[] = { {.name = "nf", .offset = offsetof(vm_cpu_t, nf)}, {.name = "of", .offset = offsetof(vm_cpu_t, of)}, {.name = "cf", .offset = offsetof(vm_cpu_t, cf)}, + + {.name = "exception_flags", .offset = offsetof(vm_cpu_t, exception_flags)}, + {.name = "interrupt_num", .offset = offsetof(vm_cpu_t, interrupt_num)}, + }; /************************** JitCpu object **************************/ @@ -375,6 +379,9 @@ getset_reg_u32(of); getset_reg_u32(cf); +getset_reg_u32(exception_flags); +getset_reg_u32(interrupt_num); + PyObject* get_gpreg_offset_all(void) { @@ -485,6 +492,9 @@ static PyGetSetDef JitCpu_getseters[] = { {"of", (getter)JitCpu_get_of, (setter)JitCpu_set_of, "of", NULL}, {"cf", (getter)JitCpu_get_cf, (setter)JitCpu_set_cf, "cf", NULL}, + {"exception_flags", (getter)JitCpu_get_exception_flags, (setter)JitCpu_set_exception_flags, "exception_flags", NULL}, + {"interrupt_num", (getter)JitCpu_get_interrupt_num, (setter)JitCpu_set_interrupt_num, "interrupt_num", NULL}, + {NULL} /* Sentinel */ }; diff --git a/miasm2/jitter/arch/JitCore_aarch64.h b/miasm2/jitter/arch/JitCore_aarch64.h index 4635b395..c7fc3cea 100644 --- a/miasm2/jitter/arch/JitCore_aarch64.h +++ b/miasm2/jitter/arch/JitCore_aarch64.h @@ -1,6 +1,7 @@ typedef struct { uint32_t exception_flags; + uint32_t interrupt_num; /* gpregs */ |