Merge mozilla-central and tracemonkey. (a=blockers)
[mozilla-central.git] / js / src / jswince.asm
blob6a2e1eb28c1bba74e8a56882c18a262d710c887c
1 INCLUDE kxarm.h
3 area js_msvc, code, readonly
5 MACRO
6 FUNC_HEADER $Name
7 FuncName SETS VBar:CC:"$Name":CC:VBar
8 PrologName SETS VBar:CC:"$Name":CC:"_Prolog":CC:VBar
9 FuncEndName SETS VBar:CC:"$Name":CC:"_end":CC:VBar
11 AREA |.pdata|,ALIGN=2,PDATA
12 DCD $FuncName
13 DCD (($PrologName-$FuncName)/4) :OR: ((($FuncEndName-$FuncName)/4):SHL:8) :OR: 0x40000000
14 AREA $AreaName,CODE,READONLY
15 ALIGN 2
16 GLOBAL $FuncName
17 EXPORT $FuncName
18 $FuncName
19 ROUT
20 $PrologName
21 MEND
23 ;; -------- Functions to test processor features.
24 export js_arm_try_thumb_op
25 export js_arm_try_armv6t2_op
26 export js_arm_try_armv7_op
27 export js_arm_try_armv6_op
28 export js_arm_try_armv5_op
29 export js_arm_try_vfp_op
31 ;; Test for Thumb support.
32 FUNC_HEADER js_arm_try_thumb_op
33 bx lr
34 mov pc, lr
35 ENTRY_END
36 endp
38 ;; I'm not smart enough to figure out which flags to pass to armasm to get it
39 ;; to understand movt and fmdrr/vmov; the disassembler figures them out just fine!
41 ;; Test for Thumb2 support.
42 FUNC_HEADER js_arm_try_armv6t2_op
43 ;; movt r0,#0xFFFF
44 DCD 0xE34F0FFF
45 mov pc,lr
46 ENTRY_END
47 endp
49 ;; Test for VFP support.
50 FUNC_HEADER js_arm_try_vfp_op
51 ;; fmdrr d0, r0, r1
52 DCD 0xEC410B10
53 mov pc,lr
54 ENTRY_END
55 endp
57 ;; Tests for each architecture version.
59 FUNC_HEADER js_arm_try_armv7_op
60 ;; pli pc, #0
61 DCD 0xF45FF000
62 mov pc, lr
63 ENTRY_END
64 endp
66 FUNC_HEADER js_arm_try_armv6_op
67 ;; rev ip, ip
68 DCD 0xE6BFCF3C
69 mov pc, lr
70 ENTRY_END
71 endp
73 FUNC_HEADER js_arm_try_armv5_op
74 ;; clz ip, ip
75 DCD 0xE16FCF1C
76 mov pc, lr
77 ENTRY_END
78 endp
80 ;; --------
82 end