| Branch: | Revision:

root / cpu-exec.c @ feature-archipelago

History | View | Annotate | Download (29.4 kB)

# Date Author Comment
4cc35614 02/26/2014 07:20 pm Peter Maydell

target-arm: Store AIF bits in env->pstate for AArch32

To avoid complication in code that otherwise would not need to
care about whether EL1 is AArch32 or AArch64, we should store
the interrupt mask bits (CPSR.AIF in AArch32 and PSTATE.DAIF
in AArch64) in one place consistently regardless of EL1's mode....

fdfba1a2 02/11/2014 02:56 pm Edgar E. Iglesias

exec: Make ldl_*_phys input an AddressSpace

Reviewed-by: Peter Maydell <>
Signed-off-by: Edgar E. Iglesias <>

4cddc7f4 01/10/2014 09:04 pm Anthony Liguori

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

QOM CPUState refactorings / X86CPU

  • TLB invalidation optimizations
  • X86CPU initialization cleanups
  • Preparations for X86CPU hot-unplug
  1. gpg: Signature made Tue 24 Dec 2013 04:51:52 AM PST using RSA key ID 3E7E013F...
03afa5f8 01/07/2014 09:05 pm Richard Henderson

exec: Delay CPU_LOG_TB_CPU until we actually execute a TB

The previous placement could result in duplicate logging while
still processing interrupts.

Reviewed-by: Peter Maydell <>
Signed-off-by: Richard Henderson <>

693fa551 12/24/2013 01:29 pm Andreas Färber

cpu-exec: Optimize X86CPU usage in cpu_exec()

Replace growing numbers of inline x86_env_get_cpu() with x86_cpu variable.

Reviewed-by: Chen Fan <>
Signed-off-by: Andreas Färber <>

02e51483 12/23/2013 05:30 pm Chen Fan

target-i386: Move apic_state field from CPUX86State to X86CPU

This motion is preparing for refactoring vCPU APIC subsequently.

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

6c78f29a 10/07/2013 12:46 pm Juergen Lock

cpu-exec: Also reload CPUClass *cc after longjmp return in cpu_exec()

Local variable CPUClass *cc needs to be reloaded after return from longjmp,
too. (This fixes a mips-softmmu crash observed on FreeBSD when QEMU is
built with clang.)

Reported-by: Dimitry Andric <>...

04d5a1da 09/02/2013 07:08 pm Richard Henderson

tcg: Change tcg_qemu_tb_exec return to uintptr_t

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

3e9bd63a 09/02/2013 07:08 pm Richard Henderson

tcg: Fix next_tb type in cpu_exec

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

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 <>

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

target-i386: Change do_smm_enter() argument to X86CPU

Prepares for log_cpu_state_mask() changing argument to CPUState.

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...

4917cf44 07/09/2013 10:20 pm Andreas Färber

cpu: Replace cpu_single_env with CPUState current_cpu

Move it to qom/cpu.h.

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

80cf2c81 06/15/2013 08:50 pm liguang

target-i386/helper: remove DF macro

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

75312e74 04/13/2013 03:31 pm Aurelien Jarno

Merge branch 'mingw' of git://

  • 'mingw' of git://
    qemu-timer: move timeBeginPeriod/timeEndPeriod to os-win32
    Release SMP restriction on Windows
    Ensure good ordering of memory instruction in cpu_exec
    Check effective suspension of TCG thread
ec9bd89f 04/12/2013 07:27 pm Olivier Hainque

Ensure good ordering of memory instruction in cpu_exec

The IO thread, when it senses cpu_single_env == 0, expects exit_request
to be checked later on. A compiler scheduling constraint is not strong
enough to ensure this on modern architecture. A memory fence is needed...

c30d1aea 04/12/2013 03:33 pm Peter Maydell

cpu-exec: Allow "-d exec" in non-debug builds (drop CONFIG_DEBUG_EXEC)

The CONFIG_DEBUG_EXEC define compiles out a single qemu_log_mask()
call, which is a pretty trivial cost even for something in the main
cpu_exec() loop. Having this be conditionally defined means that...

4980ef9e 03/23/2013 04:30 pm Richard Henderson

