Commit f151b123 authored by Edgar E. Iglesias's avatar Edgar E. Iglesias Committed by Peter Maydell
Browse files

target-arm: A64: Respect SPSEL when taking exceptions



Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Signed-off-by: default avatarEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: default avatarGreg Bellows <greg.bellows@linaro.org>
Message-id: 1402994746-8328-4-git-send-email-edgar.iglesias@gmail.com
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 98ea5615
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -489,8 +489,7 @@ void aarch64_cpu_do_interrupt(CPUState *cs)

    if (is_a64(env)) {
        env->banked_spsr[aarch64_banked_spsr_index(1)] = pstate_read(env);
        env->sp_el[arm_current_pl(env)] = env->xregs[31];
        env->xregs[31] = env->sp_el[1];
        aarch64_save_sp(env, arm_current_pl(env));
        env->elr_el[1] = env->pc;
    } else {
        env->banked_spsr[0] = cpsr_read(env);
@@ -508,6 +507,7 @@ void aarch64_cpu_do_interrupt(CPUState *cs)

    pstate_write(env, PSTATE_DAIF | PSTATE_MODE_EL1h);
    env->aarch64 = 1;
    aarch64_restore_sp(env, 1);

    env->pc = addr;
    cs->interrupt_request |= CPU_INTERRUPT_EXITTB;