aboutsummaryrefslogtreecommitdiffstats
path: root/tcg/tcg.h
Commit message (Collapse)AuthorAgeFilesLines
* Upstream: Integrate TCG changes, remove obsolete sources for unsupported ↵David 'Digit' Turner2010-05-111-14/+25
| | | | | | targets. Change-Id: I2367d3ca13c1fb1dd8eaab734c7d3e826022b06a
* Finally fix ARMv7 NEON emulation.David 'Digit' Turner2009-10-061-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 :-(
* Workaround ARMv7 emulation issues.David 'Digit' Turner2009-10-051-0/+4
| | | | | | | | | | | | | | 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.
* Merge upstream QEMU 10.0.50 into the Android source tree.David 'Digit' Turner2009-09-141-51/+103
| | | | | | | | | | | | | | | | | | | 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.
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-0/+421
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-421/+0
|
* auto import from //branches/cupcake/...@130745The Android Open Source Project2009-02-101-0/+421