diff options
author | nobody <> | 2005-03-25 02:21:46 +0000 |
---|---|---|
committer | nobody <> | 2005-03-25 02:21:46 +0000 |
commit | 952532d24f09bda0a80674b23f397731d8cff0bc (patch) | |
tree | d40ee645519aef19455450c250ede56f0eb38864 | |
parent | ef30d2dc82da44c2430010f847c4a4e0eb72bf7a (diff) | |
download | binutils-gdb-952532d24f09bda0a80674b23f397731d8cff0bc.tar.gz |
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*.':
gas/config/te-armeabi.h
gas/testsuite/gas/arm/archv6t2-bad.l
gas/testsuite/gas/arm/archv6t2-bad.s
gas/testsuite/gas/arm/archv6t2.d
gas/testsuite/gas/arm/archv6t2.s
gas/testsuite/gas/arm/thumbv6k.d
gas/testsuite/gas/arm/thumbv6k.s
-rw-r--r-- | gas/config/te-armeabi.h | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/archv6t2-bad.l | 38 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/archv6t2-bad.s | 53 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/archv6t2.d | 51 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/archv6t2.s | 55 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/thumbv6k.d | 15 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/thumbv6k.s | 14 |
7 files changed, 234 insertions, 0 deletions
diff --git a/gas/config/te-armeabi.h b/gas/config/te-armeabi.h new file mode 100644 index 00000000000..74535931982 --- /dev/null +++ b/gas/config/te-armeabi.h @@ -0,0 +1,8 @@ +/* The EABI requires the use of VFP. */ +#define FPU_DEFAULT FPU_ARCH_VFP_V2 +#define EABI_DEFAULT EF_ARM_EABI_VER4 + +#define LOCAL_LABELS_DOLLAR 1 +#define LOCAL_LABELS_FB 1 + +#include "obj-format.h" diff --git a/gas/testsuite/gas/arm/archv6t2-bad.l b/gas/testsuite/gas/arm/archv6t2-bad.l new file mode 100644 index 00000000000..e8da4b8aad2 --- /dev/null +++ b/gas/testsuite/gas/arm/archv6t2-bad.l @@ -0,0 +1,38 @@ +[^:]*: Assembler messages: +[^:]*:6: Error: r15 not allowed here -- `bfc pc,#0,#1' +[^:]*:7: Error: r15 not allowed here -- `bfi pc,r0,#0,#1' +[^:]*:8: Error: r15 not allowed here -- `movw pc,#0' +[^:]*:9: Error: r15 not allowed here -- `movt pc,#0' +[^:]*:12: Error: immediate value out of range -- `bfc r0,#0,#0' +[^:]*:13: Error: immediate value out of range -- `bfc r0,#32,#0' +[^:]*:14: Error: immediate value out of range -- `bfc r0,#0,#33' +[^:]*:15: Error: immediate value out of range -- `bfc r0,#33,#1' +[^:]*:16: Error: immediate value out of range -- `bfc r0,#32,#1' +[^:]*:17: Error: bit-field extends past end of register -- `bfc r0,#28,#10' +[^:]*:19: Error: immediate value out of range -- `bfi r0,r1,#0,#0' +[^:]*:20: Error: immediate value out of range -- `bfi r0,r1,#32,#0' +[^:]*:21: Error: immediate value out of range -- `bfi r0,r1,#0,#33' +[^:]*:22: Error: immediate value out of range -- `bfi r0,r1,#33,#1' +[^:]*:23: Error: immediate value out of range -- `bfi r0,r1,#32,#1' +[^:]*:24: Error: bit-field extends past end of register -- `bfi r0,r1,#28,#10' +[^:]*:26: Error: immediate value out of range -- `sbfx r0,r1,#0,#0' +[^:]*:27: Error: immediate value out of range -- `sbfx r0,r1,#32,#0' +[^:]*:28: Error: immediate value out of range -- `sbfx r0,r1,#0,#33' +[^:]*:29: Error: immediate value out of range -- `sbfx r0,r1,#33,#1' +[^:]*:30: Error: immediate value out of range -- `sbfx r0,r1,#32,#1' +[^:]*:31: Error: bit-field extends past end of register -- `sbfx r0,r1,#28,#10' +[^:]*:33: Error: immediate value out of range -- `ubfx r0,r1,#0,#0' +[^:]*:34: Error: immediate value out of range -- `ubfx r0,r1,#32,#0' +[^:]*:35: Error: immediate value out of range -- `ubfx r0,r1,#0,#33' +[^:]*:36: Error: immediate value out of range -- `ubfx r0,r1,#33,#1' +[^:]*:37: Error: immediate value out of range -- `ubfx r0,r1,#32,#1' +[^:]*:38: Error: bit-field extends past end of register -- `ubfx r0,r1,#28,#10' +[^:]*:41: Error: immediate value out of range -- `bfi r0,#1,#2,#3' +[^:]*:44: Error: immediate value out of range -- `movt r0,#65537' +[^:]*:45: Error: immediate value out of range -- `movw r0,#65537' +[^:]*:46: Error: immediate value out of range -- `movt r0,#-1' +[^:]*:47: Error: immediate value out of range -- `movw r0,#-1' +[^:]*:50: Warning: destination register same as write-back base +[^:]*:51: Warning: destination register same as write-back base +[^:]*:52: Warning: destination register same as write-back base +[^:]*:53: Warning: source register same as write-back base diff --git a/gas/testsuite/gas/arm/archv6t2-bad.s b/gas/testsuite/gas/arm/archv6t2-bad.s new file mode 100644 index 00000000000..e56886912fb --- /dev/null +++ b/gas/testsuite/gas/arm/archv6t2-bad.s @@ -0,0 +1,53 @@ + @ We do not bother testing simple cases, e.g. immediates where + @ registers belong, trailing junk at end of line. + .text +x: + @ pc not allowed + bfc pc,#0,#1 + bfi pc,r0,#0,#1 + movw pc,#0 + movt pc,#0 + + @ bitfield range limits + bfc r0,#0,#0 + bfc r0,#32,#0 + bfc r0,#0,#33 + bfc r0,#33,#1 + bfc r0,#32,#1 + bfc r0,#28,#10 + + bfi r0,r1,#0,#0 + bfi r0,r1,#32,#0 + bfi r0,r1,#0,#33 + bfi r0,r1,#33,#1 + bfi r0,r1,#32,#1 + bfi r0,r1,#28,#10 + + sbfx r0,r1,#0,#0 + sbfx r0,r1,#32,#0 + sbfx r0,r1,#0,#33 + sbfx r0,r1,#33,#1 + sbfx r0,r1,#32,#1 + sbfx r0,r1,#28,#10 + + ubfx r0,r1,#0,#0 + ubfx r0,r1,#32,#0 + ubfx r0,r1,#0,#33 + ubfx r0,r1,#33,#1 + ubfx r0,r1,#32,#1 + ubfx r0,r1,#28,#10 + + @ bfi accepts only #0 in Rm position + bfi r0,#1,#2,#3 + + @ mov16 range limits + movt r0,#65537 + movw r0,#65537 + movt r0,#-1 + movw r0,#-1 + + @ ldsttv4 Rd == Rn (warning) + ldrht r0,[r0] + ldrsbt r0,[r0] + ldrsht r0,[r0] + strht r0,[r0] diff --git a/gas/testsuite/gas/arm/archv6t2.d b/gas/testsuite/gas/arm/archv6t2.d new file mode 100644 index 00000000000..8e8b0387a33 --- /dev/null +++ b/gas/testsuite/gas/arm/archv6t2.d @@ -0,0 +1,51 @@ +#name: ARM V6T2 instructions +#as: -march=armv6t2 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*arm.* + +Disassembly of section .text: +0+00 <[^>]+> e7c00010 bfi r0, r0, #0, #1 +0+04 <[^>]+> 17c00010 bfine r0, r0, #0, #1 +0+08 <[^>]+> e7c09010 bfi r9, r0, #0, #1 +0+0c <[^>]+> e7c00019 bfi r0, r9, #0, #1 +0+10 <[^>]+> e7d10010 bfi r0, r0, #0, #18 +0+14 <[^>]+> e7d10890 bfi r0, r0, #17, #1 +0+18 <[^>]+> e7c0001f bfc r0, #0, #1 +0+1c <[^>]+> e7c0001f bfc r0, #0, #1 +0+20 <[^>]+> 17c0001f bfcne r0, #0, #1 +0+24 <[^>]+> e7c0901f bfc r9, #0, #1 +0+28 <[^>]+> e7d1001f bfc r0, #0, #18 +0+2c <[^>]+> e7d1089f bfc r0, #17, #1 +0+30 <[^>]+> e7a00050 sbfx r0, r0, #0, #1 +0+34 <[^>]+> 17a00050 sbfxne r0, r0, #0, #1 +0+38 <[^>]+> e7e00050 ubfx r0, r0, #0, #1 +0+3c <[^>]+> e7a09050 sbfx r9, r0, #0, #1 +0+40 <[^>]+> e7a00059 sbfx r0, r9, #0, #1 +0+44 <[^>]+> e7a008d0 sbfx r0, r0, #17, #1 +0+48 <[^>]+> e7b10050 sbfx r0, r0, #0, #18 +0+4c <[^>]+> e3ff0f30 rbit r0, r0 +0+50 <[^>]+> 13ff0f30 rbitne r0, r0 +0+54 <[^>]+> e3ff9f30 rbit r9, r0 +0+58 <[^>]+> e3ff0f39 rbit r0, r9 +0+5c <[^>]+> e0600090 mls r0, r0, r0, r0 +0+60 <[^>]+> 10600090 mlsne r0, r0, r0, r0 +0+64 <[^>]+> e0690090 mls r9, r0, r0, r0 +0+68 <[^>]+> e0600099 mls r0, r9, r0, r0 +0+6c <[^>]+> e0600990 mls r0, r0, r9, r0 +0+70 <[^>]+> e0609090 mls r0, r0, r0, r9 +0+74 <[^>]+> e3000000 movw r0, #0 ; 0x0 +0+78 <[^>]+> e3400000 movt r0, #0 ; 0x0 +0+7c <[^>]+> 13000000 movwne r0, #0 ; 0x0 +0+80 <[^>]+> e3009000 movw r9, #0 ; 0x0 +0+84 <[^>]+> e3000999 movw r0, #2457 ; 0x999 +0+88 <[^>]+> e3090000 movw r0, #36864 ; 0x9000 +0+8c <[^>]+> e0f900b0 ldrht r0, \[r9\] +0+90 <[^>]+> e0f900f0 ldrsht r0, \[r9\] +0+94 <[^>]+> e0f900d0 ldrsbt r0, \[r9\] +0+98 <[^>]+> e0e900b0 strht r0, \[r9\] +0+9c <[^>]+> 10f900b0 ldrneht r0, \[r9\] +0+a0 <[^>]+> e0b090b9 ldrht r9, \[r0\], r9 +0+a4 <[^>]+> e03090b9 ldrht r9, \[r0\], -r9 +0+a8 <[^>]+> e0f099b9 ldrht r9, \[r0\], #153 +0+ac <[^>]+> e07099b9 ldrht r9, \[r0\], #-153 diff --git a/gas/testsuite/gas/arm/archv6t2.s b/gas/testsuite/gas/arm/archv6t2.s new file mode 100644 index 00000000000..292f11cf5db --- /dev/null +++ b/gas/testsuite/gas/arm/archv6t2.s @@ -0,0 +1,55 @@ + .text +x: + bfi r0, r0, #0, #1 + bfine r0, r0, #0, #1 + + bfi r9, r0, #0, #1 + bfi r0, r9, #0, #1 + bfi r0, r0, #0, #18 + bfi r0, r0, #17, #1 + + bfi r0, #0, #0, #1 + bfc r0, #0, #1 + bfcne r0, #0, #1 + bfc r9, #0, #1 + bfc r0, #0, #18 + bfc r0, #17, #1 + + sbfx r0, r0, #0, #1 + sbfxne r0, r0, #0, #1 + ubfx r0, r0, #0, #1 + sbfx r9, r0, #0, #1 + sbfx r0, r9, #0, #1 + sbfx r0, r0, #17, #1 + sbfx r0, r0, #0, #18 + + rbit r0, r0 + rbitne r0, r0 + rbit r9, r0 + rbit r0, r9 + + mls r0, r0, r0, r0 + mlsne r0, r0, r0, r0 + mls r9, r0, r0, r0 + mls r0, r9, r0, r0 + mls r0, r0, r9, r0 + mls r0, r0, r0, r9 + + movw r0, #0 + movt r0, #0 + movwne r0, #0 + movw r9, #0 + movw r0, #0x0999 + movw r0, #0x9000 + + @ for these, we must avoid write-back warnings + ldrht r0, [r9] + ldrsht r0, [r9] + ldrsbt r0, [r9] + strht r0, [r9] + ldrneht r0, [r9] + + ldrht r9, [r0], r9 + ldrht r9, [r0], -r9 + ldrht r9, [r0], #0x99 + ldrht r9, [r0], #-0x99 diff --git a/gas/testsuite/gas/arm/thumbv6k.d b/gas/testsuite/gas/arm/thumbv6k.d new file mode 100644 index 00000000000..54a1d31ca63 --- /dev/null +++ b/gas/testsuite/gas/arm/thumbv6k.d @@ -0,0 +1,15 @@ +#name: THUMB V6K instructions +#as: -march=armv6k -mthumb +#objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb + +.*: +file format .*arm.* + +Disassembly of section .text: +0+000 <[^>]*> bf10 * yield +0+002 <[^>]*> bf20 * wfe +0+004 <[^>]*> bf30 * wfi +0+006 <[^>]*> bf40 * sev +0+008 <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) +0+00a <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) +0+00c <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) +0+00e <[^>]*> 46c0 * nop[ \t]+\(mov r8, r8\) diff --git a/gas/testsuite/gas/arm/thumbv6k.s b/gas/testsuite/gas/arm/thumbv6k.s new file mode 100644 index 00000000000..86198432396 --- /dev/null +++ b/gas/testsuite/gas/arm/thumbv6k.s @@ -0,0 +1,14 @@ + .text + .align 0 + .thumb +label: + yield + wfe + wfi + sev + # arm-aout wants the segment padded to an 16-byte boundary; + # do this explicitly so it's consistent for all object formats. + nop + nop + nop + nop |