Statistics
| Branch: | Revision:

root / target-sparc @ 5b50e790

# Date Author Comment
986a2998 07/27/2013 01:04 am Andreas Färber

gdbstub: Replace GET_REG*() macros with gdb_get_reg*() functions

This avoids polluting the global namespace with a non-prefixed macro and
makes it obvious in the call sites that we return.

Semi-automatic conversion using, e.g.,
sed i 's/GET_REGL(/return gdb_get_regl(mem_buf, /g' target*/gdbstub.c...

5b50e790 07/27/2013 01:04 am Andreas Färber

cpu: Introduce CPUClass::gdb_{read,write}_register()

Completes migration of target-specific code to new target-*/gdbstub.c.

Acked-by: Michael Walle <> (for lm32)
Acked-by: Max Filippov <> (for xtensa)
Signed-off-by: Andreas Färber <>

d19c87f4 07/27/2013 12:24 am Andreas Färber

target-sparc: Move cpu_gdb_{read,write}_register()

Signed-off-by: Andreas Färber <>

a0e372f0 07/27/2013 12:23 am Andreas Färber

cpu: Introduce CPUState::gdb_num_regs and CPUClass::gdb_num_core_regs

CPUState::gdb_num_regs replaces num_g_regs.
CPUClass::gdb_num_core_regs replaces NUM_CORE_REGS.

Allows building gdb_register_coprocessor() for xtensa, too.

As a side effect this should fix coprocessor register numbering for SMP....

00b941e5 07/23/2013 03:41 am Andreas Färber

cpu: Turn cpu_get_phys_page_debug() into a CPUClass hook

Change breakpoint_invalidate() argument to CPUState alongside.

Since all targets now assign a softmmu-only field, we can drop helpers
cpu_class_set_{do_unassigned_access,vmsd}() and device_class_set_vmsd()....

f17ec444 07/23/2013 03:41 am Andreas Färber

exec: Change cpu_memory_rw_debug() argument to CPUState

Propagate X86CPU in kvmvapic for simplicity.

Signed-off-by: Andreas Färber <>

f3659eee 07/23/2013 03:41 am Andreas Färber

cpu: Introduce CPUClass::memory_rw_debug() for target_memory_rw_debug()

Make inline target_memory_rw_debug() always available and change its
argument to CPUState. Let it check if CPUClass::memory_rw_debug provides
a specialized callback and fall back to cpu_memory_rw_debug() otherwise....

bdf7ae5b 07/23/2013 03:41 am Andreas Färber

cpu: Introduce CPUClass::synchronize_from_tb() for cpu_pc_from_tb()

Where no extra implementation is needed, fall back to CPUClass::set_pc().

Acked-by: Michael Walle <> (for lm32)
Signed-off-by: Andreas Färber <>

ed2803da 07/23/2013 03:41 am Andreas Färber

cpu: Move singlestep_enabled field from CPU_COMMON to CPUState

Prepares for changing cpu_single_step() argument to CPUState.

Acked-by: Michael Walle <> (for lm32)
Signed-off-by: Andreas Färber <>

f45748f1 07/23/2013 03:41 am Andreas Färber

cpu: Introduce CPUClass::set_pc() for gdb_set_cpu_pc()

This moves setting the Program Counter from gdbstub into target code.
Use vaddr type as upper-bound replacement for target_ulong.

Signed-off-by: Andreas Färber <>

68a47155 07/09/2013 10:33 pm Andreas Färber

target-sparc: Change gen_intermediate_code_internal() argument to SPARCCPU

Also use bool type while at it.

Prepares for moving singlestep_enabled field to CPUState.

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

a0762859 07/09/2013 10:33 pm Andreas Färber

log: Change log_cpu_state[_mask]() argument to CPUState

Since commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5 (cpu: Turn
cpu_dump_{state,statistics}() into CPUState hooks) CPUArchState is no
longer needed.

Add documentation and make the functions available through qemu/log.h...

91b1df8c 07/09/2013 10:33 pm Andreas Färber

cpu: Move reset logging to CPUState

