qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v3 00/31] A64 system emulation prequisites


From: Peter Maydell
Subject: [Qemu-devel] [PATCH v3 00/31] A64 system emulation prequisites
Date: Sat, 15 Feb 2014 16:06:53 +0000

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]