Statistics
| Branch: | Revision:

root / tcg @ d73685e3

# Date Author Comment
b18212c6 09/22/2012 05:52 pm Stefan Weil

tcg/i386: Add shortcuts for registers used in L constraint

While 64 bit hosts use the first three registers which are also used
as function input parameters, 32 bit hosts use TCG_REG_EAX and
TCG_REG_EDX which are not used in parameter passing.

After defining new register macros for the registers used in L...

d73685e3 09/22/2012 05:52 pm Stefan Weil

tcg/i386: Remove unused registers from tcg_target_call_iarg_regs

32 bit x86 hosts don't need registers for helper function arguments
because they use the default stack based calling convention.

Removing the registers allows simpler code for function
tcg_target_get_call_iarg_regs_count....

f0da3757 09/22/2012 04:10 pm Richard Henderson

tcg-hppa: Implement movcond

Signed-off-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

9bacf414 09/22/2012 04:10 pm Max Filippov

tcg/README: document tcg_gen_goto_tb restrictions

See
http://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg03196.html
for the whole story.

Signed-off-by: Max Filippov <>
Signed-off-by: Aurelien Jarno <>

1b7621ad 09/22/2012 04:10 pm Stefan Weil

w64: Fix TCG helper functions with 5 arguments

TCG uses 6 registers for function arguments on 64 bit Linux hosts,
but only 4 registers on W64 hosts.

Commit 2999a0b20074a7e4a58f56572bb1436749368f59 increased the number
of arguments for some important helper functions from 4 to 5...

e590d4e6 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: rework copy progagation

The copy propagation pass tries to keep track what is a copy of what
and what has copy of what, and in addition it keep a circular list of
of all the copies. Unfortunately this doesn't fully work: a mov from
a temp which has a state "COPY" changed it into a state "HAS_COPY"....

1ff8c541 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: do copy propagation for all operations

It is possible to due copy propagation for all operations, even the one
that have side effects or clobber arguments (it only concerns input
arguments). That said, the call operation should be handled differently...

0aba1c73 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: optimize "op r, a, a => mov r, a"

Now that we can easily detect all copies, we can optimize the
"op r, a, a => mov r, a" case a bit more.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

3c94193e 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: optimize "op r, a, a => movi r, 0"

Now that it's possible to detect copies, we can optimize the case
the "op r, a, a => movi r, 0". This helps in the computation of
overflow flags when one of the two args is 0.

Reviewed-by: Richard Henderson <>...

b336ceb6 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: further optimize brcond/movcond/setcond

When both argument of brcond/movcond/setcond are the same or when one
of the two values is a constant equal to zero, it's possible to do
further optimizations.

Reviewed-by: Richard Henderson <>...

c2b0e2fe 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: prefer the "op a, a, b" form for commutative ops

The "op a, a, b" form is better handled on non-RISC host than the "op
a, b, a" form, so swap the arguments to this form when possible, and
when b is not a constant.

This reduces the number of generated instructions by a tiny bit....

fba3161f 09/22/2012 04:10 pm Aurelien Jarno

tcg: remove #ifdef #endif around TCGOpcode tests

Commit 25c4d9cc changed all TCGOpcode enums to be available, so we don't
need to #ifdef #endif the one that are available only on some targets.
This makes the code easier to read.

Reviewed-by: Richard Henderson <>...

7ef55fc9 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: add constant folding for deposit

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

0f46c064 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: optimize brcond arg, 0

MIPS has some conditional branch instructions when comparing with zero.
Use them.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

c1cf85c9 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: optimize bswap{16,16s,32} on MIPS32R2

bswap operations can be optimized on MIPS32 Release 2 using the ROTR,
WSBH and SEH instructions. We can't use the non-R2 code to implement the
ops due to registers constraints, so don't define the corresponding...

9a152519 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: implement rotl/rotr ops on MIPS32R2

rotr operations can be optimized on MIPS32 Release 2 using the ROTR and
ROTRV instructions. Also implemented rotl operations by subtracting the
shift from 32.