x86 was using additional CPU_DUMP_* flags, so make that configurable in
CPUClass::reset_dump_flags.

This adds reset logging for alpha, unicore32 and xtensa.

Acked-by: Michael Walle <> (for lm32)
Reviewed-by: Richard Henderson <>...

6291ad77 07/09/2013 10:20 pm Peter Maydell

linux-user: Move cpu_clone_regs() and cpu_set_tls() into linux-user

The functions cpu_clone_regs() and cpu_set_tls() are not purely CPU
related -- they are specific to the TLS ABI for a a particular OS.
Move them into the linux-user/ tree where they belong....

6e42be7c 07/09/2013 10:20 pm Andreas Färber

cpu: Drop unnecessary dynamic casts in *_env_get_cpu()

A transition from CPUFooState to FooCPU can be considered safe,
just like FooCPU::env access in the opposite direction.
The only benefit of the FOO_CPU() casts would be protection against
bogus CPUFooState pointers, but then surrounding code would likely...

dfde4e6e 07/04/2013 06:42 pm Paolo Bonzini

memory: add ref/unref calls

Add ref/unref calls at the following places:

- places where memory regions are stashed by a listener and
used outside the BQL (including in Xen or KVM).

- memory_region_find callsites

- creation of aliases and containers (only the aliased/contained...

c643bed9 06/28/2013 02:25 pm Andreas Färber

cpu: Change qemu_init_vcpu() argument to CPUState

This allows to move the call into CPUState's realizefn.
Therefore move the stub into libqemustub.a.

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

c658b94f 06/28/2013 02:25 pm Andreas Färber

cpu: Turn cpu_unassigned_access() into a CPUState hook

Use it for all targets, but be careful not to pass invalid CPUState.
cpu_single_env can be NULL, e.g. on Xen.

Signed-off-by: Andreas Färber <>

878096ee 06/28/2013 02:25 pm Andreas Färber

cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks

Make cpustats monitor command available unconditionally.

Prepares for changing kvm_handle_internal_error() and kvm_cpu_exec()
arguments to CPUState.

Signed-off-by: Andreas Färber <>

052e87b0 06/20/2013 05:32 pm Paolo Bonzini

memory: make section size a 128-bit integer

So far, the size of all regions passed to listeners could fit in 64 bits,
because artificial regions (containers and aliases) are eliminated by
the memory core, leaving only device regions which have reasonable sizes...

1e2a1d41 06/11/2013 10:45 pm Stefan Weil

target-sparc: Replace free by g_free

The wrong function was reported by cppcheck.

Signed-off-by: Stefan Weil <>
Reviewed-by: Andreas Färber <>
Signed-off-by: Michael Tokarev <>

6a4e1771 05/26/2013 02:37 pm Blue Swirl

Remove Sun4c, Sun4d and a few CPUs

Sun4c and Sun4d architectures and related CPUs are not fully implemented
(especially Sun4c MMU) and there has been no interest for them.

Likewise, a few CPUs (Cypress, Ross etc) are only half implemented.

Remove the machines and CPUs, they can be re-added if needed later....

259186a7 03/12/2013 11:35 am Andreas Färber

cpu: Move halted and interrupt_request fields to CPUState

Both fields are used in VMState, thus need to be moved together.
Explicitly zero them on reset since they were located before
breakpoints.

Pass PowerPCCPU to kvmppc_handle_halt().

Signed-off-by: Andreas Färber <>

97a8ea5a 03/12/2013 11:35 am Andreas Färber

cpu: Replace do_interrupt() by CPUClass::do_interrupt method

This removes a global per-target function and thus takes us one step
closer to compiling multiple targets into one executable.

It will also allow to override the interrupt handling for certain CPU...

806f352d 03/03/2013 04:29 pm Peter Maydell

gen-icount.h: Rename gen_icount_start/end to gen_tb_start/end

The gen_icount_start/end functions are now somewhat misnamed since they
are useful for generic "start/end of TB" code, used for more than just
icount. Rename them to gen_tb_start/end.

Signed-off-by: Peter Maydell <>...

fadf9825 03/03/2013 04:28 pm Andreas Färber

cpu: Introduce ENV_OFFSET macros

Introduce ENV_OFFSET macros which can be used in non-target-specific
code that needs to generate TCG instructions which reference CPUState
fields given the cpu_env register that TCG targets set up with a
pointer to the CPUArchState struct....

15fe216f 02/23/2013 07:25 pm Richard Henderson

target-sparc: Use official add2/sub2 interfaces for addx/subx

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

528692a8 02/23/2013 07:25 pm Richard Henderson

target-sparc: Use mul*2 for multiply

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

d1c36ba7 02/23/2013 12:00 pm Ronald Hecht

SPARC LEON power-down support added

Signed-off-by: Ronald Hecht <address@hidden>
Signed-off-by: Fabien Chouteau <>
Signed-off-by: Blue Swirl <>

7a0a9c2c 02/23/2013 12:00 pm Ronald Hecht

Added LEON MMU ASI mappings and corrected LEON3 MMU masks.

This patch adds SPARC ASI mappings that are used by the LEON processor.It also
corrects the MMU context register and context table pointer mask of the LEON3.

Signed-off-by: Ronald Hecht <>...

3c3adde0 02/18/2013 04:37 pm Anthony Liguori

Merge remote-tracking branch 'afaerber/qom-cpu' into staging

  1. By Andreas Färber
  2. Via Andreas Färber
    • afaerber/qom-cpu: (47 commits)
      target-i386: Split command line parsing out of cpu_x86_register()
      target-i386: Move cpu_x86_init()
      target-lm32: Drop unused cpu_lm32_close() prototype...
05499f4b 02/16/2013 07:00 pm Andreas Färber

target-sparc: Fix debug output for DEBUG_MMU

Signed-off-by: Andreas Färber <>
Acked-by: Edgar E. Iglesias <>
Signed-off-by: Blue Swirl <>

c05efcb1 02/16/2013 03:51 pm Andreas Färber

cpu: Add CPUArchState pointer to CPUState

The target-specific ENV_GET_CPU() macros have allowed us to navigate
from CPUArchState to CPUState. The reverse direction was not supported.
Avoid introducing CPU_GET_ENV() macros by initializing an untyped
pointer that is initialized in derived instance_init functions....

5266d20a 02/16/2013 03:50 pm Andreas Färber

target-sparc: Move TCG initialization to SPARCCPU initfn

Signed-off-by: Andreas Färber <>

b6e91ebf 02/16/2013 03:50 pm Andreas Färber

target-sparc: Introduce QOM realizefn for SPARCCPU

Introduce realizefn and set realized = true in cpu_sparc_init().

Signed-off-by: Andreas Färber <>

5c099537 02/01/2013 11:53 pm Paolo Bonzini

cpu: do not use object_delete

CPUs are never added to the composition tree, so delete is achieved
simply by removing the last references to them.

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Anthony Liguori <>

55e5c285 01/15/2013 05:09 am Andreas Färber

cpu: Move cpu_index field to CPUState

Note that target-alpha accesses this field from TCG, now using a
negative offset. Therefore the field is placed last in CPUState.

Pass PowerPCCPU to [kvm]ppc_fixup_cpu() to facilitate this change.

Move common parts of mips cpu_state_reset() to mips_cpu_reset()....

6b4c305c 12/19/2012 09:32 am Paolo Bonzini

fpu: move public header file to include/fpu

Signed-off-by: Paolo Bonzini <>

9c17d615 12/19/2012 09:32 am Paolo Bonzini

softmmu: move include files to include/sysemu/

Signed-off-by: Paolo Bonzini <>

1de7afc9 12/19/2012 09:32 am Paolo Bonzini

misc: move include files to include/qemu/

Signed-off-by: Paolo Bonzini <>

14cccb61 12/19/2012 09:31 am Paolo Bonzini

qom: move include files to include/qom/

Signed-off-by: Paolo Bonzini <>

022c62cb 12/19/2012 09:31 am Paolo Bonzini

exec: move include files to include/exec/

Signed-off-by: Paolo Bonzini <>

76cad711 12/19/2012 09:29 am Paolo Bonzini

build: kill libdis, move disassemblers to disas/

Signed-off-by: Paolo Bonzini <>

a8a826a3 12/16/2012 10:35 am Blue Swirl

exec: refactor cpu_restore_state

Refactor common code around calls to cpu_restore_state().

tb_find_pc() has now no external users, make it static.

Signed-off-by: Blue Swirl <>

7c12fd9b 12/10/2012 04:34 pm Anthony Liguori

Merge remote-tracking branch 'stefanha/trivial-patches' into staging

  • stefanha/trivial-patches:
    pc_sysfw: Plug memory leak on pc_fw_add_pflash_drv() error path
    qemu-options: Fix space at EOL
    Fix spelling in comments and documentation
    Clean up pci_drive_hot_add()'s use of BlockInterfaceType...
ab1103de 12/08/2012 04:24 pm Evgeny Voevodin

TCG: Use gen_opc_instr_start from context instead of global variable.

Signed-off-by: Evgeny Voevodin <>
Signed-off-by: Blue Swirl <>

25983cad 12/08/2012 04:24 pm Evgeny Voevodin

TCG: Use gen_opc_pc from context instead of global variable.

Signed-off-by: Evgeny Voevodin <>
Signed-off-by: Blue Swirl <>

c9c99c22 12/08/2012 04:24 pm Evgeny Voevodin

TCG: Use gen_opc_icount from context instead of global variable.

Signed-off-by: Evgeny Voevodin <>
Signed-off-by: Blue Swirl <>

dee17bf9 12/07/2012 01:34 pm Richard Henderson

target-sparc: Remove t0, t1 from CPUSPARCState

These fields are no longer used.

Cc: Blue Swirl <>
Signed-off-by: Richard Henderson <>
Signed-off-by: Stefan Hajnoczi <>

92414b31 11/17/2012 03:53 pm Evgeny Voevodin

TCG: Use gen_opc_buf from context instead of global variable.

Signed-off-by: Evgeny Voevodin <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

efd7f486 11/17/2012 03:53 pm Evgeny Voevodin

TCG: Use gen_opc_ptr from context instead of global variable.

Signed-off-by: Evgeny Voevodin <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

f4359b9f 11/10/2012 03:49 pm Blue Swirl

disas: avoid using cpu_single_env

Pass around CPUArchState instead of using global cpu_single_env.

Signed-off-by: Blue Swirl <>
Acked-by: Richard Henderson <>
Acked-by: Aurelien Jarno <>
Acked-by: Guan Xuetao <>

ef84755e 11/03/2012 02:55 pm Blue Swirl

Merge branch 'trivial-patches' of git://github.com/stefanha/qemu

  • 'trivial-patches' of git://github.com/stefanha/qemu:
    pc: Drop redundant test for ROM memory region
    exec: make some functions static
    target-ppc: make some functions static
    ppc: add missing static...
8f721967 11/01/2012 08:49 pm Blue Swirl

target-sparc: make do_unaligned_access static

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

3993c6bd 10/31/2012 05:11 am Andreas Färber

cpus: Pass CPUState to [qemu_]cpu_has_work()

For target-mips also change the return type to bool.

Make include paths for cpu-qom.h consistent for alpha and unicore32.

Signed-off-by: Andreas Färber <>
[AF: Updated new target-openrisc function accordingly]...

e7d51b34 10/30/2012 08:52 pm Richard Henderson

target-sparc: Revert setting cpu_dst to gen_dest_gpr

There is some read-after-write error within the OP=2 insns which
prevents setting cpu_dst to the real output register. Until this
is found and fixed, always write to a temporary first.

Cc: Blue Swirl <>...

c33b2353 10/28/2012 03:54 pm Aurelien Jarno

target-sparc: rename helper flags

Rename helper flags to the new ones. This is purely a mechanical change,
it's possible to use better flags by looking at the helpers.

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

a8170e5e 10/23/2012 04:58 pm Avi Kivity

Rename target_phys_addr_t to hwaddr

target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
reserved) and its purpose doesn't match the name (most target_phys_addr_t
addresses are not target specific). Replace it with a finger-friendly,...

