From 5d2f6baac3f3f1ed34d75cdcebcd1daaf86b3fb3 Mon Sep 17 00:00:00 2001
From: Martin Storsjo <martin@martin.st>
Date: Wed, 15 May 2013 15:42:18 +0300
Subject: [PATCH] thumb: Adjust the conversion of the position independent
 switch

This is required since the microsoft assembler claims that
add.w r12, pc, #10
generated unpredictable behaviour.

Change-Id: Ia8e1830def965c88ca4e2f48a24107bac6a4cb9d
---
 build/make/thumb.pm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/build/make/thumb.pm b/build/make/thumb.pm
index 51308a3a72..d04dffe85c 100644
--- a/build/make/thumb.pm
+++ b/build/make/thumb.pm
@@ -53,9 +53,10 @@ sub FixThumbInstructions($)
 
     # Convert a conditional addition to the pc register into a series of
     # instructions. This converts "addlt pc, pc, r3, lsl #2" into
-    # "ittt lt", "addlt.w r12, pc, #10", "addlt.w r12, r12, r3, lsl #2",
-    # "movlt.n pc, r12". This assumes that r12 is free at this point.
-    s/^(\s*)addlt(\s+)pc,\s*pc,\s*(\w+),\s*lsl\s*#(\d+)/$1ittt$2lt\n$1addlt.w$2r12, pc, #10\n$1addlt.w$2r12, r12, $3, lsl #$4\n$1movlt.n$2pc, r12/g;
+    # "itttt lt", "movlt.n r12, pc", "addlt.w r12, #12",
+    # "addlt.w r12, r12, r3, lsl #2", "movlt.n pc, r12".
+    # This assumes that r12 is free at this point.
+    s/^(\s*)addlt(\s+)pc,\s*pc,\s*(\w+),\s*lsl\s*#(\d+)/$1itttt$2lt\n$1movlt.n$2r12, pc\n$1addlt.w$2r12, #12\n$1addlt.w$2r12, r12, $3, lsl #$4\n$1movlt.n$2pc, r12/g;
 
     # Convert "mov pc, lr" into "bx lr", since the former only works
     # for switching from arm to thumb (and only in armv7), but not
-- 
GitLab