1. 26 2月, 2016 1 次提交
  2. 18 2月, 2016 2 次提交
  3. 11 2月, 2016 3 次提交
  4. 09 2月, 2016 2 次提交
  5. 03 2月, 2016 1 次提交
  6. 19 1月, 2016 1 次提交
  7. 17 12月, 2015 2 次提交
    • S
      target-arm: Fix and improve AA32 singlestep translation completion code · 7999a5c8
      Sergey Fedorov 提交于
      The AArch32 translation completion code for singlestep enabled/active
      case was a way more confusing and too repetitive then it needs to be.
      Probably that was the cause for a bug to be introduced into it at some
      point. The bug was that SWI/HVC/SMC exception would be generated in
      condition-failed instruction code path whereas it shouldn't.
      
      This patch rewrites the code in a way similar to the non-singlestep
      case.
      
      In the condition-passed/unconditional instruction code path we need to:
       - Write the condexec bits back to the CPU state
       - Advance the singlestep state machine and generate a corresponding
         exception in case of SWI/HVC/SMC
       - Write the PC back to the CPU state if it hasn't already been written
         and generate an appropriate singlestep exception otherwise
      
      In the condition-failed instruction code path we need to:
       - Set a TCG label to jump to it if the condition is failed
       - Write the condexec bits back to the CPU state
       - Write the PC back to the CPU state since it hasn't been written in
         this case
       - Generate an appropriate singlestep exception
      Signed-off-by: NSergey Fedorov <serge.fdrv@gmail.com>
      Message-id: 1448474560-22475-1-git-send-email-serge.fdrv@gmail.com
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      7999a5c8
    • A
      target-arm: raise exception on misaligned LDREX operands · 30901475
      Andrew Baumann 提交于
      Qemu does not generally perform alignment checks. However, the ARM ARM
      requires implementation of alignment exceptions for a number of cases
      including LDREX, and Windows-on-ARM relies on this.
      
      This change adds plumbing to enable alignment checks on loads using
      MO_ALIGN, a do_unaligned_access hook to raise the exception (data
      abort), and uses the new aligned loads in LDREX (for all but
      single-byte loads).
      Signed-off-by: NAndrew Baumann <Andrew.Baumann@microsoft.com>
      Message-id: 1449167808-5656-1-git-send-email-Andrew.Baumann@microsoft.com
      [PMM: set WnR bits in syndrome and FSR as appropriate]
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      30901475
  8. 19 11月, 2015 2 次提交
  9. 13 11月, 2015 1 次提交
  10. 10 11月, 2015 1 次提交
    • S
      target-arm: Clean up DISAS_UPDATE usage in AArch32 translation code · 577bf808
      Sergey Fedorov 提交于
      AArch32 translation code does not distinguish between DISAS_UPDATE and
      DISAS_JUMP. Thus, we cannot use any of them without first updating PC in
      CPU state. Furthermore, it is too complicated to update PC in CPU state
      before PC gets updated in disas context. So it is hardly possible to
      correctly end TB early if is is not likely to be executed before calling
      disas_*_insn(), e.g. just after calling breakpoint check helper.
      
      Modify DISAS_UPDATE and DISAS_JUMP usage in AArch32 translation and
      apply to them the same semantic as AArch64 translation does:
       - DISAS_UPDATE: update PC in CPU state when finishing translation
       - DISAS_JUMP:   preserve current PC value in CPU state when finishing
                       translation
      
      This patch fixes a bug in AArch32 breakpoint handling: when
      check_breakpoints helper does not generate an exception, ending the TB
      early with DISAS_UPDATE couldn't update PC in CPU state and execution
      hangs.
      Signed-off-by: NSergey Fedorov <serge.fdrv@gmail.com>
      Message-id: 1447097859-586-1-git-send-email-serge.fdrv@gmail.com
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      577bf808
  11. 03 11月, 2015 1 次提交
  12. 29 10月, 2015 1 次提交
  13. 27 10月, 2015 1 次提交
    • P
      target-arm/translate.c: Handle non-executable page-straddling Thumb insns · 541ebcd4
      Peter Maydell 提交于
      When the memory we're trying to translate code from is not executable we have
      to turn this into a guest fault. In order to report the correct PC for this
      fault, and to make sure it is not reported until after any other possible
      faults for instructions earlier in execution, we must terminate TBs at
      the end of a page, in case the next instruction is in a non-executable page.
      This is simple for T16, A32 and A64 instructions, which are always aligned
      to their size. However T32 instructions may be 32-bits but only 16-aligned,
      so they can straddle a page boundary.
      
      Correct the condition that checks whether the next instruction will touch
      the following page, to ensure that if we're 2 bytes before the boundary
      and this insn is T32 then we end the TB.
      Reported-by: NPavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
      Reviewed-by: NLaurent Desnogues <laurent.desnogues@gmail.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      541ebcd4
  14. 16 10月, 2015 2 次提交
  15. 07 10月, 2015 8 次提交
  16. 14 9月, 2015 3 次提交
  17. 11 9月, 2015 1 次提交
  18. 09 9月, 2015 1 次提交
  19. 25 8月, 2015 1 次提交
  20. 06 7月, 2015 1 次提交
  21. 22 6月, 2015 1 次提交
    • P
      disas: Remove uses of CPU env · d49190c4
      Peter Crosthwaite 提交于
      disas does not need to access the CPU env for any reason. Change the
      APIs to accept CPU pointers instead. Small change pattern needs to be
      applied to all target translate.c. This brings us closer to making
      disas.o a common-obj and less architecture specific in general.
      
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Eduardo Habkost <ehabkost@redhat.com>
      Cc: Michael Walle <michael@walle.cc>
      Cc: Aurelien Jarno <aurelien@aurel32.net>
      Cc: Leon Alrae <leon.alrae@imgtec.com>
      Cc: Jia Liu <proljc@gmail.com>
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
      Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NPeter Crosthwaite <crosthwaite.peter@gmail.com>
      Acked-by: NLuiz Capitulino <lcapitulino@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      d49190c4
  22. 16 6月, 2015 2 次提交
  23. 29 5月, 2015 1 次提交
    • P
      target-arm: Avoid buffer overrun on UNPREDICTABLE ldrd/strd · 3960c336
      Peter Maydell 提交于
      A LDRD or STRD where rd is not an even number is UNPREDICTABLE.
      We were letting this fall through, which is OK unless rd is 15,
      in which case we would attempt to do a load_reg or store_reg
      to a nonexistent r16 for the second half of the double-word.
      Catch the odd-numbered-rd cases and UNDEF them instead.
      
      To do this we rearrange the structure of the code a little
      so we can put the UNDEF catches at the top before we've
      allocated TCG temporaries.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1431348973-21315-1-git-send-email-peter.maydell@linaro.org
      3960c336