On Thu, May 16, 2013 at 8:47 PM, John Rigby wrote:
> On Thu, May 16, 2013 at 5:23 AM, Peter Maydell
> wrote:
>> On 16 May 2013 12:09, Mian M. Hamayun
>> wrote:
>>> Hello Everyone,
>>>
>>> I am currently trying to compile qemu for Aarch64 but so
On Thu, May 16, 2013 at 5:23 AM, Peter Maydell wrote:
> On 16 May 2013 12:09, Mian M. Hamayun
> wrote:
>> Hello Everyone,
>>
>> I am currently trying to compile qemu for Aarch64 but so far I haven't been
>> able to configure qemu for this purpose.
>> My first objective is to just configure and c
On Tue, May 14, 2013 at 10:31 AM, Richard Henderson wrote:
> On 05/13/2013 09:32 PM, John Rigby wrote:
>> +#ifdef TARGET_AARCH64
>> + return state->sp;
>> +#else
>> return state->regs[13];
>> +#endif
>
> Merge error. You changed that to xreg[31].
Thanks, fixed locally for v5.
From: Alexander Graf
The AArch64 syscall definitions are all publicly available in the Linux
kernel. Let's add them to our linux-user emulation target, so that we
can easily handle AArch64 syscalls.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Put aa
kernel version than that.
To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v4:
- Go back to original way of doing this as I lack the c
linux-user should
be sound for AArch64.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/syscall.c | 5 +++--
linux-user/syscall_defs.h | 28 ++--
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/linux-user/syscall.c b/linux
From: Alexander Graf
This patch adds support for AArch64 in all the small corners of
linux-user and beyond.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
changes in v3:
- Aarch64 files go in linux-user/aarch64 instead of ifdefs
in linux-user/arm
changes in v4:
- fix more
From: Alexander Graf
32-bit ARM has a lot of different names for different types of CPUs it supports.
On AArch64, we don't have this, so we really don't want to execute the 32-bit
logic. Stub it out for AArch64 linux-user guests.
Signed-off-by: Alexander Graf
Signed-off-by:
From: Andreas Schwab
This patch adds signal handling for AArch64. The code is based on the
respective source in the Linux kernel.
Signed-off-by: Andreas Schwab
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Remove unneeded __{put,get}__user error checking
- Fix
From: Alexander Graf
If we want to compile a target machine type that is AArch64 capable,
we need to add a new 64-bit capable ARM target. Use AArch64 since that
is the official ARM LTD name.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Arch aarch64 gets its
From: Alexander Graf
We want to be able to debug AArch64 guests. So let's add the respective gdb
stub functions and xml descriptions that allow us to do so.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- fix checkpatch.pl issues
Changes in v4:
- env->sp
From: Alexander Graf
The cpu_env tcg variable will be used by both the AArch32 and AArch64
handling code. Unstaticify it, so that both sides can make use of it.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- None because consensus alternative to non static arm
er we can handle the
current code in the legacy AArch32 code or in the new AArch64 code.
So far, the translation always complains about unallocated instructions. There
is no emulator functionality in this patch!
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v2:
- Remove
nning in aarch64 mode vs aarch32 mode.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v2:
- remove many uses of is_a64 that are not needed since the 32/64 choice
happens at a higher level
- add ARM_TBFLAG_AARCH64_STATE and aarch64_state
Changes in v3:
- change xregs
From: Alexander Graf
We will need to share the disassembly status struct between AArch32 and
AArch64 modes. So put it into a header file that both sides can use.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
target-arm/translate.c | 24 +---
target-arm
More clean up.
Cross compile tested for aarch64 linux-user target and armhf softmmu.
Alexander Graf (11):
ARM: Extract the disas struct to a header file
ARM: Export cpu_env
ARM: Prepare translation for AArch64 code
ARM: Add AArch64 translation stub
AArch64: Add gdb stub
linux-user: Don
Sorry about this. I'll rebase and add an mach-virt for aarch64 patch
and send out a v4. Please just ignore this mess untill then.
On Mon, May 13, 2013 at 2:54 AM, Peter Maydell wrote:
> On 13 May 2013 07:57, John Rigby wrote:
>> Resend of v3 with part 6 removed and change
er we can handle the
current code in the legacy AArch32 code or in the new AArch64 code.
So far, the translation always complains about unallocated instructions. There
is no emulator functionality in this patch!
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v2:
- Remove
From: Alexander Graf
This patch adds support for AArch64 in all the small corners of
linux-user and beyond.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Aarch64 files go in linux-user/aarch64 instead of ifdefs in linux-user/arm
default-configs/aarch64-linux
From: Andreas Schwab
This patch adds signal handling for AArch64. The code is based on the
respective source in the Linux kernel.
Signed-off-by: Andreas Schwab
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Remove unneeded __{put,get}__user error checking
- Fix
linux-user should
be sound for AArch64.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/syscall.c | 5 +++--
linux-user/syscall_defs.h | 28 ++--
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/linux-user/syscall.c b/linux
From: Alexander Graf
The AArch64 syscall definitions are all publicly available in the Linux
kernel. Let's add them to our linux-user emulation target, so that we
can easily handle AArch64 syscalls.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Put aa
kernel version than that.
To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.
Do this by forcing CONFIG_UNAME_RELEASE=3.8.0 in config_target_mak
for aarch64.
Signed-off-by: Alexander Graf
Signed-off-by: John
From: Alexander Graf
If we want to compile a target machine type that is AArch64 capable,
we need to add a new 64-bit capable ARM target. Use AArch64 since that
is the official ARM LTD name.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- Arch aarch64 gets its
From: Alexander Graf
32-bit ARM has a lot of different names for different types of CPUs it supports.
On AArch64, we don't have this, so we really don't want to execute the 32-bit
logic. Stub it out for AArch64 linux-user guests.
Signed-off-by: Alexander Graf
Signed-off-by:
From: Alexander Graf
We want to be able to debug AArch64 guests. So let's add the respective gdb
stub functions and xml descriptions that allow us to do so.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- fix checkpatch.pl issues
gdb-xml/aarch64-core.xml
nning in aarch64 mode vs aarch32 mode.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v2:
- remove many uses of is_a64 that are not needed since the 32/64 choice
happens at a higher level
- add ARM_TBFLAG_AARCH64_STATE and aarch64_state
Changes in v3:
- change xregs
From: Alexander Graf
The cpu_env tcg variable will be used by both the AArch32 and AArch64
handling code. Unstaticify it, so that both sides can make use of it.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v3:
- None because consensus alternative to non static arm
Resend of v3 with part 6 removed and change notes included.
Alexander Graf (10):
ARM: Export cpu_env
ARM: Prepare translation for AArch64 code
ARM: Add AArch64 translation stub
AArch64: Add gdb stub
linux-user: Don't treat aarch64 cpu names specially
linux-user: Add syscall handling fo
From: Alexander Graf
If we want to compile a target machine type that is AArch64 capable,
we need to add a new 64-bit capable ARM target. Use AArch64 since that
is the official ARM LTD name.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
configure| 8
From: Alexander Graf
This patch adds support for AArch64 in all the small corners of
linux-user and beyond.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
default-configs/aarch64-linux-user.mak | 3 +
linux-user/aarch64/syscall.h | 37 ++
linux-user/aarch64
ignore this part 6/12 one, somehow I neglected to remove it from the series
the fix in 12/12 is the one riku recommended
From: Alexander Graf
The AArch64 syscall definitions are all publicly available in the Linux
kernel. Let's add them to our linux-user emulation target, so that we
can easily handle AArch64 syscalls.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/aarch64/syscall
From: Alexander Graf
32-bit ARM has a lot of different names for different types of CPUs it supports.
On AArch64, we don't have this, so we really don't want to execute the 32-bit
logic. Stub it out for AArch64 linux-user guests.
Signed-off-by: Alexander Graf
Signed-off-by:
kernel version than that.
To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.
Do this by forcing CONFIG_UNAME_RELEASE=3.8.0 in config_target_mak
for aarch64.
Signed-off-by: Alexander Graf
Signed-off-by: John
From: Alexander Graf
We want to be able to debug AArch64 guests. So let's add the respective gdb
stub functions and xml descriptions that allow us to do so.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
gdb-xml/aarch64-core.xml | 46 ++
gdb-xml/aa
From: Andreas Schwab
This patch adds signal handling for AArch64. The code is based on the
respective source in the Linux kernel.
Signed-off-by: Andreas Schwab
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/arm/target_signal.h | 4 +
linux-user/signal.c
kernel version than that.
To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/syscall.c | 5 +
1 file changed, 5 insertions(+)
diff --
nning in aarch64 mode vs aarch32 mode.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
include/elf.h | 2 +
target-arm/cpu.h | 140 ++---
target-arm/translate.c | 15 --
3 files changed, 111 insertions(+), 46 dele
linux-user should
be sound for AArch64.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
linux-user/syscall.c | 5 +++--
linux-user/syscall_defs.h | 28 ++--
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/linux-user/syscall.c b/linux
er we can handle the
current code in the legacy AArch32 code or in the new AArch64 code.
So far, the translation always complains about unallocated instructions. There
is no emulator functionality in this patch!
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
target-arm/Makefile
From: Alexander Graf
The cpu_env tcg variable will be used by both the AArch32 and AArch64
handling code. Unstaticify it, so that both sides can make use of it.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
target-arm/translate.c | 2 +-
target-arm/translate.h | 2 ++
2 files
Version 3 of series to add Aarch64 support.
Alexander Graf (11):
ARM: Export cpu_env
ARM: Prepare translation for AArch64 code
ARM: Add AArch64 translation stub
AArch64: Add gdb stub
linux-user: Don't treat aarch64 cpu names specially
linux-user: AArch64 requires at least 3.8.0
linux
- put qemu device creation and fdt nod creation near one another to make
it easier to keep them in sync
- use CONFIG_KVM and kvm_enabled() to differentiate between tcg and kvm
dependent code
- move memory to 0x0 and io up to 0xfff0
John Rigby (3):
ARM: Allow boards to provide an fdt blob
If no fdt is provided on command line and the new field
get_dtb in struct arm_boot_info is set then call it to
get a device tree blob.
Signed-off-by: John Rigby
---
changes in v3:
- split patch
hw/arm/boot.c| 30 +++---
include/hw/arm/arm.h | 6 ++
2 files
Add mach-virt platform support corresponding to
/arch/arm/mach-virt in kernel tree.
For now it is not virtual but instantiates a pl011 uart
and an sp804 timer. The uart is need for a console
the timer is needed when running without kvm and there
is no arch timer.
Signed-off-by: John Rigby
By calling qemu_devtree_dumpdtb near the end of load_dtb.
Signed-off-by: John Rigby
---
changes in v3:
- split patch
hw/arm/boot.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index 64b56ac..de71edf 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -312,6
On Fri, May 3, 2013 at 8:29 AM, Peter Maydell wrote:
> On 30 April 2013 17:04, John Rigby wrote:
>> Add mach-virt platform support cooresponding to
>
> "corresponding"
>
> I wonder if we should just call this "virt" ?
>
>> /arch/arm/mach-virt i
On Tue, Apr 30, 2013 at 6:36 AM, Peter Maydell wrote:
>
> On 30 April 2013 10:36, Alexander Graf wrote:
> >
> > On 30.04.2013, at 08:36, John Rigby wrote:
> >> - remove many uses of is_a64 as that is a indicator the target arch is
> >> aarch64 not what mode it
On Wed, May 1, 2013 at 4:33 AM, Peter Maydell wrote:
> On 1 May 2013 11:19, Laurent Desnogues
> wrote:
> > On Wednesday, May 1, 2013, Richard Henderson wrote:
> >> On 2013-04-30 07:36, John Rigby wrote:
> >>>
> >>> uint32_t regs
Add mach-virt platform support cooresponding to
/arch/arm/mach-virt in kernel tree.
For now it is not virtual but instantiates a pl011 uart
and and sp804 timer. The uart is need for a console
the timer is needed when running without kvm and there
is no arch timer.
Signed-off-by: John Rigby
If no fdt is provided on command line and the new field
get_dtb in struct arm_boot_info is set then call it to
get a device tree blob.
Also allow dumping of device tree by calling qemu_devtree_dumpdtb
near the end of load_dtb.
Signed-off-by: John Rigby
---
hw/arm/boot.c| 31
kvm
on an arndale board
v2 changes: remove bogus cruft from mach-virt.c that was leftover
from checkpatch fixing
John Rigby (2):
ARM: Allow boards to provide an fdt blob
ARM: Add mach-virt platform
hw/arm/Makefile.objs |2 +-
hw/arm/boot.c| 31 +++--
hw/arm/mach-virt.c | 337
Add mach-virt platform support cooresponding to
/arch/arm/mach-virt in kernel tree.
For now it is not virtual but instantiates a pl011 uart
and and sp804 timer. The uart is need for a console
the timer is needed when running without kvm and there
is no arch timer.
Signed-off-by: John Rigby
If no fdt is provided on command line and the new field
get_dtb in struct arm_boot_info is set then call it to
get a device tree blob.
Also allow dumping of device tree by calling qemu_devtree_dumpdtb
near the end of load_dtb.
Signed-off-by: John Rigby
---
hw/arm/boot.c| 31
kvm
on an arndale board
John Rigby (2):
ARM: Allow boards to provide an fdt blob
ARM: Add mach-virt platform
hw/arm/Makefile.objs |2 +-
hw/arm/boot.c| 31 +++--
hw/arm/mach-virt.c | 339 ++
include/hw/arm/arm.h |6 +
4 files
On Tue, Apr 30, 2013 at 3:37 AM, Alexander Graf wrote:
>
> On 30.04.2013, at 08:35, John Rigby wrote:
>
> > Resubmission of patches submitted by Alexander Graf in March.
> > Addressing feedback sent.
>
> Your mail chaining is broken :)
>
> yes, I see that. When
So do we set the number of registers back to 32 and use xregs[31] for sp
and remove env->sp?
--john
On Tue, Apr 30, 2013 at 2:21 AM, Alexander Graf wrote:
>
>
> Am 30.04.2013 um 10:01 schrieb Laurent Desnogues <
> laurent.desnog...@gmail.com>:
>
> > On Tue, Apr 3
kernel version than that.
To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.
Do this by forcing CONFIG_UNAME_RELEASE=3.8.0 in config_target_mak
for aarch64.
Signed-off-by: Alexander Graf
Signed-off-by: John
From: Alexander Graf
If we want to compile a target machine type that is AArch64 capable,
we need to add a new 64-bit capable ARM target. Use AArch64 since that
is the official ARM LTD name.
Signed-off-by: Alexander Graf
---
configure|8
linux-user/Makefile.objs |
From: Alexander Graf
This patch adds support for AArch64 in all the small corners of
linux-user and beyond.
Signed-off-by: Alexander Graf
---
default-configs/aarch64-linux-user.mak |3 +++
linux-user/arm/syscall.h | 46 +++-
linux-user/elfload.c
From: Alexander Graf
Some syscall handlers have special code for ARM enabled that we don't
need on AArch64. Exclude AArch64 in those cases. In other places we
can share struct definitions with other targets or have to provide our
own.
With this patch applied, most syscall definitions in linux-us
From: Alexander Graf
Glibc 1.17 checks for the host kernel version on startup. Unfortunately,
it also checks whether the host kernel version is recent enough for the
target to run at all.
Since AArch64 support only got introduced in 3.8.0, that means that glibc
refuses to run on any older kernel
From: Andreas Schwab
This patch adds signal handling for AArch64. The code is based on the
respective source in the Linux kernel.
Signed-off-by: Andreas Schwab
Signed-off-by: Alexander Graf
---
linux-user/arm/target_signal.h |4 +
linux-user/signal.c| 263
From: Alexander Graf
We want to be able to debug AArch64 guests. So let's add the respective gdb
stub functions and xml descriptions that allow us to do so.
Signed-off-by: Alexander Graf
---
gdb-xml/aarch64-core.xml | 46 +
gdb-xml/aarch64-fpu.xml | 86
From: Alexander Graf
32-bit ARM has a lot of different names for different types of CPUs it supports.
On AArch64, we don't have this, so we really don't want to execute the 32-bit
logic. Stub it out for AArch64 linux-user guests.
Signed-off-by: Alexander Graf
---
linux-user/cpu-uname.c |3
From: Alexander Graf
The AArch64 syscall definitions are all publicly available in the Linux
kernel. Let's add them to our linux-user emulation target, so that we
can easily handle AArch64 syscalls.
Signed-off-by: Alexander Graf
---
linux-user/arm/syscall_nr.h | 326 ++
rch64 mode vs aarch32 mode.
Signed-off-by: Alexander Graf
Signed-off-by: John Rigby
---
Changes in v2:
- remove many uses of is_a64 as that is a indicator the target arch is
aarch64 not what mode it is running in.
- add ARM_TBFLAG_AARCH64_STATE and aarch64_state
include/elf.h |2 +
t
From: Alexander Graf
We should translate AArch64 mode separately from AArch32 mode. In AArch64 mode,
registers look vastly different, instruction encoding is completely different,
basically the system turns into a different machine.
So let's do a simple if() in translate.c to decide whether we c
From: Alexander Graf
The cpu_env tcg variable will be used by both the AArch32 and AArch64
handling code. Unstaticify it, so that both sides can make use of it.
Signed-off-by: Alexander Graf
---
target-arm/translate.c |2 +-
target-arm/translate.h |2 ++
2 files changed, 3 insertions(+
Resubmission of patches submitted by Alexander Graf in March.
Addressing feedback sent.
Changes in v2:
All: Use aarch64 instead of arm64 (in all case combinations).
Patch 2/12 ARM: Prepare translation for AArch64 code
- Remove uses of is_a64 that are not needed because arch choice happens at
a hig
I noticed for the case where javac --version hangs the process has
several threads all waiting on futexes. Details attached.
** Attachment added: "dump.out"
https://bugs.launchpad.net/qemu/+bug/1129571/+attachment/3555716/+files/dump.out
--
You received this bug notification because you are
I see the same thing javac hanging. This is with a raring chroot on
raring host with qemu compiled from upstream 1.4.0 plus Peter's patches
and my linux-user patches
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launch
Trying to build on a raring amd64 host in a raring armhf chroot, two
failures so far. First time was a hang checking ant, an xlc-ls showed
several java threads hung. Second time was a segfault again in java.
So I have no problems reproducing this now locally. Hang seems like
thread waiting for
Handle same as existing FUTEX_PRIVATE_FLAG.
Signed-off-by: John Rigby
---
linux-user/strace.c |6 ++
1 file changed, 6 insertions(+)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 4e91a6e..f8030e0 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -1437,6
Upstream libc has recently changed to start using
FUTEX_WAIT_BITSET instead of FUTEX_WAIT and this
is causing do_futex to return -TARGET_ENOSYS.
Pass bitset in val3 to sys_futex which will be
ignored by kernel for the FUTEX_WAIT case.
Signed-off-by: John Rigby
---
linux-user/syscall.c |3
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
Peter, sorry I attached this quick patch to the bug for Serge to try
out with the intent of sending a proper patch upstream later.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmai
The patch at least allows java to run without segfaulting. I have not
tried to build libreoffice yet.
Late in 2012 libc started using FUTEX_WAIT_BITSET instead of FUTEX_WAIT
so teach qemu about it so it will forward the call to the host kernel
rather than returning -TARGET_ENOSYS. The patch also
78 matches
Mail list logo