Reviewed-by: Richard Henderson <>...

04f71aa3 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: implement deposit op on MIPS32R2

deposit operations can be optimized on MIPS32 Release 2 using the INS
instruction.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

7d7c4930 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: implement movcond op on MIPS32R2

movcond operation can be implemented on MIPS32 Release 2 using the MOVN,
MOVZ, SLT and SLTU instructions.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

48b56ce1 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: remove TCG_TEMP_ANY

TCG_TEMP_ANY has no different meaning than TCG_TEMP_UNDEF, so use
the later instead.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

b80bb016 09/22/2012 04:10 pm Aurelien Jarno

tcg/optimize: check types in copy propagation

The copy propagation doesn't check the types of the temps during copy
propagation. However TCG is using the mov_i32 for the i64 to i32
conversion and thus the two are not equivalent.

With this patch tcg_opt_gen_mov() doesn't consider two temps of...

2ceb3a9e 09/22/2012 04:10 pm Aurelien Jarno

tcg-mips: fix wrong usage of 'Z' constraint

The 'Z' constraint has been introduced to map the zero register. However
when the op also accept a constant, there is no point to accept the zero
register in addition.

Reviewed-by: Richard Henderson <>...

0834c9ea 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: kill warnings in user mode

Recent versions of GCC emit warnings when compiling user mode targets.
Kill them by reordering a bit the #ifdef.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

5a0eed37 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: use TCGArg or TCGReg instead of int

Instead of int, use the correct TCGArg and TCGReg type: TCGReg when
representing a TCG target register, TCGArg when representing the latter
or a constant.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

3314e008 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: don't use global pointer

Don't use the global pointer in TCG, in case helpers try access global
variables.

Signed-off-by: Aurelien Jarno <>

0d0b53a6 09/22/2012 04:10 pm Aurelien Jarno

tcg/mips: use stack for TCG temps

Use stack instead of temp_buf array in CPUState for TCG
temps.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

e55f523d 09/21/2012 08:53 pm Richard Henderson

tcg-hppa: Fix broken load/store helpers

The CONFIG_TCG_PASS_AREG0 code for calling ld/st helpers
was not respecting the ABI requirement for 64-bit values
being aligned in registers.

Mirror the ARM port in use of helper functions to marshal
arguments into the correct registers....

d0a16297 09/21/2012 08:53 pm Richard Henderson

tcg-i386: Implement movcond

Signed-off-by: Richard Henderson <>
Reviewed-by: Aurelien Jarno <>
Signed-off-by: Aurelien Jarno <>

fa01a208 09/21/2012 08:53 pm Richard Henderson

tcg: Optimize movcond for constant comparisons

Signed-off-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

5d8f5363 09/21/2012 08:53 pm Richard Henderson

tcg: Optimize two-address commutative operations

While swapping constants to the second operand, swap
sources matching destinations to the first operand.

Signed-off-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

fe7e1d3e 09/21/2012 08:53 pm Richard Henderson

tcg: Fix !USE_DIRECT_JUMP

Commit 6375e09e changed the type of TranslationBlock.tb_next,
but failed to change the type of TCGContext.tb_next.

Signed-off-by: Richard Henderson <>
Reviewed-by: Andreas Färber <>
Signed-off-by: Aurelien Jarno <>

c08d9ee3 09/21/2012 08:53 pm Richard Henderson

tcg-hppa: Fix brcond2 and setcond2

Neither of these functions were performing double-word
compares properly.

Signed-off-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

ffc5ea09 09/21/2012 08:53 pm Richard Henderson

tcg: Introduce movcond

Implemented with setcond if the target does not provide
the optional opcode.

Signed-off-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

a2550660 09/19/2012 10:53 pm Aurelien Jarno

tcg/optimize: fix end of basic block detection

Commit e31b0a7c050711884ad570fe73df806520953618 fixed copy propagation on
32-bit host by restricting the copy between different types. This was the
wrong fix.

The real problem is that the all temps states should be reset at the end...

