[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 17/22] target-arm: A64: Generalize ERET to va
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH v1 17/22] target-arm: A64: Generalize ERET to various ELs |
Date: |
Wed, 7 May 2014 16:09:56 +1000 |
On Tue, May 6, 2014 at 4:08 PM, Edgar E. Iglesias
<address@hidden> wrote:
> From: "Edgar E. Iglesias" <address@hidden>
>
> Adds support for ERET to Aarch64 EL2 and 3.
>
> Signed-off-by: Edgar E. Iglesias <address@hidden>
> ---
> target-arm/op_helper.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c
> index f1ae05e..8494f7f 100644
> --- a/target-arm/op_helper.c
> +++ b/target-arm/op_helper.c
> @@ -386,13 +386,14 @@ void HELPER(msr_i_pstate)(CPUARMState *env, uint32_t
> op, uint32_t imm)
>
> void HELPER(exception_return)(CPUARMState *env)
> {
> - unsigned int spsr_idx = arm64_banked_spsr_index(1);
> - uint32_t spsr = env->banked_spsr[spsr_idx];
> - int new_el, i;
> int cur_el = arm_current_pl(env);
> + unsigned int spsr_idx = arm64_banked_spsr_index(cur_el);
> + uint32_t spsr;
> + int new_el, i;
>
> + spsr = env->banked_spsr[spsr_idx];
Why change to split declaration and assignment (amongst the other
all-in-one's above)?
Otherwise:
Reviewed-by: Peter Crosthwaite <address@hidden>
> if (env->pstate & PSTATE_SP) {
> - env->sp_el[1] = env->xregs[31];
> + env->sp_el[cur_el] = env->xregs[31];
> } else {
> env->sp_el[0] = env->xregs[31];
> }
> @@ -428,7 +429,7 @@ void HELPER(exception_return)(CPUARMState *env)
> env->aarch64 = 1;
> pstate_write(env, spsr);
> env->xregs[31] = env->sp_el[new_el];
> - env->pc = env->elr_el[ELR_EL_IDX(1)];
> + env->pc = env->elr_el[ELR_EL_IDX(cur_el)];
> }
>
> return;
> @@ -442,7 +443,7 @@ illegal_return:
> * no change to exception level, execution state or stack pointer
> */
> env->pstate |= PSTATE_IL;
> - env->pc = env->elr_el[ELR_EL_IDX(1)];
> + env->pc = env->elr_el[ELR_EL_IDX(cur_el)];
> spsr &= PSTATE_NZCV | PSTATE_DAIF;
> spsr |= pstate_read(env) & ~(PSTATE_NZCV | PSTATE_DAIF);
> pstate_write(env, spsr);
> --
> 1.8.3.2
>
>
- Re: [Qemu-devel] [PATCH v1 13/22] target-arm: Register EL2 versions of ELR and SPSR, (continued)
- [Qemu-devel] [PATCH v1 14/22] target-arm: Register EL3 versions of ELR and SPSR, Edgar E. Iglesias, 2014/05/06
- [Qemu-devel] [PATCH v1 15/22] target-arm: A64: Forbid ERET to increase the EL, Edgar E. Iglesias, 2014/05/06
- [Qemu-devel] [PATCH v1 16/22] target-arm: A64: Forbid ERET to unimplemented ELs, Edgar E. Iglesias, 2014/05/06
- [Qemu-devel] [PATCH v1 17/22] target-arm: A64: Generalize ERET to various ELs, Edgar E. Iglesias, 2014/05/06
- Re: [Qemu-devel] [PATCH v1 17/22] target-arm: A64: Generalize ERET to various ELs,
Peter Crosthwaite <=
- [Qemu-devel] [PATCH v1 18/22] target-arm: A64: Generalize update_spsel for the various ELs, Edgar E. Iglesias, 2014/05/06
- [Qemu-devel] [PATCH v1 19/22] target-arm: Add storage for VBAR_EL2 and 3, Edgar E. Iglesias, 2014/05/06
- [Qemu-devel] [PATCH v1 20/22] target-arm: Make vbar_write writeback to any CPREG, Edgar E. Iglesias, 2014/05/06