History log of /external/qemu/tcg/tcg.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
86b1fb06ee6ef53d8961ce96343ba4aa37518840 21-Mar-2014 David 'Digit' Turner <digit@google.com> tcg: Upgrade to upstream version.

This switches the full TCG implementation to the upstream version
from the following upstream commit:

1a8e80d7e82aa385ad887dba5d039e399a18264b

Note that this requires completely reqwriting the softmmu_template.h
declarations to adapt to the new world order where all ld/st helpers
now accepts a CPUArchState* value as their first parameter.

+ This also gets rid of the REGPARM macro, which means that on
i386, parameters are now passed on the stack instead of using
registers. As surprising as it is, this doesn't seem to affect
emulation performance in significant ways when starting the
emulator with -force-32bit, compared to the latest SDK emulator
binary. This may be due to the improved binary translator.

Note that this doesn't switch the emulation to use the new
MemoryRegion API, so there are still a few minor differences
with upstream softmmu_*.h headers.

The target-*/ sources have been minimally modified to accomodate
for the changes, and everything seems to work. However, not that
CONFIG_ANDROID_MEMCHECK_MMU hasn't been tested yet.

+ get rid of obsolete softmmu_outside_jit.c

NOTE: There are two important differences with the upstream sources:

- An '#undef small' in tcg.c used to build the Windows binaries
with mingw32 on Linux.

- The declaration of cc_compute_all and cc_compute_c helpers in
target-i386/helper.h use TCG_CALL_NO_SE instead of
TCG_CALL_NO_SE_RWG. Otherwise, it's impossible to boot
an x86 system image properly.

Change-Id: I6ed5c58f237493d29b1cefaff3e0db6f58977fbf
/external/qemu/tcg/tcg.h
0bee5e821a3e9a40fa26ca65ea7cf235c25c06c1 18-Mar-2014 David 'Digit' Turner <digit@google.com> tcg: If DEBUG_TCGV, distinguish TCGv_ptr from TCGv_i32/TCGv_i64

Upstream 6bd4b08ab236d59eb2cec92a52efb9c7df2388ac
Upstream 06ea77bc505b2e41cc42c8c4b39d08ec638a82e8

Change-Id: I706dcb1cff50b6732abeaf8477f75f4db49946a5
/external/qemu/tcg/tcg.h
53a08edf171bdbc7e3a2d89b78b96a33361a2760 18-Mar-2014 David 'Digit' Turner <digit@google.com> tcg: Replace op_dead_iargs by op_dead_args

Upstream 866cb6cb21b91809f3f5c49c7c4268573552a108

Change-Id: I2592691c8f4eee7cf99e454e4a80526379e7ad70
/external/qemu/tcg/tcg.h
26d285dfa9f482e5b2f6d6df2bcb0eaed06cb1a9 18-Mar-2014 David 'Digit' Turner <digit@google.com> tcg: Use hash table + static table for helpers.

This changes the registration of helper functions inside of TCG to:

- Use a GHashTable to store the map from helpers to function names.
- Move the helper registration from targets to tcg.
- Merge tcg_register_helper into tcg_context_init.

Note: this makes TCG more dependent on target helper.h headers, it
adds significant coupling, but so be it.

Upstream 7c57df0d852a9a9faf9068ff235886c8b28b113e
Upstream 6e085f72c6d331fb0e9fc69e3061cd1e5893d9e4
Upstream 5cd8f6210f83db15702e81b91e40e7079608e6f3
Upstream 100b5e0170e86661aaf830869be930a1a201ed08
Upstream 84fd9dd3f78ced9d41e1160d43862bb620cb462a

Change-Id: Ie0877cf9a62451d89881e882d06d04456e5abe1b
/external/qemu/tcg/tcg.h
9142071536d74f1b8370f79851c9c2ca92496628 18-Mar-2014 David 'Digit' Turner <digit@google.com> tcg: Use a GHashTable for tcg_find_helper

Upstream 6e085f72c6d331fb0e9fc69e3061cd1e5893d9e4

Change-Id: I8c8346c8dd0eacff25a72f4280bd246ea71a90d1
/external/qemu/tcg/tcg.h
a681001f110feadb11ebed7c46832262784f6720 18-Mar-2014 David 'Digit' Turner <digit@google.com> cpu-exec.c: Avoid AREG0 use.

Make functions take a parameter for CPUArchState instead of
relying on a global env. The CPUArchState pointer is passed
to the TCG prologue which moves it to AREG.

Upstream cea5f9a28faa528b6b1b117c9ab2d8828f473fef

Change-Id: Ic61f5479fba7a4ac72444cca1be72ec35aa2d1d6
/external/qemu/tcg/tcg.h
975bba804aed54452f774cdbf79a7b4732fc7696 17-Feb-2014 David 'Digit' Turner <digit@google.com> Augment TCGContext.