d104bebd 09/19/2012 10:40 pm Aurelien Jarno

revert "TCG: fix copy propagation"

Given the copy propagation breakage on 32-bit hosts has been fixed
commit e31b0a7c050711884ad570fe73df806520953618 can be reverted.

Cc: Blue Swirl <>
Signed-off-by: Aurelien Jarno <>

5c2d2a9e 09/19/2012 10:40 pm Aurelien Jarno

tcg/i386: allow constants in load/store ops

On x86, it is possible to move a constant value to memory. Add code to
handle a constant argument to load/store ops.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

332864bd 09/19/2012 10:40 pm Aurelien Jarno

tcg: mark set_label with TCG_OPF_BB_END flag

set_label is effectively the end of a basic block, as no optimization
can be made accross it. It was treated as such in the liveness analysis
code, but as a special case.

Mark it with TCG_OPF_BB_END flag so that this information can be used...

89c33337 09/15/2012 08:51 pm Blue Swirl

Remove unused CONFIG_TCG_PASS_AREG0 and dead code

Now that CONFIG_TCG_PASS_AREG0 is enabled for all targets,
remove dead code and support for !CONFIG_TCG_PASS_AREG0 case.

Remove dyngen-exec.h and all references to it. Although included by
hw/spapr_hcall.c, it does not seem to use it....

fedc0da2 09/11/2012 07:06 pm Aurelien Jarno

tcg/optimize: fix if/else/break coding style

optimizer.c contains some cases were the break is appearing in both the
if and the else parts. Fix that by moving it to the outer part. Also
move some common code there.

Reviewed-by: Richard Henderson <>...

fbeaa26c 09/11/2012 07:06 pm Aurelien Jarno

tcg/optimize: add constant folding for brcond

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

f8dd19e5 09/11/2012 07:06 pm Aurelien Jarno

tcg/optimize: add constant folding for setcond

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

65a7cce1 09/11/2012 07:05 pm Aurelien Jarno

tcg/optimize: swap brcond/setcond arguments when possible

brcond and setcond ops are not commutative, but it's easy to compute the
new condition after swapping the arguments. Try to always put the constant
argument in second position like for commutative ops, to help backends to...

01ee5282 09/11/2012 07:05 pm Aurelien Jarno

tcg/optimize: simplify shift/rot r, 0, a => movi r, 0 cases

shift/rot r, 0, a is equivalent to movi r, 0.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

61251c0c 09/11/2012 07:05 pm Aurelien Jarno

tcg/optimize: simplify and r, a, 0 cases

and r, a, 0 is equivalent to a movi r, 0.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

38ee188b 09/11/2012 07:05 pm Aurelien Jarno

tcg/optimize: simplify or/xor r, a, 0 cases

or/xor r, a, 0 is equivalent to a mov r, a.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

56e49438 09/11/2012 07:05 pm Aurelien Jarno

tcg/optimize: split expression simplification

Split expression simplification in multiple parts so that a given op
can appear multiple times. This patch should not change anything.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

c5cc28ff 09/11/2012 07:05 pm Aurelien Jarno

tcg: improve profiler

Now that there are two passes of optimization (optimize.c, liveness)
there is no point of outputing the statistics of the liveness part
only. Update the code to take into account both optimizations.

Reviewed-by: Richard Henderson <>...

6845df48 09/10/2012 02:38 pm Aurelien Jarno

tcg/s390: fix ld/st with CONFIG_TCG_PASS_AREG0

The load/store slow path has been broken in e141ab52d:
- We need to move 4 registers for store functions and 3 registers for
load functions and not the reverse.
- According to the s390x calling convention the arguments of a function...

18fec301 08/28/2012 09:38 pm Aurelien Jarno

tcg/mips: fix broken CONFIG_TCG_PASS_AREG0 code

The CONFIG_TCG_PASS_AREG0 code for calling ld/st helpers was
broken in that it did not respect the ABI requirement that 64
bit values were passed in even-odd register pairs. The simplest
way to fix this is to implement some new utility functions...

