adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Julio Guerra f0cc4aa845 PPC: Fix missing TRACE exception
This patch fixes bug 1031698 :
https://bugs.launchpad.net/qemu/+bug/1031698

If we look at the (truncated) translation of the conditional branch
instruction in the test submitted in the bug post, the call to the
exception helper is missing in the "bne-false" chunk of translated
code :

IN:
bne-    0x1800278

OUT:
0xb544236d:  jne    0xb5442396

0xb5442373:  mov    %ebp,(%esp)
0xb5442376:  mov    $0x44,%ebx
0xb544237b:  mov    %ebx,0x4(%esp)
0xb544237f:  mov    $0x1800278,%ebx
0xb5442384:  mov    %ebx,0x25c(%ebp)
0xb544238a:  call   0x827475a
                     ^^^^^^^^^^^^^^^^^^

0xb5442396:  mov    %ebp,(%esp)
0xb5442399:  mov    $0x44,%ebx
0xb544239e:  mov    %ebx,0x4(%esp)
0xb54423a2:  mov    $0x1800270,%ebx
0xb54423a7:  mov    %ebx,0x25c(%ebp)

Indeed, gen_exception(ctx, excp) called by gen_goto_tb (called by
gen_bcond) changes ctx->exception's value to excp's :

gen_bcond()
{
  gen_goto_tb(ctx, 0, ctx->nip + li - 4);
  /* ctx->exception value is POWERPC_EXCP_BRANCH */

  gen_goto_tb(ctx, 1, ctx->nip);
  /* ctx->exception now value is POWERPC_EXCP_TRACE */
}

Making the following gen_goto_tb()'s test false during the second call :

if ((ctx->singlestep_enabled &
    (CPU_BRANCH_STEP | CPU_SINGLE_STEP)) &&
    ctx->exception == POWERPC_EXCP_BRANCH /* false...*/) {
         target_ulong tmp = ctx->nip;
         ctx->nip = dest;
         /* ... and this is the missing call */
         gen_exception(ctx, POWERPC_EXCP_TRACE);
         ctx->nip = tmp;
}

So the patch simply adds the missing matching case, fixing our problem.

