]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
This commit was manufactured by cvs2svn to create branch 'binutils-csl-arm-
authornobody <>
Fri, 25 Mar 2005 02:21:46 +0000 (02:21 +0000)
committernobody <>
Fri, 25 Mar 2005 02:21:46 +0000 (02:21 +0000)
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

gas/config/te-armeabi.h [new file with mode: 0644]
gas/testsuite/gas/arm/archv6t2-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/archv6t2-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/archv6t2.d [new file with mode: 0644]
gas/testsuite/gas/arm/archv6t2.s [new file with mode: 0644]
gas/testsuite/gas/arm/thumbv6k.d [new file with mode: 0644]
gas/testsuite/gas/arm/thumbv6k.s [new file with mode: 0644]

diff --git a/gas/config/te-armeabi.h b/gas/config/te-armeabi.h
new file mode 100644 (file)
index 0000000..7453593
--- /dev/null
@@ -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 (file)
index 0000000..e8da4b8
--- /dev/null
@@ -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 (file)
index 0000000..e568869
--- /dev/null
@@ -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 (file)
index 0000000..8e8b038
--- /dev/null
@@ -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 (file)
index 0000000..292f11c
--- /dev/null
@@ -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 (file)
index 0000000..54a1d31
--- /dev/null
@@ -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 (file)
index 0000000..8619843
--- /dev/null
@@ -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