History log of /external/qemu/translate-all.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0e5ff1bd3073e3847ac8400ba46814878beb8605 04-Jul-2014 David 'Digit' Turner <digit@google.com> memcheck: Remove feature entirely

This patch removes the memcheck feature from the Android emulator
code base. This is for several reasons:

- Supporting the feature impacts many QEMU-specific emulation files
in subtle ways, that make it difficult to refactor this code to
integrate upstream changes.

- The feature only works for ARM (32-bit), has no unit tests, and
generates massive amounts of false positive messages coming
from the platform.

- Barely anyone uses it.

This feature might make a comeback in the future, but this will be
under a different life-form that will have adapted to the new state
of the code.

+ As a bonus, fix the build!

Change-Id: Idd19a3bc7923379cb1e82850f14499549b6a991b
/external/qemu/translate-all.c
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/translate-all.c
bf7a22f3a6c38d359d2e933dec4706d1c7375f0a 25-Mar-2014 David 'Digit' Turner <digit@google.com> Move cpu_xxx functions to qom/cpu.h

This patch moves a few CPU-releated function declarations to
include/qom/cpu.h, while changing their signature to take a
CPUState instead of a CPUOldState.

Change-Id: I5f09b522dc755be334973a27f58b6704fbccc4c6
/external/qemu/translate-all.c
6657678c3d86395084f6a699e73614195f06c445 24-Mar-2014 David 'Digit' Turner <digit@google.com> Introduce CPUState.

This patch splits the definitions previously found in CPUArchState,
to place some of them in a common data structure called CPUState,
to mirror upstream.

Note that upstream also makes CPUState a complete QOM object that
derives from DeviceState / DeviceClass, but this patch doesn't do
that. That's why the target-*/cpu-qom.h files, as well as
include/qom/cpu.h are not the real ones from upstream yet.

Future patches will get rid of CPUOldState, which is currently used
as an alias for CPUArchState, but will be replaced entirely by
CPUState, requiring changing the signature of many functions to
match upstream.

QOM-ification will probably happen after that, but may require
a few more patches due to layering / coupling issues.

Change-Id: Ifc33f8abe2aa80b20da13f5c83c109e37aff7e11

Conflicts:
cputlb.c
target-arm/op_helper.c
target-i386/op_helper.c
target-mips/op_helper.c
/external/qemu/translate-all.c
4ab1225535dfc5fbcbde37a171b39224ea34e30b 24-Mar-2014 David 'Digit' Turner <digit@google.com> exec.c: Use a QTAILQ to list CPUs.

This introduces CPUState, a mere typedef to CPUOldState for now,
and changes the way CPUs are listed in QEMU. The goal is to get
closer to upstream, while also allowing really separating CPUState
from CPUArmState in future patches.

+ Move "current_cpu" to a thread-local variable on Linux, just like
upstream. Testing shows this doesn't affect performance.

Change-Id: Id07bbef4ba1584e607bec647d5117ac755c48ce6
/external/qemu/translate-all.c
d6d1c4909479d4e5cec2cfa22e15e8c861b19d4f 18-Mar-2014 David 'Digit' Turner <digit@google.com> Delegate setup of TCG temporaries to targets

Delegate TCG temp_buf setup to targets, so that they can use a stack
frame later instead.

Upstream 614f104dfd2bf6d25170fb0afc086920cc7c407b

Change-Id: Ie068297b6ded574c7606e8c5708b20500524c2c6
/external/qemu/translate-all.c
5bb450ee9cc5da0c6582e63f41c504c7861e2788 14-Mar-2014 David 'Digit' Turner <digit@google.com> Rename CONFIG_MEMCHECK to CONFIG_ANDROID_MEMCHECK

Change-Id: I9b0edcc1e243111f86f18c22eecbebb23219c297
/external/qemu/translate-all.c
96e493a7f0be0193cb17b24c3492d998411b5031 14-Mar-2014 David 'Digit' Turner <digit@google.com> Move memcheck implementation to android/qemu/memcheck/

Change-Id: I806820d2c3d3f1436bbca54e53a7fa1a0e0a4dba
/external/qemu/translate-all.c
3e0677df2819b1366819fe4112dc8464425b6eda 07-Mar-2014 David 'Digit' Turner <digit@google.com> translate-all.c: Multi-level page maps.

