qemu/linux-user
Anton Blanchard 6bb9a0a9ef target-ppc: Fix SRR0 when taking unaligned exceptions
We are setting SRR0 to the instruction before the one causing the
unaligned exception. A quick testcase:

. = 0x100
.globl _start
_start:
	/* Cause a 0x600 */
	li	3,0x1
	stwcx.	3,0,3
1:	b	1b

. = 0x600
1:	b	1b

Built into something we can load as a BIOS image:

gcc -mbig -c test.S
ld -EB -Ttext 0x0 -o test test.o
objcopy -O binary test test.bin

Run with:

qemu-system-ppc64 -nographic -bios test.bin

Shows an incorrect SRR0 (points at the li):

SRR0 0000000000000100

With the patch we get the correct SRR0:

SRR0 0000000000000104

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2015-09-20 22:48:39 +02:00
..
aarch64 target-arm: make c13 cp regs banked (FCSEIDR, ...) 2014-12-11 12:07:52 +00:00
alpha linux-user/alpha: Add define for NR_shmat to enable shmat syscall 2015-01-27 22:33:56 +02:00
arm linux-user/arm: Correct TARGET_NR_timerfd to TARGET_NR_timerfd_create 2015-05-18 17:45:10 +01:00
cris linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
i386 linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
m68k linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
microblaze linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
mips linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
mips64 mips64-linux-user: Fix definition of struct sigaltstack 2015-01-27 22:33:57 +02:00
openrisc linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
ppc linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
s390x linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
sh4 linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
sparc linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
sparc64 linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
tilegx linux-user: tilegx: Add architecture related features 2015-09-15 07:17:51 -07:00
unicore32 linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
x86_64 linux-user: Support target-to-host translation of mlockall argument 2014-08-22 15:06:35 +03:00
elfload.c linux-user: Support tilegx architecture in linux-user 2015-09-15 07:41:19 -07:00
errno_defs.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
flat.h Support for 32 bit ABI on 64 bit targets (only enabled Sparc64) 2007-10-14 16:27:31 +00:00
flatload.c linux-user: Remove regs parameter of load_elf_binary and load_flt_binary 2014-01-10 08:51:37 +02:00
ioctls.h linux-user: Convert blkpg to use a special subop handler 2014-10-06 21:52:45 +03:00
linux_loop.h Fix build failure with old kernel headers (loop.h is incompatible with 2008-05-23 16:06:43 +00:00
linuxload.c cpu: Move opaque field from CPU_COMMON to CPUState 2014-03-13 19:20:47 +01:00
m68k-sim.c exec: Change cpu_abort() argument to CPUState 2014-03-13 19:52:28 +01:00
main.c target-ppc: Fix SRR0 when taking unaligned exceptions 2015-09-20 22:48:39 +02:00
Makefile.objs linux-user: rename cpu-uname -> uname 2014-05-02 21:59:36 +03:00
mmap.c linux-user: remove useless macros GUEST_BASE and RESERVED_VA 2015-08-24 11:14:30 -07:00
qemu.h exec: make mmap_lock/mmap_unlock globally available 2015-09-09 15:34:56 +02:00
signal.c maint: remove unused include for assert.h 2015-09-11 10:21:38 +03:00
socket.h linux-user: support SO_PASSSEC setsockopt option 2014-06-29 14:19:59 +03:00
strace.c linux-user: Don't omit comma for strace of rt_sigaction() 2013-04-05 14:40:54 +02:00
strace.list linux-user: add setns and unshare 2014-08-22 15:06:34 +03:00
syscall_defs.h linux-user: Support tilegx architecture in linux-user 2015-09-15 07:41:19 -07:00
syscall_types.h linux-user: Convert blkpg to use a special subop handler 2014-10-06 21:52:45 +03:00
syscall.c linux-user: Conditionalize syscalls which are not defined in tilegx 2015-09-15 07:41:35 -07:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
uaccess.c Fix missing strnlen problems 2009-07-01 18:24:44 +00:00
uname.c linux-user/uname: Return correct uname string for x86_64 2014-06-17 09:21:40 +03:00
uname.h linux-user: move uname functions to uname.c 2014-05-02 21:59:36 +03:00
vm86.c linux-user/vm86.c: Use cpu_ldl_data &c rather than plain ldl &c 2015-01-20 15:19:33 +00:00