! Copyright (C) 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types kernel math namespaces cpu.architecture cpu.arm.architecture cpu.arm.assembler cpu.arm.intrinsics generator generator.registers continuations compiler io vocabs sequences system ; ! EABI passes floats in integer registers. [ alien-float ] [ >r >r >float r> r> set-alien-float ] 4 "box_float" "to_float" "float" define-primitive-type [ >float ] "float" c-type set-c-type-prep [ alien-double ] [ >r >r >float r> r> set-alien-double ] 8 "box_double" "to_double" "double" define-primitive-type [ >float ] "double" c-type set-c-type-prep T{ arm-backend } compiler-backend set-global ! We don't auto-detect since that would require us to support ! illegal instruction traps. This works on Linux but not on ! Windows CE. "arm-variant" get [ "ARM variant: " write "arm-variant" get print ] [ "==========" print "You should specify the -arm-variant= switch." print " can be one of arm3, arm4, arm4t, or arm5." print "Assuming arm3." print "==========" print "arm3" "arm-variant" set-global ] if "arm-variant" get { "arm4" "arm4t" "arm5" } member? [ "cpu.arm.4" require ] when "arm-variant" get { "arm4t" "arm5" } member? [ t have-BX? set-global ] when "arm-variant" get "arm5" = [ t have-BLX? set-global ] when 7 cells profiler-prologues set-global