This moves many static buffers into the TCGContext data structure
to match upstream. This shouldn't affect performance.

Change-Id: Ib1fc7cf2baef155f1eaadbf9bfd9e2d381606a07
/external/qemu/tcg/tcg.h
1348777d4229cf65ef12d0a4ee531d4502847277 17-Feb-2014 David 'Digit' Turner <digit@google.com> Create TBContext inside of TCGContext

This matches upstream.

Change-Id: I605dde69aab64dcec3a81875912a6e611ce0cf05
/external/qemu/tcg/tcg.h
c005246ed03de874fdc432073ba8e5e8ebfed922 25-Feb-2014 David 'Digit' Turner <digit@google.com> Remove trailing spaces in misc sources.

Change-Id: I573d4e816112b7401b3c824fbe773b85a8601531
/external/qemu/tcg/tcg.h
f1d9bf153726533acf659efd796aa484dfd0b412 11-May-2011 David 'Digit' Turner <digit@android.com> tcg: integrate upstream version

Change-Id: Ifcdebc2e7179fbc64b46a9150e6dae62f86eba3c
/external/qemu/tcg/tcg.h
b9317727862dd690cc67bb51f71991c404f9e4f6 11-May-2010 David 'Digit' Turner <digit@android.com> Upstream: Integrate TCG changes, remove obsolete sources for unsupported targets.

Change-Id: I2367d3ca13c1fb1dd8eaab734c7d3e826022b06a
/external/qemu/tcg/tcg.h
bcc6ae14820ddb24e2403d84b420ce61f371ae94 06-Oct-2009 David 'Digit' Turner <digit@google.com> Finally fix ARMv7 NEON emulation.

The real problem was the size of the static intermediate TCG opcode buffer.

Due to its SIMD nature, a single Neon instruction can generate a very large number
of corresponding TCG opcodes. Using lots of Neon instructions in a big looop like
the one we have in our ARMv7-optimized memcpy did generate enough opcodes to
overwrite the static gen_opc_buf buffer, resulting in overwrites into the following
global buffer (gen_opparam_buf) corresponding to opcode parameters.

The end result was generation of really broken host machine code, and completely
unreliable emulation, including potential assertion failure in the liveness analysis
pass.

This patch does the following:

- bumps the buffer size from 512 to 2048
- adds sanity checks that will abort the emulator if another similar overwrite
is detected before machine code is generated.
- remove the previous hack where we disabled the liveness analysis pass for ARMv7

Note that fixing the code generator to not use a static buffer is not trivial at
this point, and that we much prefer to stay true to the upstream sources at the
moment.

Keep in mind that a previous patch also fixed a bug in the ARM->TCG translator
(typo required changing a 0 into a 1) which affected Neon instructions too.

I can't believe I just lost 2 weeks of my life on that bug :-(
/external/qemu/tcg/tcg.h
ddf49e53df97a349f42c733059165dc73c9907dc 05-Oct-2009 David 'Digit' Turner <digit@google.com> Workaround ARMv7 emulation issues.

This patch is used to disable the code generator's liveness analysis pass when we
emulate an ARMv7 CPU. This is required to properly run the dex preoptimization pass
during the build of -user system images.

Also includes:
- a fix for a sad typo in target-arm/translate.c related to NEON instruction emulation
- upstream improvements to the x86 and x86_64 backends to generate better goto branches at runtime
- upstream fixes for 64-bit swap and shift operations in TCG

After this patch is applied, re-enabling the ARMv7 memcpy should allow to run the dex preopt
pass succesfully. Anything else is untested though. WE STILL NEED TO FIX THE CODE GENERATOR.
/external/qemu/tcg/tcg.h
5d8f37ad78fc66901af50c762029a501561f3b23 14-Sep-2009 David 'Digit' Turner <digit@google.com> Merge upstream QEMU 10.0.50 into the Android source tree.

This change integrates many changes from the upstream QEMU sources.
Its main purpose is to enable correct ARMv6 and ARMv7 support to the
Android emulator. Due to the nature of the upstream code base, this
unfortunately also required changes to many other parts of the source.

Note that to ensure easier integrations in the future, some source files
and directories that have heavy Android-specific customization have been
renamed with an -android suffix. The original files are still there for
easier integration tracking, but *never* compiled. For example:

net.c net-android.c
qemu-char.c qemu-char-android.c
slirp/ slirp-android/
etc...

Tested on linux-x86, darwin-x86 and windows host machines.
/external/qemu/tcg/tcg.h
8b23a6c7e1aee255004dd19098d4c2462b61b849 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/qemu/tcg/tcg.h
f721e3ac031f892af46f255a47d7f54a91317b30 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/qemu/tcg/tcg.h
c27f813900a3c114562efbb8df1065e94766fc48 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/external/qemu/tcg/tcg.h