e7c8afb9 10/20/2012 12:02 pm Aurelien Jarno

target-sparc: fix FMOVr instruction

Like the MOVr instruction, the FMOVr instruction has the condition
encoded between bits 10 and 12.

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

f8641947 10/20/2012 10:56 am Richard Henderson

target-sparc: Tidy ldfsr, stfsr

Remove the last uses of cpu_tmp32. Unify the code between sparc64
and sparc32 by using the proper "tl" functions.

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

1ec789ab 10/20/2012 10:56 am Richard Henderson

target-sparc: Remove usage of cpu_tmp64 from most helper functions

Use a locally allocated temporary instead.

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

3886b8a3 10/20/2012 10:56 am Richard Henderson

target-sparc: Don't use a temporary for gen_dest_fpr_D

In all cases we don't have write-before-read problems.

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

aeff993c 10/20/2012 10:56 am Richard Henderson

target-sparc: Remove cpu_tmp64 use from softint insns

The use of "tl" functions and a tmp64 is logically incompatible.
Use cpu_tmp0 instead.

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

abcc7191 10/20/2012 10:56 am Richard Henderson

target-sparc: Remove last uses of cpu_tmp64

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

7b04bd5c 10/20/2012 10:56 am Richard Henderson

target-sparc: Only use cpu_dst for eventual writes to a gpr

