diff --git a/qemu/target/arm/cpu.h b/qemu/target/arm/cpu.h index c2829415..1a6a8475 100644 --- a/qemu/target/arm/cpu.h +++ b/qemu/target/arm/cpu.h @@ -425,7 +425,7 @@ typedef struct CPUARMState { struct { uint32_t other_sp; - uint32_t vecbase; + uint32_t vecbase[2]; uint32_t basepri[2]; uint32_t control[2]; uint32_t ccr; /* Configuration and Control */ diff --git a/qemu/target/arm/helper.c b/qemu/target/arm/helper.c index e75faad1..734d2705 100644 --- a/qemu/target/arm/helper.c +++ b/qemu/target/arm/helper.c @@ -5325,7 +5325,7 @@ static uint32_t arm_v7m_load_vector(ARMCPU *cpu) CPUState *cs = CPU(cpu); CPUARMState *env = &cpu->env; MemTxResult result; - hwaddr vec = env->v7m.vecbase + env->v7m.exception * 4; + hwaddr vec = env->v7m.vecbase[env->v7m.secure] + env->v7m.exception * 4; uint32_t addr; addr = address_space_ldl(cs->as, vec,