1. 07 10月, 2012 2 次提交
  2. 22 9月, 2012 1 次提交
  3. 16 9月, 2012 1 次提交
  4. 27 8月, 2012 1 次提交
    • P
      tcg/arm: Fix broken CONFIG_TCG_PASS_AREG0 code · 9716ef3b
      Peter Maydell 提交于
      The CONFIG_TCG_PASS_AREG0 code for calling ld/st helpers was
      broken in that it did not respect the ABI requirement that 64
      bit values were passed in even-odd register pairs. The simplest
      way to fix this is to implement some new utility functions
      for marshalling function arguments into the correct registers
      and stack, so that the code which sets up the address and
      data arguments does not need to care whether there has been
      a preceding env argument.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
      9716ef3b
  5. 18 3月, 2012 1 次提交
  6. 15 3月, 2012 1 次提交
  7. 13 1月, 2012 1 次提交
  8. 15 12月, 2011 1 次提交
  9. 15 11月, 2011 1 次提交
  10. 01 10月, 2011 1 次提交
  11. 27 6月, 2011 2 次提交
  12. 24 3月, 2011 1 次提交
  13. 12 1月, 2011 1 次提交
  14. 10 1月, 2011 1 次提交
    • A
      tcg/arm: improve constant loading · 0f11f25a
      Aurelien Jarno 提交于
      Improve constant loading in two ways:
      - On all ARM versions, it's possible to load 0xffffff00 = -0x100 using
        the mvn rd, #0. Fix the conditions.
      - On <= ARMv6 versions, where movw and movt are not available, load the
        constants using mov and orr with rotations depending on the constant
        to load. This is very useful for example to load constants where the
        low byte is 0. This reduce the generated code size by about 7%.
      
      Also fix the coding style at the same time.
      
      Cc: Andrzej Zaborowski <balrog@zabor.org>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      0f11f25a
  15. 08 1月, 2011 2 次提交
    • A
      tcg/arm: fix qemu_st64 for big endian targets · 9a3abc21
      Aurelien Jarno 提交于
      Due to a typo, qemu_st64 doesn't properly byteswap the 32-bit low word of
      a 64 bit word before saving it. This patch fixes that.
      Acked-by: NAndrzej Zaborowski <balrogg@gmail.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      9a3abc21
    • A
      tcg/arm: fix branch target change during code retranslation · c69806ab
      Aurelien Jarno 提交于
      QEMU uses code retranslation to restore the CPU state when an exception
      happens. For it to work the retranslation must not modify the generated
      code. This is what is currently implemented in ARM TCG.
      
      However on CPU that don't have icache/dcache/memory synchronised like
      ARM, this requirement is stronger and code retranslation must not modify
      the generated code "atomically", as the cache line might be flushed
      at any moment (interrupt, exception, task switching), even if not
      triggered by QEMU. The probability for this to happen is very low, and
      depends on cache size and associativiy, machine load, interrupts, so the
      symptoms are might happen randomly.
      
      This requirement is currently not followed in tcg/arm, for the
      load/store code, which basically has the following structure:
        1) tlb access code is written
        2) conditional fast path code is written
        3) branch is written with a temporary target
        4) slow path code is written
        5) branch target is updated
      The cache lines corresponding to the retranslated code is not flushed
      after code retranslation as the generated code is supposed to be the
      same. However if the cache line corresponding to the branch instruction
      is flushed between step 3 and 5, and is not flushed again before the
      code is executed again, the branch target is wrong. In the guest, the
      symptoms are MMU page fault at a random addresses, which leads to
      kernel page fault or segmentation faults.
      
      The patch fixes this issue by avoiding writing the branch target until
      it is known, that is by writing only the branch instruction first, and
      later only the offset.
      
      This fixes booting linux guests on ARM hosts (tested: arm, i386, mips,
      mipsel, sh4, sparc).
      Acked-by: NEdgar E. Iglesias <edgar.iglesias@gmail.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      c69806ab
  16. 09 6月, 2010 2 次提交
  17. 25 4月, 2010 1 次提交
  18. 19 4月, 2010 17 次提交
  19. 28 3月, 2010 1 次提交
  20. 27 3月, 2010 1 次提交
    • R
      tcg: Disambiguate qemu_ld32u with 32-bit and 64-bit outputs. · 86feb1c8
      Richard Henderson 提交于
      Some targets (e.g. Alpha and MIPS64) need to keep 32-bit operands
      sign-extended in 64-bit registers (regardless of the "real" sign
      of the operand).  For that, we need to be able to distinguish
      between a 32-bit load with a 32-bit result and a 32-bit load with
      a given extension to a 64-bit result.  This distinction already
      exists for the ld* loads, but not the qemu_ld* loads.
      
      Reserve qemu_ld32u for 64-bit outputs and introduce qemu_ld32 for
      32-bit outputs.  Adjust all code generators to match.
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      86feb1c8