[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/4] linux-user: Fix endianess of aarch64 signal tra
From: |
Michael Weiser |
Subject: |
[Qemu-devel] [PATCH 3/4] linux-user: Fix endianess of aarch64 signal trampoline |
Date: |
Tue, 19 Dec 2017 16:16:35 +0100 |
Since for aarch64 the signal trampoline is synthesized directly into the
signal frame we need to make sure the instructions end up little-endian.
Otherwise the wrong endianness will cause a SIGILL upon return from the
signal handler on big-endian targets.
Signed-off-by: Michael Weiser <address@hidden>
---
linux-user/signal.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index dae14d4a89..eb3638f61b 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -1599,9 +1599,13 @@ static void target_setup_frame(int usig, struct
target_sigaction *ka,
if (ka->sa_flags & TARGET_SA_RESTORER) {
return_addr = ka->sa_restorer;
} else {
- /* mov x8,#__NR_rt_sigreturn; svc #0 */
- __put_user(0xd2801168, &frame->tramp[0]);
- __put_user(0xd4000001, &frame->tramp[1]);
+ /*
+ * mov x8,#__NR_rt_sigreturn; svc #0
+ * Since these are instructions they need to be put as little-endian
+ * regardless of target default or current CPU endianness.
+ */
+ __put_user_e(0xd2801168, &frame->tramp[0], le);
+ __put_user_e(0xd4000001, &frame->tramp[1], le);
return_addr = frame_addr + offsetof(struct target_rt_sigframe, tramp);
}
env->xregs[0] = usig;
--
2.15.1
- [Qemu-devel] [PATCH 0/4] Add aarch64_be-linux-user target, Michael Weiser, 2017/12/19
- [Qemu-devel] [PATCH 4/4] configure: Add aarch64_be-linux-user target, Michael Weiser, 2017/12/19
- [Qemu-devel] [PATCH 3/4] linux-user: Fix endianess of aarch64 signal trampoline,
Michael Weiser <=
- [Qemu-devel] [PATCH 1/4] linux-user: Add support for big-endian aarch64, Michael Weiser, 2017/12/19
- [Qemu-devel] [PATCH 2/4] linux-user: Add separate aarch64_be uname, Michael Weiser, 2017/12/19
- Re: [Qemu-devel] [PATCH 0/4] Add aarch64_be-linux-user target, Laurent Vivier, 2017/12/19
- Re: [Qemu-devel] [PATCH 0/4] Add aarch64_be-linux-user target, Richard Henderson, 2017/12/20
- Re: [Qemu-devel] [PATCH 0/4] Add aarch64_be-linux-user target, no-reply, 2017/12/20