[ARM64] GNU assembler doesn't work with LLInt arm64 backend.
authorrgabor@webkit.org <rgabor@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 24 Mar 2014 15:24:02 +0000 (15:24 +0000)
committerrgabor@webkit.org <rgabor@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 24 Mar 2014 15:24:02 +0000 (15:24 +0000)
https://bugs.webkit.org/show_bug.cgi?id=130453

Reviewed by Filip Pizlo.

Change fp and lr to x29 and x30. Add both operand kinds to emitARM64()
at sxtw and uxtw instructions.

* offlineasm/arm64.rb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@166166 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/offlineasm/arm64.rb

index 2f5779f..e4a816b 100644 (file)
@@ -1,3 +1,15 @@
+2014-03-24  Gabor Rapcsanyi  <rgabor@webkit.org>
+
+        [ARM64] GNU assembler doesn't work with LLInt arm64 backend.
+        https://bugs.webkit.org/show_bug.cgi?id=130453
+        
+        Reviewed by Filip Pizlo.
+
+        Change fp and lr to x29 and x30. Add both operand kinds to emitARM64()
+        at sxtw and uxtw instructions.
+
+        * offlineasm/arm64.rb:
+
 2014-03-23  Hyowon Kim  <hw1008.kim@samsung.com>
 
         Move all EFL typedefs into EflTypedefs.h.
index 1005713..4956d67 100644 (file)
@@ -129,7 +129,7 @@ class RegisterID
         when 'sp'
             'sp'
         when 'lr'
-            'lr'
+            'x30'
         else
             raise "Bad register name #{@name} at #{codeOriginString}"
         end
@@ -587,9 +587,9 @@ class Instruction
                 $asm.puts "stp #{ops[0].arm64Operand(:ptr)}, #{ops[1].arm64Operand(:ptr)}, [sp, #-16]!"
             }
         when "popLRAndFP"
-            $asm.puts "ldp fp, lr, [sp], #16"
+            $asm.puts "ldp x29, x30, [sp], #16"
         when "pushLRAndFP"
-            $asm.puts "stp fp, lr, [sp, #-16]!"
+            $asm.puts "stp x29, x30, [sp, #-16]!"
         when "popCalleeSaves"
             $asm.puts "ldp x28, x27, [sp], #16"
             $asm.puts "ldp x26, x25, [sp], #16"
@@ -609,13 +609,13 @@ class Instruction
                 emitARM64("mov", operands, :ptr)
             end
         when "sxi2p"
-            emitARM64("sxtw", operands, :ptr)
+            emitARM64("sxtw", operands, [:int, :ptr])
         when "sxi2q"
-            emitARM64("sxtw", operands, :ptr)
+            emitARM64("sxtw", operands, [:int, :ptr])
         when "zxi2p"
-            emitARM64("uxtw", operands, :ptr)
+            emitARM64("uxtw", operands, [:int, :ptr])
         when "zxi2q"
-            emitARM64("uxtw", operands, :ptr)
+            emitARM64("uxtw", operands, [:int, :ptr])
         when "nop"
             $asm.puts "nop"
         when "bieq", "bbeq"