diff --git a/qemu/target-arm/unicorn_arm.c b/qemu/target-arm/unicorn_arm.c index d5b9a7d9..5ff9ebbe 100644 --- a/qemu/target-arm/unicorn_arm.c +++ b/qemu/target-arm/unicorn_arm.c @@ -215,7 +215,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(uc, mycpu)->env.thumb != 0)? UC_MODE_THUMB : UC_MODE_ARM); + mode |= ((ARM_CPU(uc, 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 f7ff5eb1..4fc0d9fa 100644 --- a/uc.c +++ b/uc.c @@ -1282,7 +1282,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;