d03c98d8 08/26/2012 10:10 pm Aurelien Jarno

tcg/ia64: fix and optimize ld/st slow path

Store slow path has been broken in e141ab52d:
- the arguments are shifted before the last one (mem_index) is written.
- the shift is done for both slow and fast paths.

Fix that. Also optimize a bit by bundling the move together. This still...

18d445b4 08/26/2012 10:10 pm Aurelien Jarno

tcg/ia64: fix prologue/epilogue

Prologue and epilogue code has been broken in cea5f9a28.

Signed-off-by: Aurelien Jarno <>

9716ef3b 08/26/2012 09:14 pm Peter Maydell

tcg/arm: Fix broken CONFIG_TCG_PASS_AREG0 code

The CONFIG_TCG_PASS_AREG0 code for calling ld/st helpers was
broken in that it did not respect the ABI requirement that 64
bit values were passed in even-odd register pairs. The simplest
way to fix this is to implement some new utility functions...

3c01ae0e 06/24/2012 03:19 pm Scott Wood

tci: don't write zero for reloc in tci_out_label

If tci_out_label is called in the context of tcg_gen_code_search_pc, we
could be overwriting an already patched relocation with zero -- and not
repatch it because the set_label is past search_pc, causing a QEMU crash...

affe5189 06/24/2012 01:54 am Alexander Graf

TCG: Fix compile breakage in tcg_dump_ops

Commit eeacee4d865 changed the syntax of tcg_dump_ops, but didn't convert
all users (notably missing the ppc ones) to it. Fix them to the new syntax.

Signed-off-by: Alexander Graf <>
Signed-off-by: malc <>

eeacee4d 06/21/2012 09:45 pm Blue Swirl

qemu-log: cleanup

Don't use global variables directly but via accessor functions. Rename globals.

Convert macros to functions, add GCC format attributes.

Signed-off-by: Blue Swirl <>

24f50d7e 05/27/2012 08:52 pm Andreas Färber

tcg/ppc: Handle _CALL_DARWIN being undefined on Darwin

powerpc-apple-darwin9-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5577)
does not define _CALL_DARWIN, leading to unexpected behavior w.r.t.
register clobbering and stack frame layout.

Since _CALL_DARWIN is a reserved identifier, define a custom...

c82e5848 05/14/2012 11:53 pm Andreas Färber

tcg/ppc64: Don't hardcode register numbers for qemu_ld/st

Facilitates using r3 for prepended AREG0.

Signed-off-by: Andreas F?rber <>
Signed-off-by: malc <>

f4f7d01a 05/14/2012 11:53 pm Andreas Färber

tcg/ppc64: Fix CONFIG_TCG_PASS_AREG0

In qemu_ld/st load the registers for the helper calls directly rather
than rotating them around afterwards for AREG0.

Also clobber the additional register.

Signed-off-by: Andreas F?rber <>
Signed-off-by: malc <>

d831fdb0 05/09/2012 09:59 pm Andreas Färber

tcg/ppc: Don't hardcode register numbers

Also assure i64 alignment where necessary.

Alignment code optimization suggested by malc.

Signed-off-by: Andreas Färber <>
Acked-by: Alexander Graf <>
Signed-off-by: Anthony Liguori <>

a082615b 05/09/2012 09:59 pm Andreas Färber

tcg/ppc: Clobber r5 for 64-bit qemu_ld

This accounts for the additional addr_reg2 register.

Signed-off-by: Andreas Färber <>
Acked-by: Alexander Graf <>
Signed-off-by: Anthony Liguori <>

1b3e76eb 05/09/2012 09:59 pm Andreas Färber

tcg/ppc: Fix CONFIG_TCG_PASS_AREG0 mode

Adjust the tcg_out_qemu_{ld,st}() slow paths to pass AREG0 in r3,
based on patches by malc.

Also adjust the registers clobbered, based on patch by Alex.

Signed-off-by: Andreas Färber <>
Acked-by: Alexander Graf <>...

c1696d94 05/09/2012 09:59 pm Andreas Färber