target-i386: Don't modify env->eflags around cpu_dump_state

We can compute the value in cpu_dump_state anyway, and gratuitous
modifications to eflags creates heisenbugs.

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

d15a9c23 03/23/2013 04:25 pm Anthony Green

Add top level changes for moxie

Signed-off-by: Anthony Green <>
Signed-off-by: Blue Swirl <>

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

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...

378df4b2 03/03/2013 04:28 pm Peter Maydell

Handle CPU interrupts by inline checking of a flag

Fix some of the nasty TCG race conditions and crashes by implementing
cpu_exit() as setting a flag which is checked at the start of each TB.
This avoids crashes if a thread or signal handler calls cpu_exit()...

77211379 03/03/2013 04:28 pm Peter Maydell

cpu-exec: wrap tcg_qemu_tb_exec() in a fn to restore the PC

If tcg_qemu_tb_exec() returns a value whose low bits don't indicate a
link to an indexed next TB, this means that the TB execution never
started (eg because the instruction counter hit zero). In this case the...

0980011b 03/03/2013 04:28 pm Peter Maydell

tcg: Document tcg_qemu_tb_exec() and provide constants for low bit uses

Document tcg_qemu_tb_exec(). In particular, its return value is a
combination of a pointer to the next translation block and some
extra information in the low two bits. Provide some #defines for...

6ab7e546 02/23/2013 06:11 pm Peter Maydell

Replace all setjmp()/longjmp() with sigsetjmp()/siglongjmp()

The setjmp() function doesn't specify whether signal masks are saved and
restored; on Linux they are not, but on BSD (including MacOSX) they are.
We want to have consistent behaviour across platforms, so we should...

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

cpu: Move exit_request field to CPUState

Since it was located before breakpoints field, it needs to be reset.

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

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

cpu: Move current_tb field to CPUState

Explictly NULL it on CPU reset since it was located before breakpoints.

Change vapic_report_tpr_access() argument to CPUState. This also
resolves the use of void* for cpu.h independence.
Change vAPIC patch_instruction() argument to X86CPU....

5e5f07e0 02/16/2013 12:41 pm Evgeny Voevodin

TCG: Move translation block variables to new context inside tcg_ctx: tb_ctx

It's worth to clean-up translation blocks variables and move them
into one context as was suggested by Swirl.
Also if we use this context directly inside tcg_ctx, then it
speeds up code generation a bit....

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 <>

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

build: kill libdis, move disassemblers to disas/

Signed-off-by: Paolo Bonzini <>

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]...

6fd2a026 10/05/2012 05:04 pm Peter Maydell

cpu_dump_state: move DUMP_FPU and DUMP_CCOP flags from x86-only to generic

Move the DUMP_FPU and DUMP_CCOP flags for cpu_dump_state() from being
x86-specific flags to being generic ones. This allows us to drop some
TARGET_I386 ifdefs in various places, and means that we can (potentially)...

4f213879 08/27/2012 05:33 pm malc

Revert "i8259: add -no-spurious-interrupt-hack option"

This reverts commit f278d4947fff814dcde2ef2acad36d172ff8be35.

Signed-off-by: malc <>

f278d494 08/24/2012 06:44 am Matthew Ogilvie

i8259: add -no-spurious-interrupt-hack option

This patch provides a way to optionally suppress spurious interrupts,
as a workaround for systems described below:

Some old operating systems do not handle spurious interrupts well,
and qemu tends to generate them significantly more often than...

d48813dd 08/11/2012 12:36 pm Guan Xuetao

unicore32-softmmu: Make UniCore32 cpuid & exceptions correct and runable

This patch initializes the cpuid to exactly correct value because
linux kernel will check it.
In addition, the exception types are specified in proper situations.
Then it could make exceptions generated correctly and timely....

d3da41e3 08/09/2012 09:44 pm Blue Swirl

Merge branch 'x86cpu_qom_tcg_v2' of git://

  • 'x86cpu_qom_tcg_v2' of git://
    target-i386: move tcg initialization into x86_cpu_initfn()
    cleanup cpu_set_debug_excp_handler
    target-xtensa: drop usage of prev_debug_excp_handler...