Use cpu_tmp0 for other stuff, like Write Priv Register.

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

5793f2a4 10/20/2012 10:56 am Richard Henderson

target-sparc: Make cpu_dst local to OP=2 insns

And initialize it such that it (may) write directly to rd.

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

de9e9d9f 10/20/2012 10:56 am Richard Henderson

target-sparc: Remove cpu_tmp0 as a global

Subroutines do their own local temporary management.
Within disas_sparc_insn we limit the existance of the variable
to OP=2 insns, and delay initialization as late as is reasonable
for the specific XOP.

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

97ea2859 10/20/2012 10:56 am Richard Henderson

target-sparc: Conversion to gen_*_gpr, part 1

Only handle the easy cases directly within disas_sparc_insn.

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

9d1d4e34 10/20/2012 10:56 am Richard Henderson

target-sparc: Use gen_load_gpr in get_src12

This means we can avoid the incoming temporary, though the cleanup
of the existing temporaries is not performed in this patch.

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

c7785e16 10/20/2012 10:56 am Richard Henderson

target-sparc: Convert asi helpers to gen_*_gpr

Push the DisasContext down so that we can use gen_load/store_gpr
in sode gen_ldda_asi, gen_stda_ast, gen_cas_asi, gen_casx_asi.

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

06828032 10/20/2012 10:56 am Richard Henderson

