[email protected] writes:

> Signed-off-by: Janne Grunau <[email protected]>
> ---
>  linux-user/main.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/main.c b/linux-user/main.c
> index cabc9e1..9192977 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -953,7 +953,8 @@ static int do_strex_a64(CPUARMState *env)
>              goto finish;
>          }
>      }
> -    val = env->xregs[rt];
> +    /* handle the zero register */
> +    val = rt == 31 ? 0 : env->xregs[rt];
>      switch (size) {
>      case 0:
>          segv = put_user_u8(val, addr);
> @@ -972,7 +973,8 @@ static int do_strex_a64(CPUARMState *env)
>          goto error;
>      }
>      if (is_pair) {
> -        val = env->xregs[rt2];
> +        /* handle the zero register */
> +        val = rt2 == 31 ? 0 : env->xregs[rt2];
>          if (size == 2) {
>              segv = put_user_u32(val, addr + 4);
>          } else {

Looks good to me. I'll have a scan through the other helpers to see if
we've missed any other similar thinkos.

Reviewed-by: Alex Bennée <[email protected]>


-- 
Alex Bennée


Reply via email to