diff --git a/qemu/target/arm/unicorn_arm.c b/qemu/target/arm/unicorn_arm.c index 9a5a698d..e582691f 100644 --- a/qemu/target/arm/unicorn_arm.c +++ b/qemu/target/arm/unicorn_arm.c @@ -456,7 +456,7 @@ static uc_err arm_query(struct uc_struct *uc, uc_query_type type, size_t *result // zero out ARM/THUMB mode mode = uc->mode & ~(UC_MODE_ARM | UC_MODE_THUMB); // THUMB mode or ARM MOde - mode += ((ARM_CPU(mycpu)->env.thumb != 0)? UC_MODE_THUMB : UC_MODE_ARM); + mode |= ((ARM_CPU(mycpu)->env.thumb != 0)? UC_MODE_THUMB : UC_MODE_ARM); *result = mode; return UC_ERR_OK; default: diff --git a/uc.c b/uc.c index 3e24674c..bc50b9ba 100644 --- a/uc.c +++ b/uc.c @@ -1444,7 +1444,8 @@ uc_err uc_query(uc_engine *uc, uc_query_type type, size_t *result) return uc->query(uc, type, result); } #endif - return UC_ERR_ARG; + *result = uc->mode; + break; case UC_QUERY_TIMEOUT: *result = uc->timed_out;