History log of /external/qemu/target-mips/op_helper.c
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/target-mips/op_helper.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/target-mips/op_helper.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/target-mips/op_helper.c
e6125dec823c2725c6b494378a7acd5b6c33aa4f 04-Apr-2014 David 'Digit' Turner <digit@google.com> softmmu: Pass env to load/store routines.

Also define __ldl_mmu et al. in cputlb.c because the TCG-generated
code still calls these directly. Note that these will go once we
actually upgrade TCG to a more recent version.

Change-Id: Id1983a9f16f64a28c089e458c79f74ac065bf66c
/external/qemu/target-mips/op_helper.c
6cca40ecfdecbf496d5f07681e4b619f48db2f4d 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Remove dyngen-exec.h usage.

Change-Id: I9986666898ba14fb5e9a36805385e6f687f74e4f
/external/qemu/target-mips/op_helper.c
cd35ed2793febb8f8fa19ad4e0052dba915d7c88 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to atomic load/store helpers.

IMPORTANT NOTE: This contains a gross hack to route around a very
nasty GCC 4.6 compiler bug (on Linux), that prevented helper_ll()
from being compiled correctly, resulting in failure to boot a
valid MIPS system image!!

Change-Id: I20f084e3966a7160cd283f2aa4d391799abc667c
/external/qemu/target-mips/op_helper.c
65b44d50a84dd1272547c001ea5ecca62879e9aa 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to internal helpers.

Change-Id: Ia57cbacb7520d8747a844f74826879ea40265cb1
/external/qemu/target-mips/op_helper.c
26efe758c079d8be435ec74470731237cd777c1d 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to MIPS MT helpers.

Change-Id: Id238063e31dd54f8c7e7ae5f5b9c054136c4d87f
/external/qemu/target-mips/op_helper.c
06978cc902013686f4443582e55361f0d86fbc2e 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to coprocessor helpers.

Change-Id: Ia673b0a09e966e3f8ccbab7ab27ec799d102ae88
/external/qemu/target-mips/op_helper.c
5c5a6e13ddb15cd1178071c60f0f22d265819021 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to multiplication helpers.

Change-Id: I1b1b534a9e231743ad258c9ff132d64c1ca390e6
/external/qemu/target-mips/op_helper.c
87350d189097667bf170a57ee54347498511dfb6 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to FPU helpers.

Change-Id: Iac18a07f8ad4400932395973c03e6ff5b0a0dacd
/external/qemu/target-mips/op_helper.c
d62e538a5a9627bb1306ba14130699aaba9b585f 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to non-atomic load/store helpers.

Change-Id: Ia652eb3212eb05e4bf726b1372fbee9624aa05a3
/external/qemu/target-mips/op_helper.c
d5b76c63cc364a51cfd4ba45e2449c907a0a2e97 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to special functions #2

Change-Id: I1105f12059a25542503478fde35253709354f867
/external/qemu/target-mips/op_helper.c
6480c96e71da41f7600478bc0d809f737090b35f 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to special helpers.

Change-Id: I269c53d4d26a60dd1b311ffcc58c3ec2d890207b
/external/qemu/target-mips/op_helper.c
758fa08712c9b1075c49adf86fd0a24c8fdb30ec 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Pass env to TLB helpers

Change-Id: Iea68dbfa2dfc4ff72d21f4bb71775229e2ed3f8f
/external/qemu/target-mips/op_helper.c
589fe9bc37aebf62e6d80c371d47a19e52a5f58a 03-Apr-2014 David 'Digit' Turner <digit@google.com> target-mips: Ensure do_unaligned_access() takes CPUArchState parameter.

Small cleanup to prepare for bigger ones.

Change-Id: I6ec45cc32a5d83283963fbf79099a76ede1b7d1f
/external/qemu/target-mips/op_helper.c
eb3bc46a1a876f279b06d7372bf5866fbcf4e8f8 21-Mar-2014 David 'Digit' Turner <digit@google.com> exec/softmmu*: Misc fixes.

Upstream 2050396801ca0c8359364d61eaadece951006057
Upstream b065927a02cbbaca032ed20d3039baca0914165c

Change-Id: I5b484ed026f8755804d443d45be2e96010cef60a
/external/qemu/target-mips/op_helper.c
811b0299ba969b708c7c15b50ebe205b87877a08 20-Mar-2014 David 'Digit' Turner <digit@google.com> mips: Synchronize CP0 TCSTatus, Status and EntryHi

Upstream fe8dca8c3c70d079804ce92e1c0a503fb57020d0

Change-Id: I42c294c182b31cfaaaec701438b9bcd82dfa7b9a
/external/qemu/target-mips/op_helper.c
c8ba4e8ec5a6b3ff95dcd7d2c61d88363e5699ba 20-Mar-2014 David 'Digit' Turner <digit@google.com> mips: Handle TC indexing of other VPEs