b6a71ef7 07/28/2012 12:12 am Jia Liu

target-or32: Add interrupt support

Add OpenRISC interrupt support.

Signed-off-by: Jia Liu <>
Signed-off-by: Blue Swirl <>

e67db06e 07/28/2012 12:12 am Jia Liu

target-or32: Add target stubs and QOM cpu

Add OpenRISC target stubs, QOM cpu and basic machine.

Signed-off-by: Jia Liu <>
Signed-off-by: Blue Swirl <>

5d62c43a 07/10/2012 11:31 am Jan Kiszka

apic: Defer interrupt updates to VCPU thread

KVM performs TPR raising asynchronously to QEMU, specifically outside
QEMU's global lock. When an interrupt is injected into the APIC and TPR
is checked to decide if this can be delivered, a stale TPR value may be...

77b2bc2c 06/28/2012 11:28 pm Blue Swirl

x86: avoid AREG0 for exceptions

Add an explicit CPUX86State parameter instead of relying on AREG0.

Merge raise_exception_env() to raise_exception(), likewise with
raise_exception_err_env() and raise_exception_err().

Introduce cpu_svm_check_intercept_param() and cpu_vmexit()...

84e3b602 06/25/2012 04:37 pm Igor Mammedov

cleanup cpu_set_debug_excp_handler

There are no users left for previous exception handler returned from
cpu_set_debug_excp_handler. It should simplify code a little.

Signed-off-by: Igor Mammedov <>

8219314b 06/15/2012 02:21 pm Lars Persson

cris: Fix NMI-flag handling on crisv10.

- The M-flag is encoded in different bits on cris v10 and cris v32.

Signed-off-by: Lars Persson <>
Signed-off-by: Edgar E. Iglesias <>

c356a1bc 06/05/2012 12:00 am Andreas Färber

cpu-exec: Use cpu_reset() in cpu_exec() for TARGET_PPC

CPUState will be needed for all targets in the future, so place it into
the main variable declaration block.

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

232fc23b 06/05/2012 12:00 am Andreas Färber

target-i386: Pass X86CPU to do_cpu_{init,sipi}()

Allows to use cpu_reset() in place of cpu_state_reset().

Signed-off-by: Andreas Färber <>
Reviewed-by: Igor Mammedov <>

3ba19255 04/15/2012 10:25 pm Stefan Weil

cpu-exec: Remove non-portable type cast and fix format string

This change is needed for w64, but also changes the code for other hosts.

Signed-off-by: Stefan Weil <>

c7f0f3b1 03/30/2012 04:14 pm Anthony Liguori

qtest: add test framework

The idea behind qtest is pretty simple. Instead of executing a CPU via TCG or
KVM, rely on an external process to send events to the device model that the CPU
would normally generate.

qtest presents itself as an accelerator. In addition, a new option is added to...

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...

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

fc0b2c0f 03/14/2012 11:20 pm Alexander Graf

PPC: 405: Use proper CPU reset

On ppc405ep there is a register that allows for software to reset the
core, but not the whole system. Implement this reset using a reset

This gets rid of a bunch of #if 0'ed code.

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

1bba0dc9 03/14/2012 11:20 pm Andreas Färber

Rename cpu_reset() to cpu_state_reset()

Frees the identifier cpu_reset for QOM CPUs (manual rename).

Don't hide the parameter type behind explicit casts, use static
functions with strongly typed argument to indirect.

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

e965fc38 02/10/2012 12:44 pm 陳韋任

cpu-exec.c: Correct comment about this file and indentation cleanup

Each target uses the #define macro (in target-xxx/cpu.h) to rename
cpu_exec (cpu-exec.c) to cpu_xxx_exec, then defines its own cpu_loop
which calls cpu_xxx_exec. So basically, cpu-exec.c is not only the i386...

4e85f82c 10/06/2011 10:48 am Elie Richa

PPC: Fix sync instructions problem in SMP

In the current emulation of the load-and-reserve (lwarx) and
store-conditional (stwcx.) instructions, the internal reservation
mechanism is taken into account, however each CPU has its own
reservation information and this information is not synchronized between...

40643d7c 09/10/2011 07:57 pm Max Filippov

