qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/31] A64 system emulation prequisites
@ 2014-02-15 16:06 Peter Maydell
  2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 01/31] target-arm: Fix raw read and write functions on AArch64 registers Peter Maydell
                   ` (31 more replies)
  0 siblings, 32 replies; 51+ messages in thread
From: Peter Maydell @ 2014-02-15 16:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: Rob Herring, Peter Crosthwaite, patches, Michael Matz,
	Alexander Graf, Claudio Fontana, Dirk Mueller, Will Newton,
	Laurent Desnogues, Alex Bennée, kvmarm, Christoffer Dall,
	Richard Henderson

Here's the latest patchset aimed towards implementing AArch64
system emulation.

Patch 1 is an actually working version of a fix for a problem
I tried to deal with incorrectly in the previous series.
Following patches are implementations of AArch64 views of various
system registers -- these generally got review last time around but
I resend them as they depend on patch 1.
Then we start to get into new stuff:
 * implementation of WFI (very simple)
 * moving the exception-mask DAIF bits out of pstate and uncached_cpsr
   so they're in env->daif in all situations. This allows us to have
   simple code in places like cpu-exec.c that doesn't need to consider
   what kind of core it's running on. I thought about keeping these
   in pstate but that seemed a bit odd for 32 bit cores and the ARM ARM
   seems to want to encourage thinking about all these bits of PSTATE as
   being genuinely separate.
 * handling of exception syndrome information: generally we have to
   update everywhere where we generate an exception to make sure we
   record the details to be presented to EL1 in the syndrome register.
   In this patchset we provide all the infrastructure and fix basically
   everything except data and insn abort exceptions. (The code that
   actually reads env->exception.syndrome will be the AArch64 exception
   entry code, which isn't in this patchset.)
 * adding FP-enabled checks (including fixing the VFP-enable checks
   for A32/T32 code to check the CPACR which an AArch64 EL1 will be
   using as well as the FPSCR.EN which AArch32 Linux kernels use). I
   apologise for the "add checks" part of the patchset being pretty
   near unreviewable; I have done an exhaustive test to confirm there
   are checks on every code path that needs them, though. I had thought
   we could simply put the check at the top level of the decoder, but
   this gives wrong syndrome information for undefined instructions
   in the FP-related areas of the instruction space.
 * update of the page-table-walk code to support 64-bit VAs

This still isn't enough to actually boot an AArch64 kernel, but it's
getting pretty close (remaining parts missing are a DC ZVA implementation,
a definition of a Cortex-A57, and exception entry/exit code, and we
have working code for all of those).

If anything in here doesn't seem to make enough sense without
the remaining code, just let me know and I'll hold onto it.
I think the "add AArch64 version of $foo register" patches will
be good to go into target-arm.next assuming I haven't messed up
patch 1 again, and then the rest of the patchset will be a rather
more maintainable size.

thanks
-- PMM

Peter Maydell (30):
  target-arm: Fix raw read and write functions on AArch64 registers
  target-arm: A64: Make cache ID registers visible to AArch64
  target-arm: Implement AArch64 CurrentEL sysreg
  target-arm: Implement AArch64 MIDR_EL1
  target-arm: Implement AArch64 cache invalidate/clean ops
  target-arm: Implement AArch64 TLB invalidate ops
  target-arm: Implement AArch64 dummy MDSCR_EL1
  target-arm: Implement AArch64 memory attribute registers
  target-arm: Implement AArch64 SCTLR_EL1
  target-arm: Implement AArch64 TCR_EL1
  target-arm: Implement AArch64 VBAR_EL1
  target-arm: Implement AArch64 TTBR*
  target-arm: Implement AArch64 MPIDR
  target-arm: Implement AArch64 generic timers
  target-arm: Implement AArch64 ID and feature registers
  target-arm: Implement AArch64 dummy breakpoint and watchpoint
    registers
  target-arm: Implement AArch64 OSLAR_EL1 sysreg as WI
  target-arm: Get MMU index information correct for A64 code
  target-arm: A64: Implement WFI
  target-arm: Store AIF bits in env->pstate for AArch32
  target-arm: Implement AArch64 DAIF system register
  target-arm: A64: Implement MSR (immediate) instructions
  target-arm: Implement AArch64 view of CPACR
  target-arm: Add utility function for checking AA32/64 state of an EL
  target-arm: Define exception record for AArch64 exceptions
  target-arm: Provide correct syndrome information for cpreg access
    traps
  target-arm: Add support for generating exceptions with syndrome
    information
  target-arm: A64: Correctly fault FP/Neon if CPACR.FPEN set
  target-arm: A64: Add assertion that FP access was checked
  target-arm: Fix VFP enables for AArch32 EL0 under AArch64 EL1

Rob Herring (1):
  target-arm: Add v8 mmu translation support

 cpu-exec.c                 |   4 +-
 hw/arm/pxa2xx.c            |   6 +-
 linux-user/main.c          |  56 ++--
 target-arm/cpu-qom.h       |  10 +
 target-arm/cpu.c           |  19 +-
 target-arm/cpu.h           | 262 ++++++++++++++++--
 target-arm/cpu64.c         |   1 +
 target-arm/helper.c        | 649 +++++++++++++++++++++++++++++++++++----------
 target-arm/helper.h        |   7 +-
 target-arm/machine.c       |   3 +
 target-arm/op_helper.c     |  52 +++-
 target-arm/translate-a64.c | 404 ++++++++++++++++++++++++----
 target-arm/translate.c     | 167 +++++++++---
 target-arm/translate.h     |  15 +-
 14 files changed, 1358 insertions(+), 297 deletions(-)

-- 
1.8.5

^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2014-03-01 19:59 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-15 16:06 [Qemu-devel] [PATCH v3 00/31] A64 system emulation prequisites Peter Maydell
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 01/31] target-arm: Fix raw read and write functions on AArch64 registers Peter Maydell
2014-02-26  0:17   ` Peter Crosthwaite
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 02/31] target-arm: A64: Make cache ID registers visible to AArch64 Peter Maydell
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 03/31] target-arm: Implement AArch64 CurrentEL sysreg Peter Maydell
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 04/31] target-arm: Implement AArch64 MIDR_EL1 Peter Maydell
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 05/31] target-arm: Implement AArch64 cache invalidate/clean ops Peter Maydell
2014-02-15 16:06 ` [Qemu-devel] [PATCH v3 06/31] target-arm: Implement AArch64 TLB invalidate ops Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 07/31] target-arm: Implement AArch64 dummy MDSCR_EL1 Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 08/31] target-arm: Implement AArch64 memory attribute registers Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 09/31] target-arm: Implement AArch64 SCTLR_EL1 Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 10/31] target-arm: Implement AArch64 TCR_EL1 Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 11/31] target-arm: Implement AArch64 VBAR_EL1 Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 12/31] target-arm: Implement AArch64 TTBR* Peter Maydell
2014-02-26  6:33   ` Hu Tao
2014-02-26  9:50     ` Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 13/31] target-arm: Implement AArch64 MPIDR Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 14/31] target-arm: Implement AArch64 generic timers Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 15/31] target-arm: Implement AArch64 ID and feature registers Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 16/31] target-arm: Implement AArch64 dummy breakpoint and watchpoint registers Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 17/31] target-arm: Implement AArch64 OSLAR_EL1 sysreg as WI Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 18/31] target-arm: Get MMU index information correct for A64 code Peter Maydell
2014-02-25 23:27   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 19/31] target-arm: A64: Implement WFI Peter Maydell
2014-02-25 23:20   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 20/31] target-arm: Store AIF bits in env->pstate for AArch32 Peter Maydell
2014-02-25 23:25   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 21/31] target-arm: Implement AArch64 DAIF system register Peter Maydell
2014-02-17  0:17   ` Peter Crosthwaite
2014-02-17  8:51     ` Peter Maydell
2014-02-28 13:48     ` Peter Maydell
2014-02-28 23:32       ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 22/31] target-arm: A64: Implement MSR (immediate) instructions Peter Maydell
2014-02-25  8:32   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 23/31] target-arm: Implement AArch64 view of CPACR Peter Maydell
2014-02-25  8:34   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 24/31] target-arm: Add utility function for checking AA32/64 state of an EL Peter Maydell
2014-02-25  8:36   ` Peter Crosthwaite
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 25/31] target-arm: Define exception record for AArch64 exceptions Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 26/31] target-arm: Provide correct syndrome information for cpreg access traps Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 27/31] target-arm: Add support for generating exceptions with syndrome information Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 28/31] target-arm: A64: Correctly fault FP/Neon if CPACR.FPEN set Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 29/31] target-arm: A64: Add assertion that FP access was checked Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 30/31] target-arm: Fix VFP enables for AArch32 EL0 under AArch64 EL1 Peter Maydell
2014-02-15 16:07 ` [Qemu-devel] [PATCH v3 31/31] target-arm: Add v8 mmu translation support Peter Maydell
2014-02-26  2:49   ` Hu Tao
2014-02-26  3:32     ` Hu Tao
2014-02-26 10:31       ` Peter Maydell
2014-02-26 19:47         ` Rob Herring
2014-03-01 19:58           ` Peter Maydell
2014-02-25 20:16 ` [Qemu-devel] [PATCH v3 00/31] A64 system emulation prequisites Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).