1. 25 10月, 2017 18 次提交
  2. 11 10月, 2017 1 次提交
  3. 10 10月, 2017 2 次提交
  4. 17 9月, 2017 4 次提交
  5. 08 9月, 2017 2 次提交
  6. 20 6月, 2017 1 次提交
    • E
      tcg: allocate TB structs before the corresponding translated code · 6e3b2bfd
      Emilio G. Cota 提交于
      Allocating an arbitrarily-sized array of tbs results in either
      (a) a lot of memory wasted or (b) unnecessary flushes of the code
      cache when we run out of TB structs in the array.
      
      An obvious solution would be to just malloc a TB struct when needed,
      and keep the TB array as an array of pointers (recall that tb_find_pc()
      needs the TB array to run in O(log n)).
      
      Perhaps a better solution, which is implemented in this patch, is to
      allocate TB's right before the translated code they describe. This
      results in some memory waste due to padding to have code and TBs in
      separate cache lines--for instance, I measured 4.7% of padding in the
      used portion of code_gen_buffer when booting aarch64 Linux on a
      host with 64-byte cache lines. However, it can allow for optimizations
      in some host architectures, since TCG backends could safely assume that
      the TB and the corresponding translated code are very close to each
      other in memory. See this message by rth for a detailed explanation:
      
        https://lists.gnu.org/archive/html/qemu-devel/2017-03/msg05172.html
        Subject: Re: GSoC 2017 Proposal: TCG performance enhancements
        Message-ID: <1e67644b-4b30-887e-d329-1848e94c9484@twiddle.net>
      Suggested-by: NRichard Henderson <rth@twiddle.net>
      Reviewed-by: NPranith Kumar <bobby.prani@gmail.com>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1496790745-314-3-git-send-email-cota@braap.org>
      [rth: Simplify the arithmetic in tcg_tb_alloc]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      6e3b2bfd
  7. 06 6月, 2017 1 次提交
    • E
      tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr · cedbcb01
      Emilio G. Cota 提交于
      Instead of exporting goto_ptr directly to TCG frontends, export
      tcg_gen_lookup_and_goto_ptr(), which calls goto_ptr with the pointer
      returned by the lookup_tb_ptr() helper. This is the only use case
      we have for goto_ptr and lookup_tb_ptr, so having this function is
      very convenient. Furthermore, it trivially allows us to avoid calling
      the lookup helper if goto_ptr is not implemented by the backend.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-2-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-4-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-5-git-send-email-cota@braap.org>
      [rth: Squashed 4 related commits.]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      cedbcb01
  8. 11 1月, 2017 4 次提交
  9. 02 11月, 2016 1 次提交
    • R
      log: Add locking to large logging blocks · 1ee73216
      Richard Henderson 提交于
      Reuse the existing locking provided by stdio to keep in_asm, cpu,
      op, op_opt, op_ind, and out_asm as contiguous blocks.
      
      While it isn't possible to interleave e.g. in_asm or op_opt logs
      because of the TB lock protecting all code generation, it is
      possible to interleave cpu logs, or to interleave a cpu dump with
      an out_asm dump.
      
      For mingw32, we appear to have no viable solution for this.  The locking
      functions are not properly exported from the system runtime library.
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1ee73216
  10. 24 10月, 2016 1 次提交
  11. 15 9月, 2016 1 次提交
  12. 06 8月, 2016 4 次提交