qemu-patch-raspberry4/linux-user
Richard Henderson ee03027a2c target/arm: Take an exception if PC is misaligned
For A64, any input to an indirect branch can cause this.

For A32, many indirect branch paths force the branch to be aligned,
but BXWritePC does not.  This includes the BX instruction but also
other interworking changes to PC.  Prior to v8, this case is UNDEFINED.
With v8, this is CONSTRAINED UNPREDICTABLE and may either raise an
exception or force align the PC.

We choose to raise an exception because we have the infrastructure,
it makes the generated code for gen_bx simpler, and it has the
possibility of catching more guest bugs.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2021-12-15 10:35:26 +00:00
..
aarch64 target/arm: Take an exception if PC is misaligned 2021-12-15 10:35:26 +00:00
alpha target/alpha: Implement alpha_cpu_record_sigbus 2021-11-02 07:00:52 -04:00
arm target/arm: Implement arm_cpu_record_sigbus 2021-11-02 07:00:52 -04:00
cris target/cris: Make cris_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
generic linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
hexagon target/hexagon: Remove hexagon_cpu_tlb_fill 2021-11-02 07:00:52 -04:00
host linux-user/signal.c: Create a common rewind_if_in_safe_syscall 2021-11-23 01:47:20 +01:00
hppa linux-user/hppa: Remove EXCP_UNALIGN handling 2021-11-02 07:00:52 -04:00
i386 linux-user/x86_64: Raise SIGSEGV if SA_RESTORER not set 2021-10-01 12:03:48 +02:00
m68k target/m68k: Make m68k_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
microblaze target/microblaze: Make mb_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
mips target/mips: Make mips_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
mips64 linux-user/mips: Implement setup_sigtramp 2021-10-01 12:03:48 +02:00
nios2 linux-user/nios2: Document non-use of setup_sigtramp 2021-10-01 12:03:48 +02:00
openrisc target/openrisc: Make openrisc_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
ppc linux-user/ppc: Remove POWERPC_EXCP_ALIGN handling 2021-11-02 07:00:52 -04:00
riscv target/riscv: Make riscv_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
s390x target/s390x: Implement s390_cpu_record_sigsegv 2021-11-02 07:00:52 -04:00
sh4 target/sh4: Make sh4_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
sparc target/sparc: Make sparc_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
x86_64 linux-user/i386: Implement setup_sigtramp 2021-10-01 12:03:48 +02:00
xtensa target/xtensa: Make xtensa_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
cpu_loop-common.h cpu: Replace ENV_GET_CPU with env_cpu 2019-06-10 07:03:34 -07:00
elfload.c linux-user: fix Coverity CID 1464101 2021-11-22 09:17:08 +01:00
errnos.c.inc linux-user: Simplify host <-> target errno conversion using macros 2021-07-12 21:53:35 +02:00
exit.c linux-user: Don't include gdbstub.h in qemu.h 2021-09-13 20:35:45 +02:00
fd-trans.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
fd-trans.h fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
flat.h linux-user/: fix some comment spelling errors 2020-09-17 20:39:22 +02:00
flatload.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
ioctls.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linux_loop.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linuxload.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
loader.h linux-user: Split loader-related prototypes into loader.h 2021-09-13 20:35:44 +02:00
main.c Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
meson.build meson: *-user: only descend into *-user when configured 2021-10-18 12:51:39 -06:00
mmap.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
qemu.h linux-user: Drop unneeded includes from qemu.h 2021-09-13 20:35:45 +02:00
safe-syscall.h linux-user/signal.c: Create a common rewind_if_in_safe_syscall 2021-11-23 01:47:20 +01:00
safe-syscall.S linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
semihost.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
signal-common.h linux-user: Add infrastructure for a signal trampoline page 2021-10-01 12:03:47 +02:00
signal.c linux-user/signal.c: Create a common rewind_if_in_safe_syscall 2021-11-23 01:47:20 +01:00
socket.h Supply missing header guards 2019-06-12 13:20:21 +02:00
strace.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
strace.h linux-user: Split strace prototypes into strace.h 2021-09-13 20:35:44 +02:00
strace.list linux-user: Add copy_file_range to strace.list 2021-05-18 07:09:58 +02:00
syscall.c linux-user: Rewrite do_getdents, do_getdents64 2021-11-21 16:19:17 +01:00
syscall_defs.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
syscall_types.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
target_flat.h Supply missing header guards 2019-06-12 13:20:21 +02:00
trace-events linux-user/trace-events: fix minor typo in format string 2021-06-17 16:09:11 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uaccess.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
user-internals.h linux-user: Drop unneeded includes from qemu.h 2021-09-13 20:35:45 +02:00
user-mmap.h linux-user: Split mmap prototypes into user-mmap.h 2021-09-13 20:35:45 +02:00
vm86.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00