target-xtensa: implement exceptions

- mark privileged opcodes with ring check;
- make debug exception on exception handler entry.

Signed-off-by: Max Filippov <>
Signed-off-by: Blue Swirl <>

2328826b 09/10/2011 07:57 pm Max Filippov

target-xtensa: add target stubs

Signed-off-by: Max Filippov <>
Signed-off-by: Blue Swirl <>

337fc758 09/10/2011 05:50 pm Blue Swirl

cpu-exec: remove unnecessary assignment

Avoid this warning from clang analyzer:
/src/qemu/cpu-exec.c:97:5: warning: Value stored to 'phys_page2' is never read
phys_page2 = -1;

Adjust the scope of the variable while at it.

Signed-off-by: Blue Swirl <>

0d101938 07/12/2011 11:53 pm Jan Kiszka

tcg: Reload local variables after return from longjmp

Recent compilers look deep into cpu_exec, find longjmp as a noreturn
function and decide to smash some stack variables as they won't be used
again. This may lead to env becoming invalid after return from setjmp,...

cea5f9a2 06/26/2011 09:25 pm Blue Swirl

cpu-exec.c: avoid AREG0 use

Make functions take a parameter for CPUState instead of relying
on global env. Pass CPUState pointer to TCG prologue, which moves
it to AREG0.

Thanks to Peter Maydell and Laurent Desnogues for the ARM prologue

Revert the hacks to avoid AREG0 use on Sparc hosts....

f3e27037 06/26/2011 09:25 pm Blue Swirl

exec.h: fix coding style and change cpu_has_work to return bool

Before the next patch, fix coding style of the areas affected.

Change the type of the return value from cpu_has_work() and
qemu_cpu_has_work() to bool.

Signed-off-by: Blue Swirl <>

d8108fb1 06/26/2011 09:25 pm Blue Swirl

cpu-exec: unify do_interrupt call

Now that all targets use common function signature for do_interrupt(), there is no
need for the #ifdeffery anymore.

Signed-off-by: Blue Swirl <>

3c688828 06/26/2011 09:25 pm Blue Swirl

m68k: use caller supplied CPUState for interrupt related stuff

Pass CPUState to do_interrupt(). This is needed by later patches.

It would be cleaner to move the function to helper.c, but there are
a few dependencies between do_interrupt() and other functions....

e694d4e2 06/26/2011 09:25 pm Blue Swirl

x86: use caller supplied CPUState for interrupt related stuff

Several x86 specific functions are called from cpu-exec.c with the
assumption that global env register is valid. This will be changed
later, so make the functions use caller supplied CPUState parameter....

1162c041 06/26/2011 09:25 pm Blue Swirl

cpu_loop_exit: avoid using AREG0

Make cpu_loop_exit() take a parameter for CPUState instead of relying
on global env.

Signed-off-by: Blue Swirl <>

3d39c959 06/20/2011 09:24 pm Jan Kiszka

Remove unneeded kvm.h from cpu-exec.c

This was obsoleted by 6792a57bf1.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

6a80e088 05/31/2011 08:18 pm Richard Henderson

target-alpha: Disable interrupts properly.

Interrupts are disabled in PALmode, and when the PS IL is high enough.

Signed-off-by: Richard Henderson <>

42a623c7 05/28/2011 09:26 am Blue Swirl

Move user emulator stuff from cpu-exec.c to user-exec.c

Simplify cpu-exec.c by refactoring.

Signed-off-by: Blue Swirl <>

9eff14f3 05/28/2011 09:25 am Blue Swirl

cpu-exec: prepare for user and softmmu split

There is little in common with user and softmmu versions of cpu_resume_signal(),
split them.

Fix coding style for the user emulator part.

Signed-off-by: Blue Swirl <>

dcfd14b3 05/22/2011 01:47 pm Blue Swirl

Delete unused tb_invalidate_page_range

tb_invalidate_page_range() was intended to be used to invalidate an
area of a TB which the guest explicitly flushes from i-cache. However,
QEMU detects writes to code areas where TBs have been generated, so
his has never been useful....

711c2128 05/12/2011 04:08 pm Anthony Liguori

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


