Only exit TB if pc is within the memory range

This commit is contained in:
2022-05-07 00:16:31 +02:00
parent 20c0a4b643
commit 345b63ee96
13 changed files with 83 additions and 5 deletions

View File

@@ -16,7 +16,13 @@ ARMCPU *cpu_arm_init(struct uc_struct *uc);
static void arm_set_pc(struct uc_struct *uc, uint64_t address)
{
((CPUARMState *)uc->cpu->env_ptr)->pc = address;
((CPUARMState *)uc->cpu->env_ptr)->regs[15] = address;
((CPUARMState *)uc->cpu->env_ptr)->regs[15] = address & ~1;
((CPUARMState *)uc->cpu->env_ptr)->thumb = address & 1;
}
static uint64_t arm_get_pc(struct uc_struct *uc)
{
return ((CPUARMState *)uc->cpu->env_ptr)->regs[15] | ((CPUARMState *)uc->cpu->env_ptr)->thumb;
}
static void arm_release(void *ctx)
@@ -591,6 +597,7 @@ void arm_uc_init(struct uc_struct *uc)
uc->reg_write = arm_reg_write;
uc->reg_reset = arm_reg_reset;
uc->set_pc = arm_set_pc;
uc->get_pc = arm_get_pc;
uc->stop_interrupt = arm_stop_interrupt;
uc->release = arm_release;
uc->query = arm_query;