From 6e445a3d2bdf152ebf57d1c92bfea1828e070743 Mon Sep 17 00:00:00 2001 From: Marcus Shawcroft Date: Tue, 4 Jun 2013 10:05:08 +0100 Subject: [PATCH] [AArch64] Ensure getcontext() initializes PSTATE. --- ports/ChangeLog.aarch64 | 6 ++++++ ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S | 4 ++++ ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym | 1 + 3 files changed, 11 insertions(+) diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64 index 46def45..382ecdb 100644 --- a/ports/ChangeLog.aarch64 +++ b/ports/ChangeLog.aarch64 @@ -1,3 +1,9 @@ +2013-06-04 Marcus Shawcroft + + * sysdeps/unix/sysv/linux/aarch64/getcontext.S (__getcontext): + Initialize pstate. + * sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym (oPSTATE): Define. + 2013-05-29 Siddhesh Poyarekar [BZ #15465] diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S index eea6867..c370957 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S +++ b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S @@ -53,6 +53,10 @@ ENTRY(__getcontext) mov x2, sp str x2, [x0, oSP] + /* Initialize the pstate. */ + mov x3, #0 + str x3, [x0, oPSTATE] + /* Figure out where to place the first context extension block. */ add x2, x0, #oEXTENSION diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym b/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym index 1afff78..ab3930c 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym +++ b/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym @@ -37,6 +37,7 @@ STACK_FLAGS stack (ss_flags) oX0 mcontext (regs) oSP mcontext (sp) oPC mcontext (pc) +oPSTATE mcontext (pstate) oEXTENSION mcontext (__reserved) #define fpsimd_context(member) offsetof (struct fpsimd_context, member) -- 2.7.4