target-sparc: Convert swap to gen_load/store_gpr

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

81634eea 10/20/2012 10:56 am Richard Henderson

target-sparc: Finish conversion to gen_load_gpr

All users of gen_movl_{reg_TN,TN_reg} are removed. At the same time,
make cpu_val a local variable for load/store disassembly.

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

a4273524 10/20/2012 10:56 am Richard Henderson

target-sparc: Cleanup cpu_src12 allocation

Now that get_temp_tl is used for get_src12, we don't need to
pre-allocate these temporaries.

Fallout from this is moving some assignments around cas/casx to
avoid uninitialized variable warnings.

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

5e6ed439 10/20/2012 10:56 am Richard Henderson

target-sparc: Make the cpu_addr variable local to load/store handling

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

2ae23e17 10/20/2012 10:56 am Richard Henderson

target-sparc: Split out get_temp_i32

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

ba5f5179 10/20/2012 10:56 am Richard Henderson

target-sparc: Use get_temp_i32 in gen_dest_fpr_F

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

45778f99 10/20/2012 10:56 am Richard Henderson

target-sparc: Avoid cpu_tmp32 in Read Priv Register

We don't need another temporary here. Load directly into the
register we want to set.

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

7b9e066b 10/20/2012 10:56 am Richard Henderson

target-sparc: Avoid cpu_tmp32 in Write Priv Register

No need to copy to a temporary to store 32 bits.

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