This brings translate-all.c to a state much closer to upstream.
The major difference is the implementation of multi-level page
tables (for PageDesc and PhysPageDesc entries). This is a preliminary
requirement to handle 64-bit address spaces properly.

+ Move cpu_interrupt() from exec.c to translate-all.c

Change-Id: I12f17cc92faa51cf6eb9ceba2be4b29817eed5fe
/external/qemu/translate-all.c
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/translate-all.c
ff9a2b851f95dff46171881afcdc65b2e164d36d 17-Feb-2014 David 'Digit' Turner <digit@google.com> Move TranslationBlock routines to translate-all.c

This matches upstream and makes comparison easier. Note that
the implementation has not changed. In particular the page cache
still doesn't work with TARGET_PHYS_ADDR_SPACE_BITS == 64.

Change-Id: I42b4bf1e4ee819ac76555082c810534415475d55
/external/qemu/translate-all.c
85c62200dbdb7ced04b34cb228098b888a8cd828 16-Feb-2014 David 'Digit' Turner <digit@google.com> include/exec: Mist minor integrations.

Change-Id: I4b775eac3ef81f466cebd52ecbaab2c94494944f
/external/qemu/translate-all.c
4d6613c972c53178ff9ea39de7fa79d07649fad5 22-Jan-2014 David 'Digit' Turner <digit@android.com> Simple renaming: CPUOldState -> CPUArchState where relevant.

This patch changes a few headers and sources to match upstream when
distinguishing between CPUArchState and CPUOldState (which will become
CPUState soon). For now, both types are identical so this should not
change the generated binaries at all.

Change-Id: I738b4ccaf75838a5931538dd52d1873750f1b816
/external/qemu/translate-all.c
3dc53fc5342d24fae977049a40c34cc63ba04ad6 17-Jan-2014 David 'Digit' Turner <digit@android.com> cputlb.c: move tlb routines there to match upstream.

This contains misc tlb routines that were previously in exec.c.
Note that tb_flush_jmp_cache was moved to translate-all.c

Change-Id: I60046b55ad46f6fb78c5dbd9444bef137abc5aca
/external/qemu/translate-all.c
e2678e116c8cdb0f36b247a5bd9cfacc849362fc 16-Jan-2014 David 'Digit' Turner <digit@android.com> Rename CPUState to CPUOldState.

Upstream qemu has split the cpu state into two new data structures:

CPUState -> is used to model the CPU state through the QEMU
object model.

CPUArchState -> actually a macro that aliases CPUArmState,
CPUX86State or CPUMIPSState.

Both were part of the "CPUState" in the current emulator sources.

Previous patches introduced CPUArchState, as a simple alias to the
machine-specific state. This patch renames any use of CPUState in
the current code to CPUOldState, except within target-*/ directories
where it is replaced by CPU${ARCH}State instead.

This will allow bringing the upstream CPUState definition in the
source tree, and slowly migrate everything to the right location.

Change-Id: I88b79e6e89f1f36084dc2642e1cf415135e4da09
/external/qemu/translate-all.c
aa8236dc1b1ea300ab18716db5b8fab42aca3ca7 10-Jan-2014 David 'Digit' Turner <digit@android.com> qemu-malloc.c: Remove qemu-specific heap routines.

Remove all uses of qemu_malloc/malloc0/realloc/free/strdup/etc to use
the equivalent GLib functions (g_malloc, g_free, ...) as per upstream.

This also removes qemu-malloc.c since it's no longer required.

Change-Id: I3c36a0396b73dd114b8da385b43f56a2e54dbb15
/external/qemu/translate-all.c
cc33b2d8035092608c7cba4154e9c44452727e1b 15-Dec-2013 David 'Digit' Turner <digit@android.com> Move disas.h to include/disas/

+ dis-asm.h -> include/disas/bfd.h

+ arm-dis.c -> disas/arm.c
ppc-dis.c -> disas/ppc.c
i386-dis.c -> disas/i386.c
mips-dis.c -> disas/mips.c

+ remove all unused .ld scripts