Upstream b93bbdcd69819cdbcb7e3be54b789be94bda0ff1

Change-Id: I85a18a1a3bbb8758bdfc6206521965885726b726
/external/qemu/target-mips/op_helper.c
0d8b235c0c6c02de86a4e7415d574175b4518ff0 20-Mar-2014 David 'Digit' Turner <digit@google.com> Large page TLB flush

+ Remove unused is_softmmu parameter.

Upstream d4c430a80f000d722bb70287af4d4c184a8d7006
Upstream 97b348e7d221c94ddde609346407bd2cd6f85044

Change-Id: I7ccc6a8ffc040f91a58a3206d95417d22001b67b
/external/qemu/target-mips/op_helper.c
a889d35e76c8ea18caf70c738fd585c64b857369 20-Mar-2014 David 'Digit' Turner <digit@google.com> target-*/exec.h cleanup

This patch gets rid of target-*/exec.h headers by moving the corresponding
definitions either inside target-*/op_helper.c, or dyngen-exec.h for the
global register-based 'env' value, which will be removed in future patches.

Upstream 3e4571724fb92c77de81d8b54957de8232be6706

Change-Id: I513d5c27c01c6dc727c1ce6fb7f3a7a5dc03800f
/external/qemu/target-mips/op_helper.c
eca7bc24e45fb6809582795ff88f13384b5ce7df 14-Mar-2014 David 'Digit' Turner <digit@google.com> softmmu_header.h: Pass CPUArchState to helper routines.

This patch modifies the functions defined in softmmu_header.h
to accept a CPUArchState as their first parameter, then it
adjusts every caller appropriately.

This gets up closer to upstream, and remove the obsolete
softmmu_outside_jit.h that was used to do the same thing.

Change-Id: I9eef01e95b7233c8c6f6da43d17262b9a9ebcd99
/external/qemu/target-mips/op_helper.c
6cf763a179bb432ef845025bb3639fcaf1251bd0 14-Mar-2014 David 'Digit' Turner <digit@google.com> Fix unassigned memory access handling

Upstream b14ef7c9ab41ea824c3ccadb070ad95567cca84e

Change-Id: Ia198f76ad4277469a96eb79cf495e80f9d4b6196
/external/qemu/target-mips/op_helper.c
6d1afd3bf737fe15c9ba2a23c2f957ae8ff2e663 14-Mar-2014 David 'Digit' Turner <digit@google.com> softmmu_template: Pass CPUArchState to tlb_fill.

See upstream patch bccd9ec5f098668576342c83d90d6d6833d61d33

Change-Id: I889d8922d355bade60ae5c8cd00723692218a9c1
/external/qemu/target-mips/op_helper.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/target-mips/op_helper.c
fa32c32d65a3082d4e06a1ba0e48eb40be27e7e0 26-Feb-2014 Chris Dearman <chris.dearman@imgtec.com> [MIPS] Fix cpu_mips_translate_address return value

The cleanups in a2c14f947951612b45024095afd2210aa7368773 fixed a bug
in the error handling path of do_translate_address(). In turn this
exposed a bug in cpu_mips_translate_address() which was always
returning an error that do_translate_address() had ignored.

The cleanup change to do_translate_address() was reverted in
28a24c94e7350a80d5e7e186289cde6a1300bdfb, but fixing
cpu_mips_translate_address() is the correct thing to do.

Change-Id: I442d71130b758fdbe8e864dcba0ba3141b0fe225
/external/qemu/target-mips/op_helper.c
c005246ed03de874fdc432073ba8e5e8ebfed922 25-Feb-2014 David 'Digit' Turner <digit@google.com> Remove trailing spaces in misc sources.

Change-Id: I573d4e816112b7401b3c824fbe773b85a8601531
/external/qemu/target-mips/op_helper.c
80ba4166f5ad86cb50a0b0c1c63de06740729065 19-Feb-2014 David 'Digit' Turner <digit@google.com> Fix mips emulation regression.

This patch fixes a regression that prevented MIPS emulation from
working properly. It was introduced by a patch that was supposed
to only fix compiler warnings, but actually modified the bitness
of a comparison:

https://android-review.googlesource.com/#/c/80825/

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

Change-Id: I4b775eac3ef81f466cebd52ecbaab2c94494944f
/external/qemu/target-mips/op_helper.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/target-mips/op_helper.c
a2c14f947951612b45024095afd2210aa7368773 04-Feb-2014 David 'Digit' Turner <digit@google.com> Cleanup: Remove 100+ compiler warnings.

This is a big cleanup that removes compiler warnings by performing
the following:

- Remove unused functions or variables.
- Change pointer cast to be alias safe using unions.
- Use __attribute__((unused)) on some local variable definitions
when their usage depends on conditional defines that are not
always true when compiling the same source several times.
- Fix a couple array indexing bugs.

There are still a few warnings from the JSON lexer, libjpeg and
the TCG helpers though, but the overall compilation is much cleaner.

BUG=NONE

Change-Id: Ic4483e6402b266ecfd7bca8c92a73d8fcf392a1f
/external/qemu/target-mips/op_helper.c
bcde1092aca184dbd7860078af020de7d1e4e22f 09-Jan-2014 David 'Digit' Turner <digit@android.com> rename target_phy_addr_t to hwaddr to match upstream.

Upstream got rid of the target_phys_addr_t and replaced it with 'hwaddr',
so do the corresponding rename here. Note that:

- This also renames <exec/targphys.h> to <exec/hwaddr.h>

- Upstream always deins hwaddr as a 64-bit type, while the size of
our own hwaddr is still controlled by TARGET_PHYS_ADDR_BITS, and
will be 32 for now.

A future patch will change the type definition to fully match
upstream, but it is more risky / requires more cleanups. It's
simply cleaner / simpler to put the related work in a separate
patch, given the large number of sources touched by the
current change.

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

Change-Id: Ife43f9cd12a02aa98f408043b0cccb9fe45a9ff7
/external/qemu/target-mips/op_helper.c
e90d665cd63a0bc5c3306e1ee3e98ad362546b16 14-Dec-2013 David 'Digit' Turner <digit@android.com> Move more stuff to include/qemu/ and util/

Change-Id: I3d10ae4d5b050f7da565476e2c0f6be5d3348f5d
/external/qemu/target-mips/op_helper.c
55ff318b4e5382074e2049c996cb6df1041aff1b 03-Aug-2012 Chris Dearman <chris@mips.com> [MIPS] Speed up software refill handler

Emulating each instruction of the software refill handler
has a significant impact on the overall performance of QEMU because
of the overhead of emulating the various CP0 instructions to accurately
reflect the machine state. Running the software TLB handler takes
the equivalent of 1000's of machine cycles.

This patch implements a pseudo hardware TLB refill handler
that significantly reduces the impact of refilling the TLB
to bring it more inline with what would be observed on a real target.

Signed-off-by: Steven Hill <sjhill@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Yajin <yajin@mips.com.cn>
/external/qemu/target-mips/op_helper.c
342a01fc826881e6b12b7673c7d2c280295f4d9e 21-Jun-2012 Duane Sand <duanes@mips.com> [MIPS] Fix startup segfault in emulator64-mips

Avoid truncation of 64-bit host addresses for 32-bit Mips physaddrs.
Revert workaround I17fe688d19e3cd7f328721e6363bacd6e6689ca;
allow emulator to again default to emulator64-mips.

Change-Id: I0c83d8bf60fc52a758b84d8131b2bad53375aa61
Signed-off-by: Duane Sand <duanes@mips.com>
/external/qemu/target-mips/op_helper.c
5b954e623db71d3df2d9af1825ec3815137a06a7 01-Feb-2012 Bhanu Chetlapalli <bhanu@mips.com> [MIPS] Clear softfpu status before emulating FPU instructions

This applies to round, trunc, ceil and floor instructions

Change-Id: I4a5f1619ecd8fe2d7ce508f8e569be129a8b1e34
Signed-off-by: Chris Dearman <chris@mips.com>
/external/qemu/target-mips/op_helper.c
325e19d19ff9e1fc9c6acb12eeb754563fc2e251 01-Feb-2012 Bhanu Chetlapalli <bhanu@mips.com> [MIPS] Tweak MIPS support to work in Android qemu framework

Change-Id: Icd617cb91fe87a6f88566dd57b6405b216ca3570
Signed-off-by: Chris Dearman <chris@mips.com>
/external/qemu/target-mips/op_helper.c
409c7b66435cf5947cab6bf0710f92507317f22e 01-Feb-2012 Bhanu Chetlapalli <bhanu@mips.com> [MIPS] Import MIPS target support

From v0.12.5 tag at git://git.sv.gnu.org/qemu.git
CommitID: 174f225e9d62e8f3002e274e4f718bd2a967fbf4

Change-Id: I35b49a4319cee4b69cf9da4e5af1f43327e21056
Signed-off-by: Chris Dearman <chris@mips.com>
/external/qemu/target-mips/op_helper.c
55f4e4a5ec657a017e3bf75299ad71fd1c968dd3 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/external/qemu/target-mips/op_helper.c
413f05aaf54fa08c0ae7e997327a4f4a473c0a8d 12-Jan-1970 Upstream <upstream-import@none> external/qemu 0.8.2
/external/qemu/target-mips/op_helper.c