Signed-off-by: Julio Guerra <guerr@julio.in>
Signed-off-by: Alexander Graf <agraf@suse.de>
2012-11-26 19:53:26 +01:00
QMP
audio audio/audio_pt_int: Clarify licensing 2012-11-19 22:26:13 +04:00
backends rng-random: only build on POSIX platforms 2012-11-19 08:22:28 -06:00
block use int64_t for return values from rbd instead of int 2012-11-21 09:43:23 +01:00
bsd-user
default-configs
docs Merge remote-tracking branch 'stefanha/tracing' into staging 2012-11-19 08:32:03 -06:00
fpu softfloat: implement fused multiply-add NaN propagation for MIPS 2012-10-31 22:20:45 +01:00
fsdev qemu-fsdev-dummy.c: Include module.h 2012-11-15 02:21:03 +01:00
gdb-xml
hw hw/ide/macio: Fix segfault caused by NULL DMAContext* 2012-11-26 19:53:26 +01:00
include/qemu rng-random: add an RNG backend that uses /dev/random (v3) 2012-11-16 08:36:13 -06:00
libcacard libcacard: link in stubs 2012-11-19 10:48:32 +01:00
linux-headers linux-headers: Update to 3.7-rc5 2012-11-13 12:27:40 -07:00
linux-user target-mips: Add ASE DSP resources access check 2012-10-31 20:24:06 +01:00
net tap: reset vnet header size on open 2012-11-20 15:38:37 +01:00
pc-bios
pixman@97336fad32 pixman: add submodule 2012-11-01 13:10:06 +01:00
qapi
qga
qom object: add object_property_add_bool (v2) 2012-11-16 08:36:12 -06:00
roms
scripts Merge remote-tracking branch 'stefanha/tracing' into staging 2012-11-19 08:32:03 -06:00
slirp slirp: Add domain-search option to slirp's DHCP server 2012-11-15 10:27:14 +01:00
stubs build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
sysconfigs/target
target-alpha TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-arm TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-cris TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-i386 Merge remote-tracking branch 'afaerber/qom-cpu' into staging 2012-11-19 08:31:24 -06:00
target-lm32 TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-m68k TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-microblaze TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-mips target-mips: remove POOL48A from the microMIPS decoding 2012-11-24 13:35:43 +01:00
target-openrisc target-openrisc: remove conflicting definitions from cpu.h 2012-11-24 13:19:54 +01:00
target-ppc PPC: Fix missing TRACE exception 2012-11-26 19:53:26 +01:00
target-s390x TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-sh4 TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-sparc TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-unicore32 TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
target-xtensa TCG: Use gen_opc_buf from context instead of global variable. 2012-11-17 13:53:36 +00:00
tcg tcg: mark local temps as MEM in dead_temp() 2012-11-24 13:24:13 +01:00
tests Merge remote-tracking branch 'bonzini/build-urgent' into staging 2012-11-19 09:27:13 -06:00
trace trace: allow disabling events in events file 2012-11-16 13:12:13 +01:00
ui Merge remote-tracking branch 'spice/spice.v64' into staging 2012-11-26 08:19:07 -06:00
.exrc
.gitignore
.gitmodules pixman: add submodule 2012-11-01 13:10:06 +01:00
.mailmap
CODING_STYLE
COPYING
COPYING.LIB
Changelog
HACKING
LICENSE
MAINTAINERS MAINTAINERS: add Stefan Hajnoczi as block and virtio-blk co-maintainer 2012-11-14 18:19:21 +01:00
Makefile Build system fix distclean error for pixman 2012-11-24 20:03:04 +00:00
Makefile.dis
Makefile.objs build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
Makefile.target build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
Makefile.user
README
TODO
VERSION Update version for 1.3.0-rc0 release 2012-11-19 13:51:39 -06:00
a.out.h
acl.c
acl.h
aes.c
aes.h
aio-posix.c aio: call aio_notify after setting I/O handlers 2012-10-30 09:30:53 +01:00
aio-win32.c aio: call aio_notify after setting I/O handlers 2012-10-30 09:30:53 +01:00
alpha-dis.c
alpha.ld
arch_init.c
arch_init.h
arm-dis.c
arm.ld
async.c aio: fix aio_ctx_prepare with idle bottom halves 2012-11-12 20:02:09 +04:00
balloon.c
balloon.h
bitmap.c
bitmap.h
bitops.c
bitops.h
block-migration.c
block-migration.h
block.c block: Fix regression for MinGW (assertion caused by short string) 2012-11-24 19:54:43 +00:00
block.h
block_int.h
blockdev-nbd.c nbd: disallow nbd-server-add before nbd-server-start 2012-11-12 14:38:29 +01:00
blockdev.c Issue warning when deprecated drive parameter boot=on|off is used 2012-10-30 23:39:52 -02:00
blockdev.h
blockjob.c
blockjob.h
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c migration: add qemu_get_fd 2012-11-02 18:34:59 +01:00
buffered_file.h
cache-utils.c
cache-utils.h
cmd.c
cmd.h
compatfd.c
compatfd.h
compiler.h build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
config.h
configure tci: Fix build breakage (unresolved symbol tcg_out_tb_finalize) 2012-11-18 20:38:04 +00:00
console.c pixman: drop obsolete fields from DisplaySurface 2012-11-01 14:00:05 +01:00
console.h spice: switch to pixman 2012-11-05 11:54:49 +01:00
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-all.h cpus: Pass CPUState to run_on_cpu() 2012-10-31 04:12:23 +01:00
cpu-common.h exec: make some functions static 2012-11-01 19:49:45 +01:00
cpu-defs.h cpu: Move thread_id to CPUState 2012-10-31 04:12:23 +01:00
cpu-exec.c cpus: Pass CPUState to [qemu_]cpu_has_work() 2012-10-31 04:11:37 +01:00
cpus.c cpu: Move thread_id to CPUState 2012-10-31 04:12:23 +01:00
cpus.h
cputlb.c
cputlb.h
cris-dis.c
cursor.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cutils.c
def-helper.h
device_tree.c
device_tree.h
dis-asm.h
disas.c disas: avoid using cpu_single_env 2012-11-10 13:49:20 +00:00
disas.h disas: avoid using cpu_single_env 2012-11-10 13:49:20 +00:00
dma-helpers.c aio: rename AIOPool to AIOCBInfo 2012-11-14 18:19:21 +01:00
dma.h dma: Define dma_context_memory and use in sysbus-ohci 2012-11-12 16:44:57 +01:00
dump-stub.c
dump.c
dump.h
elf.h
envlist.c
envlist.h
error.c
error.h
event_notifier-posix.c
event_notifier-win32.c
event_notifier.h
exec-all.h tci: fix build breakage for target MIPS 2012-11-18 20:37:04 +00:00
exec-memory.h
exec.c dma: Define dma_context_memory and use in sysbus-ohci 2012-11-12 16:44:57 +01:00
gdbstub.c
gdbstub.h
gen-icount.h TCG: Use gen_opparam_ptr from context instead of global variable. 2012-11-17 13:53:34 +00:00
hmp-commands.hx trace: Remove "info trace" from documents 2012-11-16 13:35:48 +01:00
hmp.c hmp: add NBD server commands 2012-11-12 14:38:29 +01:00
hmp.h hmp: add NBD server commands 2012-11-12 14:38:29 +01:00
host-utils.c
host-utils.h
hppa-dis.c
hppa.ld
hwaddr.h
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c
int128.h
iohandler.c
ioport.c
ioport.h
iorange.h
iov.c Merge remote-tracking branch 'origin/master' into threadpool 2012-10-31 10:42:51 +01:00
iov.h
json-lexer.c
json-lexer.h
json-parser.c
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: Actually remove software breakpoints from list on cleanup 2012-11-14 20:15:38 -02:00
kvm-stub.c
kvm.h i386: kvm: filter CPUID feature words earlier, on cpu.c 2012-10-30 23:39:49 -02:00
libfdt_env.h
lm32-dis.c
m68k-dis.c
m68k.ld
main-loop.c vl: delay thread initialization after daemonization 2012-11-02 13:07:55 -05:00
main-loop.h main-loop: use GSource to poll AIO file descriptors 2012-10-30 09:30:53 +01:00
memory-internal.h exec: make some functions static 2012-11-01 19:49:45 +01:00
memory.c memory: Don't dump disabled regions 2012-11-10 13:24:39 +00:00
memory.h
memory_mapping-stub.c
memory_mapping.c
memory_mapping.h
microblaze-dis.c
migration-exec.c migration: move qemu_fclose to process_incoming_migration 2012-11-02 18:35:07 +01:00
migration-fd.c migration: move qemu_fclose to process_incoming_migration 2012-11-02 18:35:07 +01:00
migration-tcp.c migration: move qemu_fclose to process_incoming_migration 2012-11-02 18:35:07 +01:00
migration-unix.c migration: move qemu_fclose to process_incoming_migration 2012-11-02 18:35:07 +01:00
migration.c migration: move process_incoming_migration to a coroutine 2012-11-02 18:35:08 +01:00
migration.h
mips-dis.c
mips.ld
module.c
module.h
monitor.c target-i386: Pass X86CPU to cpu_x86_inject_mce() 2012-10-31 04:12:23 +01:00
monitor.h
nbd.c nbd: fixes to read-only handling 2012-11-13 10:34:50 +01:00
nbd.h
net.c net: Reject non-netdevs in qmp_netdev_del() 2012-11-01 11:05:57 +01:00
net.h
notify.c
notify.h
os-posix.c
os-win32.c
osdep.c build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
osdep.h osdep: Move qemu_{open,close}() prototypes 2012-11-15 02:38:06 +01:00
oslib-posix.c aio: clean up now-unused functions 2012-10-30 09:30:54 +01:00
oslib-win32.c build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
page_cache.c
path.c
pci-ids.txt
poison.h
ppc-dis.c
ppc.ld
ppc64.ld
qapi-schema-guest.json
qapi-schema-test.json
qapi-schema.json slirp: Add domain-search option to slirp's DHCP server 2012-11-15 10:27:14 +01:00
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu-aio.h aio: rename AIOPool to AIOCBInfo 2012-11-14 18:19:21 +01:00
qemu-barrier.h
qemu-bridge-helper.c
qemu-char.c chardev: Use real-time clock for open timer 2012-11-24 20:03:25 +00:00
qemu-char.h Merge remote-tracking branch 'bonzini/threadpool' into staging 2012-11-01 11:13:39 -05:00
qemu-common.h osdep: Move qemu_{open,close}() prototypes 2012-11-15 02:38:06 +01:00
qemu-config.c vl: add -object option to create QOM objects from the command line 2012-11-16 08:36:12 -06:00
qemu-config.h qemu-config.h: Include headers it needs 2012-11-15 02:34:42 +01:00
qemu-coroutine-int.h
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-coroutine.h
qemu-doc.texi qemu: Document GlusterFS block driver usage 2012-11-14 18:19:21 +01:00
qemu-error.c
qemu-error.h
qemu-file.h migration: replace qemu_stdio_fd with qemu_get_fd 2012-11-02 18:35:06 +01:00
qemu-ga.c
qemu-img-cmds.hx
qemu-img.c tools: initialize main loop before block layer 2012-11-06 04:37:57 +04:00
qemu-img.texi
qemu-io.c qemu-io: Use bdrv_drain_all instead of qemu_aio_flush 2012-11-14 18:20:06 +01:00
qemu-lock.h
qemu-log.c
qemu-log.h disas: avoid using cpu_single_env 2012-11-10 13:49:20 +00:00
qemu-nbd.c qemu-nbd: initialize main loop before block layer 2012-11-12 11:33:29 +01:00
qemu-nbd.texi
qemu-objects.h
qemu-option-internal.h
qemu-option.c
qemu-option.h
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx Legacy qemu-kvm options have no argument 2012-11-23 10:37:04 -02:00
qemu-os-posix.h
qemu-os-win32.h
qemu-pixman.c Merge remote-tracking branch 'kraxel/pixman.v5' into staging 2012-11-14 08:53:03 -06:00
qemu-pixman.h Merge remote-tracking branch 'kraxel/pixman.v5' into staging 2012-11-14 08:53:03 -06:00
qemu-progress.c
qemu-queue.h
qemu-seccomp.c
qemu-seccomp.h
qemu-sockets.c qemu-sockets: Fix parsing of the inet option 'to'. 2012-11-21 12:07:59 +04:00
qemu-tech.texi
qemu-thread-posix.c semaphore: implement fallback counting semaphores with mutex+condvar 2012-11-02 13:07:54 -05:00
qemu-thread-posix.h semaphore: implement fallback counting semaphores with mutex+condvar 2012-11-02 13:07:54 -05:00
qemu-thread-win32.c qemu-thread: add QemuSemaphore 2012-10-31 09:45:47 +01:00
qemu-thread-win32.h qemu-thread: add QemuSemaphore 2012-10-31 09:45:47 +01:00
qemu-thread.h qemu-thread: add QemuSemaphore 2012-10-31 09:45:47 +01:00
qemu-timer-common.c
qemu-timer.c qemu-timer: Fix compilation for non-POSIX hosts 2012-11-10 12:28:52 +00:00
qemu-timer.h
qemu-tls.h
qemu-tool.c
qemu-user.c
qemu-x509.h
qemu-xattr.h
qemu.sasl
qemu_socket.h
qerror.c
qerror.h
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx
qmp.c build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
qobject.h
qstring.c
qstring.h
qtest.c
qtest.h
range.h
readline.c
readline.h
rules.mak build: replace weak symbols with a static library 2012-11-18 19:19:23 +00:00
s390-dis.c
s390.ld
savevm.c migration: handle EAGAIN while reading QEMUFile 2012-11-02 18:35:07 +01:00
sh4-dis.c
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h tcg: Add extended GETPC mechanism for MMU helpers with ldst optimization 2012-11-03 09:44:20 +00:00
sparc-dis.c
sparc.ld
sparc64.ld
spice-qemu-char.c
sysemu.h vl.c: add missing static 2012-11-01 19:49:44 +01:00
tcg-runtime.c
tci-dis.c
tci.c tci: Fix type of tci_read_label 2012-11-24 19:52:00 +00:00
thread-pool.c aio: rename AIOPool to AIOCBInfo 2012-11-14 18:19:21 +01:00
thread-pool.h aio: add generic thread-pool facility 2012-10-31 10:37:48 +01:00
thunk.c
thunk.h
trace-events usb-host: update tracing 2012-11-16 11:27:32 +01:00
translate-all.c TCG: Remove unused global variables 2012-11-17 13:53:38 +00:00
uboot_image.h
uri.c
uri.h
user-exec.c
version.rc
vgafont.h
vl.c vl: add -object option to create QOM objects from the command line 2012-11-16 08:36:12 -06:00
vmstate.h
x86_64.ld
xen-all.c
xen-mapcache.c
xen-mapcache.h
xen-stub.c

README

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team