3125f763 05/08/2011 07:55 pm Richard Henderson

irq: Introduce and use CPU_INTERRUPT_SSTEP_MASK.

This mask contains all of the bits that should be ignored while single
stepping in the debugger. The mask contains 2 bits that are not currently
cleared, but are also never set. The bits are included in the mask for...

78aa29e4 05/08/2011 07:55 pm Richard Henderson

target-sparc: Do not check CPU_INTERRUPT_TIMER.

This bit is never set, therefore we should not read it either.

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

a1c7273b 05/08/2011 12:02 pm Stefan Weil

Fix typos in comments and code (occured -> occurred and related)

The code changed here is an unused data type name (evt_flush_occurred).

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

ff2712ba 05/08/2011 12:02 pm Stefan Weil

Fix typos in comments (interupt -> interrupt)

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

618ba8e6 04/20/2011 11:37 am Stefan Weil

Remove unused function parameter from cpu_restore_state

The previous patch removed the need for parameter puc.
Is is now unused, so remove it.

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

3110e292 04/18/2011 09:51 pm Alexander Graf

s390x: Enable s390x-softmmu target

This patch adds some code paths for running s390x guest OSs without the
need for KVM.

Signed-off-by: Alexander Graf <>
Signed-off-by: Aurelien Jarno <>

d2fbca94 04/12/2011 09:49 pm Guan Xuetao

unicore32: necessary modifications for other files to support unicore32

Signed-off-by: Guan Xuetao <>
Signed-off-by: Blue Swirl <>

1009d2ed 03/15/2011 07:36 pm Jan Kiszka

x86: Unbreak TCG support for hardware breakpoints

Commit 83f338f73e broke x86 hardware breakpoint emulation by moving the
debug exception handling out of cpu_exec. Fix this by moving all TCG
related bits back, only leaving the generic guest debugging parts in...

eda48c34 03/13/2011 04:44 pm Paolo Bonzini

inline cpu_halted into sole caller

All implementations are now the same, and there is only one caller,
so inline the function there.

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Blue Swirl <>

81ea0e13 03/07/2011 02:42 pm Michael Walle

LatticeMico32 target support

This patch adds support for the LatticeMico32 softcore processor by Lattice

Signed-off-by: Michael Walle <>
Signed-off-by: Edgar E. Iglesias <>

83f338f7 02/14/2011 04:39 pm Jan Kiszka

Move debug exception handling out of cpu_exec

To prepare splitting up KVM and TCG CPU entry/exit, move the debug
exception into cpus.c and invoke cpu_handle_debug_exception on return
from qemu_cpu_exec.

This also allows to clean up the debug request signaling: We can assign...

6792a57b 02/14/2011 04:39 pm Jan Kiszka

kvm: Separate TCG from KVM cpu execution

Mixing up TCG bits with KVM already led to problems around eflags
emulation on x86. Moreover, quite some code that TCG requires on cpu
enty/exit is useless for KVM. So dispatch between tcg_cpu_exec and
kvm_cpu_exec as early as possible....

4cdc1cd1 12/27/2010 01:58 am Aurelien Jarno

target-mips: fix host CPU consumption when guest is idle

When the CPU is in wait state, do not wake-up if an interrupt can't be
taken. This avoid host CPU running at 100% if a device (e.g. timer) has
an interrupt line left enabled.

Also factorize code to check if interrupts are enabled in...

2c90fe2b 12/05/2010 10:09 am Kirill Batuzov

Speedup 'tb_find_slow' by using the same heuristic as during memory page lookup

Move the last found TB to the head of the list so it will be found more quickly next time it will be looked for.

Signed-off-by: Kirill Batuzov <>
Signed-off-by: Pavel Yushchenko <>...

138afb02 08/06/2010 01:21 pm Edgar E. Iglesias

mips: Add support for VInt and VEIC irq modes

Signed-off-by: Edgar E. Iglesias <>

b0052d15 07/22/2010 06:52 am Jan Kiszka

Fix cpu_unlink_tb race

If a signal hit after the env->exit_request check but before cpu_exec
updated env->current_tb, cpu_unlink_tb called from the signal hander
will not unlink the current TB. This may leave us stuck in a guest loop
if no further unlink is invoked....