tcg/ppc: Do not overwrite lower address word on Darwin and AIX

For targets where TARGET_LONG_BITS != 32, i.e. 64-bit guests,
addr_reg is moved to r4. For hosts without TCG_TARGET_CALL_ALIGN_ARGS
either data_reg2 or data_reg or a masked version thereof would overwrite...

f05ae537 05/03/2012 02:48 pm malc

Bail out if CONFIG_TCG_PASS_AREG0 is defined

Signed-off-by: malc <>

f6af014e 05/03/2012 02:47 pm malc

Restore consistent formatting

Signed-off-by: malc <>

c170cb66 04/15/2012 10:25 pm Stefan Weil

tcg/i386: Use GDB JIT debugging interface only for hosts with ELF

Not all i386 / x86_64 hosts use ELF.
Ask the compiler whether ELF is used.

On w64, gdb crashes when ELF_HOST_MACHINE is defined.

Cc: Blue Swirl <>
Acked-by: Richard Henderson <>...

8d918718 04/15/2012 10:25 pm Stefan Weil

tcg/i386: Add support for w64 ABI

w64 uses the registers rcx, rdx, r8 and r9 for function arguments,
so it needs a different declaration of tcg_target_call_iarg_regs.

rax, rcx, rdx, r8, r9, r10 and r11 may be changed by function calls.

rbx, rbp, rdi, rsi, r12, r13, r14 and r15 remain unchanged by function calls....

f638f0d3 03/29/2012 10:10 am Li Zhang

qemu tcg: Remove one entry of INDEX_op_ld_i64 from ppc_op_defs