88023616 10/20/2012 10:56 am Richard Henderson

target-sparc: Add gen_load/store/dest_gpr

Infrastructure to be used to clean up handling of temporaries.

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

0fa2a066 10/13/2012 01:17 pm Richard Henderson

target-sparc: Fix optimized %icc comparisons

Signed-off-by: Richard Henderson <>
Tested-by: Aurelien Jarno <>
Signed-off-by: Blue Swirl <>

96b5a3d3 10/13/2012 01:17 pm Richard Henderson

target-sparc: Optimize CC_OP_LOGIC conditions

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

6234ac09 10/13/2012 01:17 pm Richard Henderson

target-sparc: Avoid unnecessary local temporaries

Now that save_state never ends a BB, we don't need to copy
values into local temps around it.

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

20132b96 10/13/2012 01:17 pm Richard Henderson

target-sparc: Don't compute full flags value so often

Avoid speculatively computing flags before every potentially trapping
operation and instead do the flags computation when a trap actually
occurs. This gives approximately 30% speedup in emulation.

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

690995a6 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use movcond for FMOV*R

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

b09b2fd3 10/07/2012 07:39 pm Richard Henderson

target-sparc: Cleanup "global" temporary allocation

There are 6 temporaries that disas_sparc_insn relies on having been
allocated. Now that they are no longer referenced across branches,
they need not be allocated as local temps.

Move the allocation/free of these temporaries to make it clear that...

fe1755cb 10/07/2012 07:39 pm Richard Henderson

target-sparc: Fall through from not-taken trap

Now that we've cleaned up global temporary allocation, we can
continue translating the fallthru path of a conditional trap.

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

2a484ecf 10/07/2012 07:39 pm Richard Henderson

target-sparc: Optimize conditionals using SUBCC

Aka "normal" comparisons. We now have the infrastructure to
pass back non-boolean results from gen_compare. This will
automatically get used by both branches and conditional moves.

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

c28ae41e 10/07/2012 07:39 pm Richard Henderson

target-sparc: Move sdivx and udivx out of line

The branches around the exception are maintaining an otherwise
unnecessary use of local temps for the cpu destination.

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

bd49ed41 10/07/2012 07:39 pm Richard Henderson

target-sparc: Tidy Tcc

Share more code between unconditional and conditional paths.

Move the computation of the trap number into the conditional BB;
avoid using temporaries that have gone out of scope (cpu_tmp32)
or rely on local temps (cpu_dst).

Fully fold the exception number when the trap number is %g0+imm....

a2ea4aa9 10/07/2012 07:39 pm Richard Henderson

target-sparc: Move taddcctv and tsubcctv out of line

The branches around the exception are maintaining an otherwise
unnecessary use of local temps for the cpu destination.

Note that gen_op_t{add,sub}_cc were identical to gen_op_{add,sub}_cc.

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

6cb675b0 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use movcond in mulscc

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

7e480893 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use DisasCompare and movcond in FMOVR, FMOVCC

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

f52879b4 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use DisasCompare and movcond in MOVCC

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

c33f80f5 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use DisasCompare and movcond in MOVR

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

61316742 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use movcond in gen_generic_branch

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

934da7ee 10/07/2012 07:39 pm Richard Henderson

target-sparc: Tidy save_npc interface

Use the cpu_cond global register directly instead of passing it down.

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

2e655fe7 10/07/2012 07:39 pm Richard Henderson

target-sparc: Tidy gen_generic_branch interface

The arguments passed are always the same.
Pass down just DisasContext instead.

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

416fcaea 10/07/2012 07:39 pm Richard Henderson

target-sparc: Introduce DisasCompare and functions to generate it

For the moment gen_cond et al retain their existing interface,
using setcond to turn a (potential) comparison back into a boolean.

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

3a49e759 10/07/2012 07:39 pm Richard Henderson

target-sparc: Use DisasCompare in Tcc

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

13a6dd00 10/07/2012 07:39 pm Richard Henderson

target-sparc: Tidy gen_mov_pc_npc interface

Use the cpu_cond global register directly instead of passing it down.

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