]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/cpu/arm/assembler/assembler.factor
arm64: ADR encoding
[factor.git] / basis / cpu / arm / assembler / assembler.factor
index 98208ac3a420de0fed0c4596c3000613c499eca1..163aa3897a4257d0a185e5a1390fd06a9fe1d6a6 100644 (file)
@@ -20,11 +20,11 @@ TUPLE: arm64-assembler ip labels out ;
 : ip ( -- address ) arm64-assembler get ip>> ;
 : >out ( instruction -- ) arm64-assembler get out>> push ;
 
-: ADRP ( imm Rd -- )
-    [
-        ip 12 on-bits unmask - -12 shift
-        [ 2 bits ] [ -2 shift ] bi
-    ] dip ADRP-encode >out ;
+: ADR ( imm21 Rd -- )
+    [ [ 2 bits ] [ 19 bits ] bi ] dip ADR-encode >out ;
+
+: ADRP ( imm21 Rd -- )
+    [ [ 2 bits ] [ 19 bits ] bi ] dip ADRP-encode >out ;
 
 : BL ( offset -- ) ip - 4 / BL-encode >out ;
 : BR ( register -- ) BR-encode >out ;