void-packages/srcpkgs/webkit2gtk/patches/fix_armv6l.patch

24 lines
1.2 KiB
Diff

Fix code emitted for armv6l to not use movw/movt but ldr.
See https://bugs.webkit.org/show_bug.cgi?id=131612
and https://bugs.webkit.org/show_bug.cgi?id=141288
--- a/Source/JavaScriptCore/offlineasm/arm.rb 2015-07-22 14:37:57.000000000 +0200
+++ b/Source/JavaScriptCore/offlineasm/arm.rb 2015-08-08 00:31:21.011824644 +0200
@@ -756,8 +756,16 @@ class Instruction
armMoveImmediate(operands[0].value >> 32, operands[1])
armMoveImmediate(operands[0].value & 0xffffffff, operands[2])
when "mvlbl"
+ if isARMv7 or isARMv7Traditional
$asm.puts "movw #{operands[1].armOperand}, \#:lower16:#{operands[0].value}"
$asm.puts "movt #{operands[1].armOperand}, \#:upper16:#{operands[0].value}"
+ else
+ $mvlbl_counter ||= 0
+ $mvlbl_counter += 1
+ const_label = "_mvlbl_const_label#{$mvlbl_counter}"
+ $asm.puts ".equ #{const_label}, (#{operands[0].value})"
+ $asm.puts "ldr #{operands[1].armOperand}, =#{const_label}"
+ end
when "sxb2i"
$asm.puts "sxtb #{armFlippedOperands(operands)}"
when "sxh2i"