1. 09 1月, 2014 4 次提交
  2. 08 1月, 2014 4 次提交
    • P
      target-arm: Widen thread-local register state fields to 64 bits · e4fe830b
      Peter Maydell 提交于
      The common pattern for system registers in a 64-bit capable ARM
      CPU is that when in AArch32 the cp15 register is a view of the
      bottom 32 bits of the 64-bit AArch64 system register; writes in
      AArch32 leave the top half unchanged. The most natural way to
      model this is to have the state field in the CPU struct be a
      64 bit value, and simply have the AArch32 TCG code operate on
      a pointer to its lower half.
      
      For aarch64-linux-user the only registers we need to share like
      this are the thread-local-storage ones. Widen their fields to
      64 bits and provide the 64 bit reginfo struct to make them
      visible in AArch64 state. Note that minor cleanup of the AArch64
      system register encoding space means We can share the TPIDR_EL1
      reginfo but need split encodings for TPIDR_EL0 and TPIDRRO_EL0.
      
      Since we're touching almost every line in QEMU that uses the
      c13_tls* fields in this patch anyway, we take the opportunity
      to rename them in line with the standard ARM architectural names
      for these registers.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      e4fe830b
    • P
      target-arm: A64: Implement minimal set of EL0-visible sysregs · b0d2b7d0
      Peter Maydell 提交于
      Implement an initial minimal set of EL0-visible system registers:
       * NZCV
       * FPCR
       * FPSR
       * CTR_EL0
       * DCZID_EL0
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Reviewed-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      b0d2b7d0
    • P
      target-arm: A64: Implement MRS/MSR/SYS/SYSL · fea50522
      Peter Maydell 提交于
      The AArch64 equivalent of the traditional AArch32
      cp15 coprocessor registers is the set of instructions
      MRS/MSR/SYS/SYSL, which cover between them both true
      system registers and the "operations with side effects"
      such as cache maintenance which in AArch32 are mixed
      in with other cp15 registers. Implement these instructions
      to look in the cpregs hashtable for the register or
      operation.
      
      Since we don't yet populate the cpregs hashtable with
      any registers with the "AA64" bit set, everything will
      still UNDEF at this point.
      
      MSR/MRS is the first user of is_jmp = DISAS_UPDATE, so
      fix an infelicity in its handling where the main loop
      was requiring the caller to do the update of PC rather
      than just doing it itself.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      fea50522
    • P
      target-arm: Remove ARMCPU/CPUARMState from cpregs APIs used by decoder · 60322b39
      Peter Maydell 提交于
      The cpregs APIs used by the decoder (get_arm_cp_reginfo() and
      cp_access_ok()) currently take either a CPUARMState* or an ARMCPU*.
      This is problematic for the A64 decoder, which doesn't pass the
      environment pointer around everywhere the way the 32 bit decoder
      does. Adjust the parameters these functions take so that we can
      copy only the relevant info from the CPUARMState into the
      DisasContext and then use that.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      60322b39
  3. 05 1月, 2014 2 次提交
  4. 24 12月, 2013 10 次提交
  5. 23 12月, 2013 1 次提交
  6. 21 12月, 2013 4 次提交
  7. 20 12月, 2013 15 次提交
    • A
      Merge remote-tracking branch 'agraf/tags/signed-ppc-for-upstream' into staging · f8251db1
      Anthony Liguori 提交于
      Patch queue for ppc - 2013-12-20
      
      Alexander Graf (3):
            PPC: Use default pci bus name for grackle and heathrow
            roms: Flush icache when writing roms to guest memory
            PPC: Add VSX to hflags
      
      Alexey Kardashevskiy (5):
            powerpc: add PVR mask support
            target-ppc: move POWER7+ to a separate family
            spapr-rtas: replace return code constants with macros
            spapr-rtas: add ibm, (get|set)-system-parameter
            spapr: make sure RMA is in first mode of first memory node
      
      Greg Kurz (1):
            target-ppc: add stubs for KVM breakpoints
      
      Paolo Bonzini (1):
            spapr: tie spapr-nvram to -pflash
      
      Paul Mackerras (1):
            spapr: limit numa memory regions by ram size
      
      Peter Crosthwaite (2):
            device_tree: s/qemu_devtree/qemu_fdt globally
            device_tree: qemu_fdt_setprop: Rename val_array arg
      
      Tom Musta (19):
            Declare and Enable VSX
            Add MSR VSX and Associated Exception
            Add VSX Instruction Decoders
            Add VSR to Global Registers
            Add lxvd2x
            Add stxvd2x
            Add xxpermdi
            Add lxsdx
            Add lxvdsx
            Add lxvw4x
            Add stxsdx
            Add stxvw4x
            Add VSX Scalar Move Instructions
            Add VSX Vector Move Instructions
            Add Power7 VSX Logical Instructions
            Add xxmrgh/xxmrgl
            Add xxsel
            Add xxspltw
            Add xxsldwi
      
      * agraf/tags/signed-ppc-for-upstream: (32 commits)
        spapr: limit numa memory regions by ram size
        spapr: make sure RMA is in first mode of first memory node
        device_tree: qemu_fdt_setprop: Rename val_array arg
        device_tree: s/qemu_devtree/qemu_fdt globally
        PPC: Add VSX to hflags
        Add xxsldwi
        Add xxspltw
        Add xxsel
        Add xxmrgh/xxmrgl
        Add Power7 VSX Logical Instructions
        Add VSX Vector Move Instructions
        Add VSX Scalar Move Instructions
        roms: Flush icache when writing roms to guest memory
        spapr: tie spapr-nvram to -pflash
        PPC: Use default pci bus name for grackle and heathrow
        spapr-rtas: add ibm, (get|set)-system-parameter
        spapr-rtas: replace return code constants with macros
        target-ppc: move POWER7+ to a separate family
        Add stxvw4x
        Add stxsdx
        ...
      f8251db1
    • P
      spapr: limit numa memory regions by ram size · 5fe269b1
      Paul Mackerras 提交于
      This makes sure that all NUMA memory blocks reside within RAM or
      have zero length.
      Reviewed-by: NThomas Huth <thuth@linux.vnet.ibm.com>
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      5fe269b1
    • A
      spapr: make sure RMA is in first mode of first memory node · c4177479
      Alexey Kardashevskiy 提交于
      The SPAPR specification says that the RMA starts at the LPAR's logical
      address 0 and is the first logical memory block reported in
      the LPAR’s device tree.
      
      So SLOF only maps the first block and that block needs to span
      the full RMA.
      
      This makes sure that the RMA area is where SLOF expects it.
      Reviewed-by: NThomas Huth <thuth@linux.vnet.ibm.com>
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      c4177479
    • P
      device_tree: qemu_fdt_setprop: Rename val_array arg · be5907f2
      Peter Crosthwaite 提交于
      Looking at the implementation, this doesn't really have a lot to do
      with arrays. Its just a pointer to a buffer and is passed through
      to the wrapped fn (qemu_fdt_setprop) unchanged. So rename to make it
      consistent with libfdt, which in the wrapped function just calls it
      "val".
      Signed-off-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      be5907f2
    • P
      device_tree: s/qemu_devtree/qemu_fdt globally · 5a4348d1
      Peter Crosthwaite 提交于
      The qemu_devtree API is a wrapper around the fdt_ set of APIs.
      Rename accordingly.
      Signed-off-by: NPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      [agraf: also convert hw/arm/virt.c]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      5a4348d1
    • A
      PPC: Add VSX to hflags · c2b63f03
      Alexander Graf 提交于
      We generate different code depending on whether MSR_VSX is set or
      clear, so it needs to be part of our hflags too which indicate whether
      we're still in the same translation block cache bucket.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      c2b63f03
    • T
      Add xxsldwi · acc42968
      Tom Musta 提交于
      This patch adds the VSX Shift Left Double by Word Immediate
      (xxsldwi) instruction.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      acc42968
    • T
      Add xxspltw · 76c15fe0
      Tom Musta 提交于
      This patch adds the VSX Splat Word (xxsplatw) instruction.
      
      This is the first instruction to use the UIM immediate field
      and consequently a decoder is also added.
      
      V2: reworked implementation per Richard Henderson's comments.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      76c15fe0
    • T
      Add xxsel · 551e3ef7
      Tom Musta 提交于
      This patch adds the VSX Select (xxsel) instruction.
      
      The xxsel instruction has four VSR operands.  Thus the xC
      instruction decoder is added.
      
      The xxsel instruction is massively overloaded in the opcode
      table since only bits 26 and 27 are opcode bits.  This
      overloading is done in matrix fashion with two macros
      (GEN_XXSEL_ROW and GEN_XX_SEL).
      
      V2: (1) eliminated unecessary XXSEL macro  (2) tighter implementation
      using tcg_gen_andc_i64.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      551e3ef7
    • T
      Add xxmrgh/xxmrgl · ce577d2e
      Tom Musta 提交于
      This patch adds the VSX Merge High Word and VSX Merge Low Word
      instructions.
      
      V2: Now implemented using deposit (per Richard Henderson's comment)
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      ce577d2e
    • T
      Add Power7 VSX Logical Instructions · 79ca8a6a
      Tom Musta 提交于
      This patch adds the VSX logical instructions that are defined
      by the Version 2.06 Power ISA (aka Power7):
      
         - xxland
         - xxlandc
         - xxlor
         - xxlxor
         - xxlnor
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      79ca8a6a
    • T
      Add VSX Vector Move Instructions · be574920
      Tom Musta 提交于
      This patch adds the vector move instructions:
      
        - xvabsdp - Vector Absolute Value Double-Precision
        - xvnabsdp - Vector Negative Absolute Value Double-Precision
        - xvnegdp - Vector Negate Double-Precision
        - xvcpsgndp - Vector Copy Sign Double-Precision
        - xvabssp - Vector Absolute Value Single-Precision
        - xvnabssp - Vector Negative Absolute Value Single-Precision
        - xvnegsp - Vector Negate Single-Precision
        - xvcpsgnsp - Vector Copy Sign Single-Precision
      
      V3: Per Paolo Bonzini's suggestion, used a temporary for the
      sign mask and andc.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      be574920
    • T
      Add VSX Scalar Move Instructions · df020ce0
      Tom Musta 提交于
      This patch adds the VSX scalar move instructions:
      
        - xsabsdp (Scalar Absolute Value Double-Precision)
        - xsnabspd (Scalar Negative Absolute Value Double-Precision)
        - xsnegdp (Scalar Negate Double-Precision)
        - xscpsgndp (Scalar Copy Sign Double-Precision)
      
      A common generator macro (VSX_SCALAR_MOVE) is added since these
      instructions vary only slightly from each other.
      
      Macros to support VSX XX2 and XX3 form opcodes are also added.
      These macros handle the overloading of "opcode 2" space (instruction
      bits 26:30) caused by AX and BX bits (29 and 30, respectively).
      
      V3: Per feedback from Paolo Bonzini, moved the sign mask into a
      temporary and used andc.
      Signed-off-by: NTom Musta <tommusta@gmail.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      df020ce0
    • A
      roms: Flush icache when writing roms to guest memory · 582b55a9
      Alexander Graf 提交于
      We use the rom infrastructure to write firmware and/or initial kernel
      blobs into guest address space. So we're basically emulating the cache
      off phase on very early system bootup.
      
      That phase is usually responsible for clearing the instruction cache for
      anything it writes into cachable memory, to ensure that after reboot we
      don't happen to execute stale bits from the instruction cache.
      
      So we need to invalidate the icache every time we write a rom into guest
      address space. We do not need to do this for every DMA since the guest
      expects it has to flush the icache manually in that case.
      
      This fixes random reboot issues on e5500 (booke ppc) for me.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      582b55a9
    • P
      spapr: tie spapr-nvram to -pflash · 3978b863
      Paolo Bonzini 提交于
      spapr-nvram's drive property is currently connected to a non-existent
      "-machine nvram=<drivename>" option.  Instead, tie it to -pflash like
      other non-volatile RAM devices.  This provides the following possibilities
      for adding a backend for the sPAPR non-volatile RAM:
      
      * -pflash filename
      
      * -drive if=pflash,file=filename,format=raw,...
      
      * -drive if=none,file=filename,format=raw,id=foo,... -global spapr-nvram.drive=foo
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      3978b863