There two entries of INDEX_op_ld_i64 in the ppc_op_defs. That causes an
assertion failure in tcg_add_target_add_op_defs() when --enable-debug is
used on a ppc64 backend (that's ppc64 host, not target)....

cb1977d3 03/24/2012 09:57 pm Richard Henderson

tcg-sparc: Add debug_frame support.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

e7bd6300 03/24/2012 09:57 pm Richard Henderson

tcg-hppa: Add debug_frame support.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

abbb3eae 03/24/2012 09:57 pm Richard Henderson

tcg: Allow ELF_HOST_FLAGS and ELF_OSABI overrides in gdb-jit.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

5872bbf2 03/24/2012 09:57 pm Richard Henderson

tcg: Add debug_info to JIT ELF image.

This allows us to actually supply a function name in softmmu builds;
gdb doesn't pick up the minimal symbol table otherwise. Also add a
bit of documentation and statically generate more of the ELF image.

Signed-off-by: Richard Henderson <>...

813da627 03/24/2012 03:07 pm Richard Henderson

tcg: Use the GDB JIT debugging interface.

This allows us to generate unwind info for the dynamicly generated
code in the code_gen_buffer. Only i386 is converted at this point.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

5bd33de6 03/18/2012 09:15 pm Blue Swirl

tcg: fix sparc host for AREG0 free operation

e141ab52d2ea5d0bc6ad3b1ad32841127ca04adc didn't handle
the other memory access helper case, fix.

Signed-off-by: Blue Swirl <>

e141ab52 03/18/2012 02:21 pm Blue Swirl

softmmu templates: optionally pass CPUState to memory access functions

Optionally, make memory access helpers take a parameter for CPUState
instead of relying on global env.

On most targets, perform simple moves to reorder registers. On i386,
switch from regparm(3) calling convention to standard stack-based...

6a18ae2d 03/18/2012 02:21 pm Blue Swirl

i386: Remove REGPARM

Use stack based calling convention (GCC default) for interfacing with
generated code instead of register based convention (regparm(3)).

Signed-off-by: Blue Swirl <>

69784eae 03/17/2012 03:02 pm Stefan Weil

w64: Fix data type of next_tb and tcg_qemu_tb_exec

next_tb is the numeric value of a tcg target (= QEMU host) address.

Using tcg_target_ulong instead of unsigned long shows this and makes
the code portable for hosts with an unusual size of long (w64).

The type cast '(long)(next_tb & ~3)' was not needed (casting...

4055299e 03/17/2012 02:57 pm Kirill Batuzov

Fix large memory chunks allocation with tcg_malloc.

An attempt to allocate a large memory chunk after a small one resulted in
circular links in list of pools. It caused the same memory being
allocated twice for different arrays.

Now pools for large memory chunks are kept in separate list and are...

9349b4f9 03/14/2012 11:20 pm Andreas Färber

Rename CPUState -> CPUArchState

Scripted conversion:
for file in .[hc] hw/.[hc] hw/kvm/*.[hc] linux-user/*.[hc] linux-user/m68k/*.[hc] bsd-user/*.[hc] darwin-user/*.[hc] tcg/*/*.[hc] target-*/cpu.h; do
sed -i "s/CPUState/CPUArchState/g" $file
done...

9d6fca70 03/11/2012 01:28 pm Stefan Weil

tcg: Improve tcg_out_label and fix its usage for w64

tcg_out_label is always called with a third argument of pointer type
which was casted to tcg_target_long.

These casts can be avoided by changing the prototype of tcg_out_label.

There was also a cast to long. For most hosts with...

2aeabc08 03/03/2012 08:10 pm Stefan Weil

w64: fix type casts when calling flush_icache_range

Signed-off-by: Stefan Weil <>
Signed-off-by: Blue Swirl <>

dba4f1bc 03/03/2012 08:10 pm Stefan Weil

w64: Change data type of parameters for flush_icache_range

The TCG targets i386 and tci needed a change of the function
prototype for w64.

This change is currently not needed for the other TCG targets,
but it can be applied to avoid code differences.

Cc: Blue Swirl <>...

f57a5160 03/03/2012 08:10 pm Stefan Weil

w64: Fix data type of parameters for flush_icache_range

flush_icache_range takes two address parameters which must be large
enough to address any address of the host.

For hosts with sizeof(unsigned long) == sizeof(void *), this patch
changes nothing. All currently supported hosts fall into this category....

c38bb94a 03/03/2012 08:10 pm Stefan Weil

tcg: Rearrange definitions and include statements

This change makes tcg_target_ulong available in tcg-target.h.

Signed-off-by: Stefan Weil <>
Signed-off-by: Blue Swirl <>

a97e45c8 02/23/2012 10:59 am Stefan Weil

tcg: Remove unneeded include statements

The standard include files are already included in qemu-common.h.

malloc.h and alloca.h were needed for alloca() which was removed
from TCG code some years ago when switching from dyngen to TCG
(see commit 49516bc0d622112caac9df628caf19010fda8b67)....

5c84bd90 01/13/2012 12:36 pm Aurelien Jarno

tcg-arm: fix a typo in comments

ARM still doesn't support 16GB buffers in 32-bit modes, replace the
16GB by 16MB in the comment.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>
Signed-off-by: Stefan Hajnoczi <>

05b922dd 01/10/2012 06:52 pm Peter Maydell

tcg/arm: Use r6 as TCG_AREG0 to avoid clash with Thumb framepointer

On ARM, in Thumb mode r7 is used for the framepointer; this meant
that we would fail to compile in debug mode because we were using r7
for TCG_AREG0. Shift to r6 instead to avoid this clash....

222f23f5 12/14/2011 10:58 pm Dr. David Alan Gilbert

tcg/arm: remove fixed map code buffer restriction

On ARM, don't map the code buffer at a fixed location, and fix up the
call/goto tcg routines to let it do long jumps.

Mapping the code buffer at a fixed address could sometimes result in it being
mapped over the top of the heap with pretty random results....

73f5e313 12/14/2011 01:13 pm Peter Maydell

tcg: make tcg_const_ptr actually accept a pointer argument

Make tcg_const_ptr() include a cast so that you can pass it a
pointer. This allows us to drop the casts we had in all the places
that use this macro.

Acked-by: Andreas Färber <>...

46d5dee0 12/09/2011 12:03 pm Stefan Weil

tcg: Remove redundant declarations of TCG_TARGET_REG_BITS

TCG_TARGET_REG_BITS is declared in tcg.h for all TCG targets.

Signed-off-by: Stefan Weil <>
Signed-off-by: Stefan Hajnoczi <>

9814dd27 12/02/2011 12:50 pm Dong Xu Wang

fix spelling in tcg sub directory

Signed-off-by: Dong Xu Wang <>
Signed-off-by: Stefan Hajnoczi <>

51711aee 11/28/2011 07:36 pm Stefan Weil

tci: Make flush_icache_range() inline

This is standard for other tcg targets and improves tci, too.

Signed-off-by: Stefan Weil <>
Signed-off-by: Anthony Liguori <>

b08d26b7 11/19/2011 01:20 pm Richard Henderson

tcg-sparc: Fix set-but-not used warnings.

In both cases, val is computed, but then not used in the
subsequent line, which then re-computes the quantity in
a different type (int32_t vs unsigned long).

Keep the computation type that's been working so far....

25cc4a76 11/19/2011 01:17 pm Blue Swirl

Merge branch 's390-1.0' of git://repo.or.cz/qemu/agraf

  • 's390-1.0' of git://repo.or.cz/qemu/agraf:
    s390x: initialize virtio dev region
    tcg: Use TCGReg for standard tcg-target entry points.
    tcg: Standardize on TCGReg as the enum for hard registers
    s390x: Add shutdown for TCG s390-virtio machine...
2a534aff 11/14/2011 06:47 pm Richard Henderson

tcg: Use TCGReg for standard tcg-target entry points.

Including tcg_out_ld, tcg_out_st, tcg_out_mov, tcg_out_movi.

Signed-off-by: Richard Henderson <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Stefan Weil <>...

771142c2 11/14/2011 06:47 pm Richard Henderson

tcg: Standardize on TCGReg as the enum for hard registers

Most targets did not name the enum; tci used TCGRegister.

Signed-off-by: Richard Henderson <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Stefan Weil <>...

9df3b45d 11/11/2011 06:33 pm David Gibson

tcg-ppc64: Fix compile errors for userspace only builds with gcc 4.6

tcg/ppc64/tcg-target.c has a couple of places where variables are set
unconditionally, but otherwise used only for softmmu builds, not
userspace only builds. This causes compiler warnings (which are fatal...

c51d9cb5 11/02/2011 10:52 pm Blue Swirl

Merge branch 'tci' of git://qemu.weilnetz.de/qemu

  • 'tci' of git://qemu.weilnetz.de/qemu:
    tcg: Add tcg interpreter to configure / make
    tcg: Add tci disassembler
    tcg: Add interpreter for bytecode
    tcg: Add bytecode generator for tcg interpreter
    tcg: Make ARRAY_SIZE(tcg_op_defs) globally available...
0756e71c 11/02/2011 12:12 am Richard Henderson

tcg: Fix whitespace in tcg-op.h.

Removing the only tabs in the file.

Signed-off-by: Richard Henderson <>
Signed-off-by: malc <>

2f98c9db 11/02/2011 12:12 am Richard Henderson

tcg: Fix regression in tcg_gen_deposit_i64.

The error being caused by the failure to copy the other half of
the input to the output after having narrowed the deposit operation.

Signed-off-by: Richard Henderson <>
Signed-off-by: malc <>

2a24374a 10/31/2011 10:52 pm Stefan Weil

tcg: Make ARRAY_SIZE(tcg_op_defs) globally available

tcg_op_defs was already a global array.

The tci disassembler also needs ARRAY_SIZE(tcg_op_defs),
so add a new global constant with this value.

Signed-off-by: Stefan Weil <>

7316329a 10/31/2011 10:52 pm Stefan Weil

tcg: Add bytecode generator for tcg interpreter

Unlike other tcg target code generators, this one does not generate
machine code for some cpu. It generates machine independent bytecode
which is interpreted later.

This allows running QEMU on any host.

Interpreted bytecode is slower than direct execution of generated...