diff mbox

arm64: Set source for ret instruction correctly.

Message ID 1387836029-17163-1-git-send-email-rjones@redhat.com
State New
Headers show

Commit Message

Richard W.M. Jones Dec. 23, 2013, 10 p.m. UTC
From: "Richard W.M. Jones" <rjones@redhat.com>

Fixes https://bugs.launchpad.net/qemu/+bug/1263747

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
---
 target-arm/translate-a64.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Peter Maydell Dec. 23, 2013, 10:17 p.m. UTC | #1
On 23 December 2013 22:00, Richard W.M. Jones <rjones@redhat.com> wrote:
> From: "Richard W.M. Jones" <rjones@redhat.com>
>
> Fixes https://bugs.launchpad.net/qemu/+bug/1263747
>
> Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
> Tested-by: Richard W.M. Jones <rjones@redhat.com>
> ---

I'm guessing this is against the SuSE tree? Probably best to
say so specifically, because this code is different in mainline.
CC'ing Alex who might also care about SuSE tree fixes.


>  target-arm/translate-a64.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c
> index 36ebb0f..29454b0 100644
> --- a/target-arm/translate-a64.c
> +++ b/target-arm/translate-a64.c
> @@ -273,7 +273,6 @@ static void handle_br(DisasContext *s, uint32_t insn)
>          tcg_gen_movi_i64(cpu_reg(30), s->pc);
>          break;
>      case 2: /* RET */
> -        source = 30;
>          break;
>      case 3:
>          unallocated_encoding(s);
> --
> 1.8.3.1
>

FWIW mainline's handling of this insn doesn't have this bug.

thanks
-- PMM
Richard W.M. Jones Dec. 24, 2013, 8:45 a.m. UTC | #2
On Mon, Dec 23, 2013 at 10:17:15PM +0000, Peter Maydell wrote:
> FWIW mainline's handling of this insn doesn't have this bug.

OT: Is there a clear explanation of the various aarch64 trees?
I noticed that upstream qemu has some files like target-arm/
translate-a64.c, but it didn't (and still doesn't) appear to work:

  + ./configure '--target-list=arm64-linux-user i386-softmmu x86_64-softmmu arm-softmmu ppc-softmmu ppc64-softmmu' '--extra-ldflags=-pie -Wl,-z,relro -Wl,-z,now' '--extra-cflags=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -fPIE -DPIE' --disable-werror --disable-xen --enable-kvm --enable-tpm

  ERROR: Unknown target name 'arm64-linux-user'

I found the SuSE tree and it works, but the code is quite different
from the upstream tree.

Rich.
Peter Maydell Dec. 24, 2013, 10:33 a.m. UTC | #3
On 24 December 2013 08:45, Richard W.M. Jones <rjones@redhat.com> wrote:
> On Mon, Dec 23, 2013 at 10:17:15PM +0000, Peter Maydell wrote:
>> FWIW mainline's handling of this insn doesn't have this bug.
>
> OT: Is there a clear explanation of the various aarch64 trees?
> I noticed that upstream qemu has some files like target-arm/
> translate-a64.c, but it didn't (and still doesn't) appear to work:
>
>   + ./configure '--target-list=arm64-linux-user i386-softmmu x86_64-softmmu arm-softmmu ppc-softmmu ppc64-softmmu' '--extra-ldflags=-pie -Wl,-z,relro -Wl,-z,now' '--extra-cflags=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -fPIE -DPIE' --disable-werror --disable-xen --enable-kvm --enable-tpm
>
>   ERROR: Unknown target name 'arm64-linux-user'

Basically we (Linaro) are cleaning up and upstreaming the
SuSE patches (sometimes with significant rework). At the
moment upstream has some code but not enough to run
anything, so the target is currently disabled. I expect to have
enough for integer-only binaries upstream by the end of the
year [remaining patches are on-list for review], with FP and
Neon following early next year.

The SuSE tree is basically "this is a working set of code
that SuSE uses to build things, but don't ship it with anything,
don't try to use it for any target except arm64-linux-user,
it's not really supported and it will go away as soon as everything
is upstream".

The other thing to note is that the official upstream name of
this target is 'aarch64-linux-user' (we follow the gcc toolchain
name and what the kernel reports to userspace via uname).

thanks
-- PMM
diff mbox

Patch

diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c
index 36ebb0f..29454b0 100644
--- a/target-arm/translate-a64.c
+++ b/target-arm/translate-a64.c
@@ -273,7 +273,6 @@  static void handle_br(DisasContext *s, uint32_t insn)
         tcg_gen_movi_i64(cpu_reg(30), s->pc);
         break;
     case 2: /* RET */
-        source = 30;
         break;
     case 3:
         unallocated_encoding(s);