summaryrefslogtreecommitdiff
path: root/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
blob: b6fe600c9c5de7ed1b9aa786878016dcf7ee790e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From 42c84cbe58c3c9089cc2a46a425210f20b47bcc9 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Thu, 19 Jul 2018 17:17:26 -0500
Subject: [PATCH] Reorder registers in other assembler files

This fixes the previous commit which changed the register order in
swapcontext only, which caused setcontext to subtly corrupt the stack.
---
 arch/x86_64/getcontext.S | 4 ++--
 arch/x86_64/setcontext.S | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86_64/getcontext.S b/arch/x86_64/getcontext.S
index 7e56a1a..24cc1d3 100644
--- a/arch/x86_64/getcontext.S
+++ b/arch/x86_64/getcontext.S
@@ -22,8 +22,8 @@ __getcontext:
 	movq	%r14, 88(%rdi)
 	movq	%r15, 96(%rdi)
 	movq	%rdi, 104(%rdi)
-	movq	%rbp, 112(%rdi)
-	movq	%rsi, 120(%rdi)
+	movq	%rsi, 112(%rdi)
+	movq	%rbp, 120(%rdi)
 	movq	%rbx, 128(%rdi)
 	movq	%rdx, 136(%rdi)
 	movq	$1, 144(%rdi)		/* $1 is %rax */
diff --git a/arch/x86_64/setcontext.S b/arch/x86_64/setcontext.S
index 607d40c..aba3775 100644
--- a/arch/x86_64/setcontext.S
+++ b/arch/x86_64/setcontext.S
@@ -21,8 +21,8 @@ __setcontext:
 	movq    80(%rdi), %r13
 	movq    88(%rdi), %r14
 	movq    96(%rdi), %r15
-	movq    112(%rdi), %rbp
-	movq    120(%rdi), %rsi
+	movq    112(%rdi), %rsi
+	movq    120(%rdi), %rbp
 	movq    128(%rdi), %rbx
 	movq    136(%rdi), %rdx
 	movq    144(%rdi), %rax
-- 
2.15.0