GNU Binutils with patches for OS216
修订版 | 952532d24f09bda0a80674b23f397731d8cff0bc (tree) |
---|---|
时间 | 2005-03-25 11:21:46 |
作者 | nobody <> |
Commiter | nobody <> |
This commit was manufactured by cvs2svn to create branch 'binutils-csl-arm-
2005q1-branch'.
Sprout from binutils-2_16-branch 2005-03-25 02:21:44 UTC Mark Mitchell <mark@codesourcery.com> ' * config/default.exp: Do not load libpath.exp if it does not'
Cherrypick from master 2005-03-16 17:27:17 UTC Daniel Jacobowitz <drow@false.org> ' * configure.tgt: Set emulation for arm-*-eabi*.':
@@ -0,0 +1,8 @@ | ||
1 | +/* The EABI requires the use of VFP. */ | |
2 | +#define FPU_DEFAULT FPU_ARCH_VFP_V2 | |
3 | +#define EABI_DEFAULT EF_ARM_EABI_VER4 | |
4 | + | |
5 | +#define LOCAL_LABELS_DOLLAR 1 | |
6 | +#define LOCAL_LABELS_FB 1 | |
7 | + | |
8 | +#include "obj-format.h" |
@@ -0,0 +1,38 @@ | ||
1 | +[^:]*: Assembler messages: | |
2 | +[^:]*:6: Error: r15 not allowed here -- `bfc pc,#0,#1' | |
3 | +[^:]*:7: Error: r15 not allowed here -- `bfi pc,r0,#0,#1' | |
4 | +[^:]*:8: Error: r15 not allowed here -- `movw pc,#0' | |
5 | +[^:]*:9: Error: r15 not allowed here -- `movt pc,#0' | |
6 | +[^:]*:12: Error: immediate value out of range -- `bfc r0,#0,#0' | |
7 | +[^:]*:13: Error: immediate value out of range -- `bfc r0,#32,#0' | |
8 | +[^:]*:14: Error: immediate value out of range -- `bfc r0,#0,#33' | |
9 | +[^:]*:15: Error: immediate value out of range -- `bfc r0,#33,#1' | |
10 | +[^:]*:16: Error: immediate value out of range -- `bfc r0,#32,#1' | |
11 | +[^:]*:17: Error: bit-field extends past end of register -- `bfc r0,#28,#10' | |
12 | +[^:]*:19: Error: immediate value out of range -- `bfi r0,r1,#0,#0' | |
13 | +[^:]*:20: Error: immediate value out of range -- `bfi r0,r1,#32,#0' | |
14 | +[^:]*:21: Error: immediate value out of range -- `bfi r0,r1,#0,#33' | |
15 | +[^:]*:22: Error: immediate value out of range -- `bfi r0,r1,#33,#1' | |
16 | +[^:]*:23: Error: immediate value out of range -- `bfi r0,r1,#32,#1' | |
17 | +[^:]*:24: Error: bit-field extends past end of register -- `bfi r0,r1,#28,#10' | |
18 | +[^:]*:26: Error: immediate value out of range -- `sbfx r0,r1,#0,#0' | |
19 | +[^:]*:27: Error: immediate value out of range -- `sbfx r0,r1,#32,#0' | |
20 | +[^:]*:28: Error: immediate value out of range -- `sbfx r0,r1,#0,#33' | |
21 | +[^:]*:29: Error: immediate value out of range -- `sbfx r0,r1,#33,#1' | |
22 | +[^:]*:30: Error: immediate value out of range -- `sbfx r0,r1,#32,#1' | |
23 | +[^:]*:31: Error: bit-field extends past end of register -- `sbfx r0,r1,#28,#10' | |
24 | +[^:]*:33: Error: immediate value out of range -- `ubfx r0,r1,#0,#0' | |
25 | +[^:]*:34: Error: immediate value out of range -- `ubfx r0,r1,#32,#0' | |
26 | +[^:]*:35: Error: immediate value out of range -- `ubfx r0,r1,#0,#33' | |
27 | +[^:]*:36: Error: immediate value out of range -- `ubfx r0,r1,#33,#1' | |
28 | +[^:]*:37: Error: immediate value out of range -- `ubfx r0,r1,#32,#1' | |
29 | +[^:]*:38: Error: bit-field extends past end of register -- `ubfx r0,r1,#28,#10' | |
30 | +[^:]*:41: Error: immediate value out of range -- `bfi r0,#1,#2,#3' | |
31 | +[^:]*:44: Error: immediate value out of range -- `movt r0,#65537' | |
32 | +[^:]*:45: Error: immediate value out of range -- `movw r0,#65537' | |
33 | +[^:]*:46: Error: immediate value out of range -- `movt r0,#-1' | |
34 | +[^:]*:47: Error: immediate value out of range -- `movw r0,#-1' | |
35 | +[^:]*:50: Warning: destination register same as write-back base | |
36 | +[^:]*:51: Warning: destination register same as write-back base | |
37 | +[^:]*:52: Warning: destination register same as write-back base | |
38 | +[^:]*:53: Warning: source register same as write-back base |
@@ -0,0 +1,53 @@ | ||
1 | + @ We do not bother testing simple cases, e.g. immediates where | |
2 | + @ registers belong, trailing junk at end of line. | |
3 | + .text | |
4 | +x: | |
5 | + @ pc not allowed | |
6 | + bfc pc,#0,#1 | |
7 | + bfi pc,r0,#0,#1 | |
8 | + movw pc,#0 | |
9 | + movt pc,#0 | |
10 | + | |
11 | + @ bitfield range limits | |
12 | + bfc r0,#0,#0 | |
13 | + bfc r0,#32,#0 | |
14 | + bfc r0,#0,#33 | |
15 | + bfc r0,#33,#1 | |
16 | + bfc r0,#32,#1 | |
17 | + bfc r0,#28,#10 | |
18 | + | |
19 | + bfi r0,r1,#0,#0 | |
20 | + bfi r0,r1,#32,#0 | |
21 | + bfi r0,r1,#0,#33 | |
22 | + bfi r0,r1,#33,#1 | |
23 | + bfi r0,r1,#32,#1 | |
24 | + bfi r0,r1,#28,#10 | |
25 | + | |
26 | + sbfx r0,r1,#0,#0 | |
27 | + sbfx r0,r1,#32,#0 | |
28 | + sbfx r0,r1,#0,#33 | |
29 | + sbfx r0,r1,#33,#1 | |
30 | + sbfx r0,r1,#32,#1 | |
31 | + sbfx r0,r1,#28,#10 | |
32 | + | |
33 | + ubfx r0,r1,#0,#0 | |
34 | + ubfx r0,r1,#32,#0 | |
35 | + ubfx r0,r1,#0,#33 | |
36 | + ubfx r0,r1,#33,#1 | |
37 | + ubfx r0,r1,#32,#1 | |
38 | + ubfx r0,r1,#28,#10 | |
39 | + | |
40 | + @ bfi accepts only #0 in Rm position | |
41 | + bfi r0,#1,#2,#3 | |
42 | + | |
43 | + @ mov16 range limits | |
44 | + movt r0,#65537 | |
45 | + movw r0,#65537 | |
46 | + movt r0,#-1 | |
47 | + movw r0,#-1 | |
48 | + | |
49 | + @ ldsttv4 Rd == Rn (warning) | |
50 | + ldrht r0,[r0] | |
51 | + ldrsbt r0,[r0] | |
52 | + ldrsht r0,[r0] | |
53 | + strht r0,[r0] |
@@ -0,0 +1,51 @@ | ||
1 | +#name: ARM V6T2 instructions | |
2 | +#as: -march=armv6t2 | |
3 | +#objdump: -dr --prefix-addresses --show-raw-insn | |
4 | + | |
5 | +.*: +file format .*arm.* | |
6 | + | |
7 | +Disassembly of section .text: | |
8 | +0+00 <[^>]+> e7c00010 bfi r0, r0, #0, #1 | |
9 | +0+04 <[^>]+> 17c00010 bfine r0, r0, #0, #1 | |
10 | +0+08 <[^>]+> e7c09010 bfi r9, r0, #0, #1 | |
11 | +0+0c <[^>]+> e7c00019 bfi r0, r9, #0, #1 | |
12 | +0+10 <[^>]+> e7d10010 bfi r0, r0, #0, #18 | |
13 | +0+14 <[^>]+> e7d10890 bfi r0, r0, #17, #1 | |
14 | +0+18 <[^>]+> e7c0001f bfc r0, #0, #1 | |
15 | +0+1c <[^>]+> e7c0001f bfc r0, #0, #1 | |
16 | +0+20 <[^>]+> 17c0001f bfcne r0, #0, #1 | |
17 | +0+24 <[^>]+> e7c0901f bfc r9, #0, #1 | |
18 | +0+28 <[^>]+> e7d1001f bfc r0, #0, #18 | |
19 | +0+2c <[^>]+> e7d1089f bfc r0, #17, #1 | |
20 | +0+30 <[^>]+> e7a00050 sbfx r0, r0, #0, #1 | |
21 | +0+34 <[^>]+> 17a00050 sbfxne r0, r0, #0, #1 | |
22 | +0+38 <[^>]+> e7e00050 ubfx r0, r0, #0, #1 | |
23 | +0+3c <[^>]+> e7a09050 sbfx r9, r0, #0, #1 | |
24 | +0+40 <[^>]+> e7a00059 sbfx r0, r9, #0, #1 | |
25 | +0+44 <[^>]+> e7a008d0 sbfx r0, r0, #17, #1 | |
26 | +0+48 <[^>]+> e7b10050 sbfx r0, r0, #0, #18 | |
27 | +0+4c <[^>]+> e3ff0f30 rbit r0, r0 | |
28 | +0+50 <[^>]+> 13ff0f30 rbitne r0, r0 | |
29 | +0+54 <[^>]+> e3ff9f30 rbit r9, r0 | |
30 | +0+58 <[^>]+> e3ff0f39 rbit r0, r9 | |
31 | +0+5c <[^>]+> e0600090 mls r0, r0, r0, r0 | |
32 | +0+60 <[^>]+> 10600090 mlsne r0, r0, r0, r0 | |
33 | +0+64 <[^>]+> e0690090 mls r9, r0, r0, r0 | |
34 | +0+68 <[^>]+> e0600099 mls r0, r9, r0, r0 | |
35 | +0+6c <[^>]+> e0600990 mls r0, r0, r9, r0 | |
36 | +0+70 <[^>]+> e0609090 mls r0, r0, r0, r9 | |
37 | +0+74 <[^>]+> e3000000 movw r0, #0 ; 0x0 | |
38 | +0+78 <[^>]+> e3400000 movt r0, #0 ; 0x0 | |
39 | +0+7c <[^>]+> 13000000 movwne r0, #0 ; 0x0 | |
40 | +0+80 <[^>]+> e3009000 movw r9, #0 ; 0x0 | |
41 | +0+84 <[^>]+> e3000999 movw r0, #2457 ; 0x999 | |
42 | +0+88 <[^>]+> e3090000 movw r0, #36864 ; 0x9000 | |
43 | +0+8c <[^>]+> e0f900b0 ldrht r0, \[r9\] | |
44 | +0+90 <[^>]+> e0f900f0 ldrsht r0, \[r9\] | |
45 | +0+94 <[^>]+> e0f900d0 ldrsbt r0, \[r9\] | |
46 | +0+98 <[^>]+> e0e900b0 strht r0, \[r9\] | |
47 | +0+9c <[^>]+> 10f900b0 ldrneht r0, \[r9\] | |
48 | +0+a0 <[^>]+> e0b090b9 ldrht r9, \[r0\], r9 | |
49 | +0+a4 <[^>]+> e03090b9 ldrht r9, \[r0\], -r9 | |
50 | +0+a8 <[^>]+> e0f099b9 ldrht r9, \[r0\], #153 | |
51 | +0+ac <[^>]+> e07099b9 ldrht r9, \[r0\], #-153 |
@@ -0,0 +1,55 @@ | ||
1 | + .text | |
2 | +x: | |
3 | + bfi r0, r0, #0, #1 | |
4 | + bfine r0, r0, #0, #1 | |
5 | + | |
6 | + bfi r9, r0, #0, #1 | |
7 | + bfi r0, r9, #0, #1 | |
8 | + bfi r0, r0, #0, #18 | |
9 | + bfi r0, r0, #17, #1 | |
10 | + | |
11 | + bfi r0, #0, #0, #1 | |
12 | + bfc r0, #0, #1 | |
13 | + bfcne r0, #0, #1 | |
14 | + bfc r9, #0, #1 | |
15 | + bfc r0, #0, #18 | |
16 | + bfc r0, #17, #1 | |
17 | + | |
18 | + sbfx r0, r0, #0, #1 | |
19 | + sbfxne r0, r0, #0, #1 | |
20 | + ubfx r0, r0, #0, #1 | |
21 | + sbfx r9, r0, #0, #1 | |
22 | + sbfx r0, r9, #0, #1 | |
23 | + sbfx r0, r0, #17, #1 | |
24 | + sbfx r0, r0, #0, #18 | |
25 | + | |
26 | + rbit r0, r0 | |
27 | + rbitne r0, r0 | |
28 | + rbit r9, r0 | |
29 | + rbit r0, r9 | |
30 | + | |
31 | + mls r0, r0, r0, r0 | |
32 | + mlsne r0, r0, r0, r0 | |
33 | + mls r9, r0, r0, r0 | |
34 | + mls r0, r9, r0, r0 | |
35 | + mls r0, r0, r9, r0 | |
36 | + mls r0, r0, r0, r9 | |
37 | + | |
38 | + movw r0, #0 | |
39 | + movt r0, #0 | |
40 | + movwne r0, #0 | |
41 | + movw r9, #0 | |
42 | + movw r0, #0x0999 | |
43 | + movw r0, #0x9000 | |
44 | + | |
45 | + @ for these, we must avoid write-back warnings | |
46 | + ldrht r0, [r9] | |
47 | + ldrsht r0, [r9] | |
48 | + ldrsbt r0, [r9] | |
49 | + strht r0, [r9] | |
50 | + ldrneht r0, [r9] | |
51 | + | |
52 | + ldrht r9, [r0], r9 | |
53 | + ldrht r9, [r0], -r9 | |
54 | + ldrht r9, [r0], #0x99 | |
55 | + ldrht r9, [r0], #-0x99 |
@@ -0,0 +1,15 @@ | ||
1 | +#name: THUMB V6K instructions | |
2 | +#as: -march=armv6k -mthumb | |
3 | +#objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb | |
4 | + | |
5 | +.*: +file format .*arm.* | |
6 | + | |
7 | +Disassembly of section .text: | |
8 | +0+000 <[^>]*> bf10 * yield | |
9 | +0+002 <[^>]*> bf20 * wfe | |
10 | +0+004 <[^>]*> bf30 * wfi | |
11 | +0+006 <[^>]*> bf40 * sev | |
12 | +0+008 <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) | |
13 | +0+00a <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) | |
14 | +0+00c <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) | |
15 | +0+00e <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) |
@@ -0,0 +1,14 @@ | ||
1 | + .text | |
2 | + .align 0 | |
3 | + .thumb | |
4 | +label: | |
5 | + yield | |
6 | + wfe | |
7 | + wfi | |
8 | + sev | |
9 | + # arm-aout wants the segment padded to an 16-byte boundary; | |
10 | + # do this explicitly so it's consistent for all object formats. | |
11 | + nop | |
12 | + nop | |
13 | + nop | |
14 | + nop |