Change-Id: Ie29662b83c09ea17d34e42dda3998691c182b10e
/external/qemu/translate-all.c
852088c7e08182c2de563872d558309815cbfa0d 14-Dec-2013 David 'Digit' Turner <digit@android.com> Move headers to include/exec/

Change-Id: Ife43f9cd12a02aa98f408043b0cccb9fe45a9ff7
/external/qemu/translate-all.c
7a78db75ad42aea283f5073f51891464104a9fc3 14-Dec-2013 David 'Digit' Turner <digit@android.com> Move qemu-timer.h to include/qemu/timer.h

Note: upstream still puts qemu-timer.c in the top-level
directory, so no need to move it

Change-Id: I475309d6f0040b4fd2277e52a2526825c112e91f
/external/qemu/translate-all.c
c5111a01ca209a29fdcb1a9a8917cc08ae5af9cb 11-Jul-2013 Andrey Petrov <andrey.petrov@gmail.com> memcheck: fix guest pc <-> host pc mapping on 64 bit arch

Currently -memcheck A and friends do not report guest PCs properly on 64-bit
hosts, because the code assumes host and guest pointer sizes match. As result,
memcheck can't figure out guest PC so it renders functionality virtually
worthless. This fix changes tpc2gpc from target_ulong to uintptr_t. This works
on both 32-bit and 64-bit hosts, as the type represents unsigned integer
matched to pointer on a given architecture.

Change-Id: Ie8515796c56ef1b3132d0b3b0dd2bee1d9ec072d
Signed-off-by: Andrey Petrov <andrey.petrov@gmail.com>
/external/qemu/translate-all.c
f1d9bf153726533acf659efd796aa484dfd0b412 11-May-2011 David 'Digit' Turner <digit@android.com> tcg: integrate upstream version

Change-Id: Ifcdebc2e7179fbc64b46a9150e6dae62f86eba3c
/external/qemu/translate-all.c
f645f7d6fd841e39524e5df8c1a7fd8347f92ac1 11-May-2011 David 'Digit' Turner <digit@android.com> cpu_restore_state: remove un-necessary argument.

Change-Id: I01cef0743cc9db9d21c2b7feb9f2a877ac4d2b35
/external/qemu/translate-all.c
d3d4468189618e89f74d8f51b8470f277e000938 10-May-2011 David 'Digit' Turner <digit@android.com> translate-all.c: minor integrate
/external/qemu/translate-all.c
d9b6cb97a8a9e93f1bbe5351874b03f7faa81783 20-Oct-2010 David 'Digit' Turner <digit@android.com> Fix linux-x86_64 build.

Fix various 64-bitness issues in the source code to
make the --try-64 option work again on Linux. Note that
the generated binary is not faster than its 32-bit variant
when it comes to benchmarking the boot sequence.

Change-Id: Iad248e033757d4cd25524a438a5dbe1cf3aca6cf
/external/qemu/translate-all.c
6a9ef1773bf874dea493ff3861782a1e577b67dd 09-Sep-2010 David Turner <digit@android.com> upstream: move timer management code to qemu-timer.c
/external/qemu/translate-all.c
2910f183ddd5286911bc1e3499ea93cb57de8b75 11-May-2010 David 'Digit' Turner <digit@android.com> Upstream: Misc integration - includes qobject.h and related sources

Change-Id: Idfa93ab5c67c95a3bc1869eeaf3a84a75fe24cd6
/external/qemu/translate-all.c
5389aa19033153c09556d1362a8b8a56abccb8f5 16-Feb-2010 Vladimir Chtchetkine <vchtchetkine@google.com> Merge memory checking from sandbox

Change-id: Ibce845d0
/external/qemu/translate-all.c
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/translate-all.c
8b23a6c7e1aee255004dd19098d4c2462b61b849 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/qemu/translate-all.c
f721e3ac031f892af46f255a47d7f54a91317b30 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/qemu/translate-all.c
c27f813900a3c114562efbb8df1065e94766fc48 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/external/qemu/translate-all.c
55f4e4a5ec657a017e3bf75299ad71fd1c968dd3 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/external/qemu/translate-all.c
413f05aaf54fa08c0ae7e997327a4f4a473c0a8d 12-Jan-1970 Upstream <upstream-import@none> external/qemu 0.8.2
/external/qemu/translate-all.c