c629a4bc 07/22/2010 06:52 am Jan Kiszka

Fix cpu_exit for tcp_cpu_exec

If a cpu_exit request is pending, ensure that we leave the CPU loop
quickly. For this purpose, keep the global exit_request pending until
we are about to leave tcg_cpu_exec. Also, immediately break out of the
SMP loop if the request is set, do not run till the end of the chain....

1d93f0f0 07/22/2010 06:52 am Jan Kiszka

Introduce proper compiler barrier

Define barrier() as optimization barrier and replace (potentially
unreliable) asm("") fences.

Signed-off-by: Jan Kiszka <>
Acked-by: Paolo Bonzini <>
Reviewed-by: Marcelo Tosatti <>...

6a1621b9 06/11/2010 07:15 pm Richard Henderson

tcg-s390: Compute is_write in cpu_signal_handler.

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

1a28cac3 05/11/2010 08:02 pm Marcelo Tosatti

make SIG_IPI to tcg vcpu thread reliable

Store tcg loop exit request on a global variable, and transfer it to
per-CPUState exit_request after assignment of cpu_single_env.

This makes exit request signal from robust. Drop the timedlock hack.

Signed-off-by: Marcelo Tosatti <>...

a73b1fd9 05/05/2010 01:20 pm Richard Henderson

Enable -d cpu logging by default.

When -d cpu logging was handled by target-foo/translate.c,
it was controled by DEBUG_DISAS, which is enabled by default.
Use the same condition in cpu_exec.

At the same time, reduce the if-deffery by assuming no flags
update is required for the target....

f57040be 04/08/2010 12:11 pm Richard Henderson

tcg-hppa: Compute is_write in cpu_signal_handler.

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

60e99246 04/01/2010 10:51 pm Aurelien Jarno

linux-user/ia64: workaround ia64 strangenesses

ia64 has some strangenesses that need to be workaround:
- it has a __clone2() syscall instead of the using clone() one, with
different arguments, and which is not declared in the usual headers.
- ucontext.uc_sigmask is declared with type long int, while it is...

41c1b1c9 03/12/2010 07:23 pm Paul Brook

Add tb_page_addr_t

The page tracking code in exec.c is used by both userspace and system
emulation. Userspace emulation uses it to track virtual pages, and
system emulation to track ram pages. Introduce a new type to hold this
kind of address.

Signed-off-by: Paul Brook <>

1d9000e8 02/23/2010 09:23 pm Paolo Bonzini

declare saved_env_reg as volatile

This ensures that the compiler does not move it away from
the "env = env1;" assignment. Fixes a miscompilation
on gcc 4.4, reported by Jay Foad.

Cc: <>
Signed-off-by: Paolo Bonzini <>...

724c6893 02/23/2010 12:16 am Anthony Liguori

Merge remote branch 'qemu-kvm/uq/master' into staging

14dcc3e2 02/21/2010 11:12 am Jan Kiszka

kvm: Fix eflags corruption in kvm mode

This should explain a lot of the weird breakages of upstream KVM we've
seen recently (actually we should have seen it much earlier):

Stop translating eflags into TCG format when in kvm mode as we never
translate it back and rather sync this broken state into the kernel....

58d9b1e0 02/20/2010 12:37 am Juergen Lock

Add FreeBSD/ppc host ucontext definitions.

Submitted by: Andreas Tobler <>

Signed-off-by: Juergen Lock <>
Signed-off-by: malc <>

24ebf5f3 02/18/2010 10:38 pm Paolo Bonzini

get rid of hostregs_helper.h

Since b567b38 (target-arm: remove T0 and T1, 2009-10-16) the only global
register that is used is AREG0, so the complexity of hostregs_helper.h
is unused. Use regular assignments and a compiler optimization barrier.

Signed-off-by: Paolo Bonzini <>...

fb9fb692 02/15/2010 12:17 pm Edgar E. Iglesias

cris: Prepare for CRISv10.

  • Add prefix flag and special reg.
  • Add interrupt lockout.
  • Add CC_OP_MSTEP.

Signed-off-by: Edgar E. Iglesias <>