| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Change-Id: Idfa93ab5c67c95a3bc1869eeaf3a84a75fe24cd6
|
|
|
|
|
|
|
|
|
| |
Apparently, that change that supposedly fixed AT-related ARMv7 bug broke
DexOpt step in the build process, resulting in trashed files that crash
the device. Rolling this change back to fix Froyo, until cause of the
DexOpt breaking has been found and fixed
Change-Id: I33b417fcbd65767f7cfe60f5fb5ffa32610b4852
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL doesn't fix ARMv7 problems in the emulator (emulated system still
crashes, although with these fixes it crashes much later than without them),
however, this CL fixes real bugs related to IT block translations.
In particular, it fixes:
- Wrong ITSTATE calculation on condition that gen_intermediate_code_internal
is called with search_pc parameter set to 1. In the original code ITSTATE was
blindly inherited from the CPU's condexec_bits field, without consideration
that translation could be performed starting from an address that has nothing
to do with the current ITSTATE.
Change-Id: I7af83e21c64d217c6b28bf6cb5ee2e2f23182c95
|
|
|
|
| |
Change-id: Ibce845d0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 :-(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|