1# Copyright (C) 2012-2016 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
16
17#
18# Some generic m68k tests
19#
20if [istarget "m68hc11-*-*"] then {
21   return
22}
23if [istarget "m68hc12-*-*"] then {
24   return
25}
26if [istarget "m6811-*-*"] then {
27   return
28}
29if [istarget "m6812-*-*"] then {
30   return
31}
32if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
33    gas_test "t2.s" "" "" "cross-section branch"
34    if [istarget m68*-motorola-sysv] then {
35	run_dump_test t2
36    }
37
38    gas_test "pic1.s" "" "" "PIC generation"
39
40    gas_test "disperr.s" "-m68020" "" "Incorrect Displacement too long error"
41
42    gas_test_error "p2410.s" "" "out-of-range 'bras'"
43
44    # Reloc types etc. need changing for aout and coff to pass.
45    setup_xfail "*-*"
46    clear_xfail "*-*-*elf*" "*-*-sysv4*" "*-*-rtems*" "*-*-*linux*" "*-*-*gnu*" "*-*-psos*"
47    run_dump_test pcrel
48
49    # Since fido is basically CPU32, it does not support those
50    # instructions beyond CPU32.  Disable those tests that test them.
51    if ![istarget fido-*-*] then {
52	run_dump_test operands
53	run_dump_test cas
54	run_dump_test bitfield
55    } else {
56	# Test fido-specific instructions.
57	run_dump_test fido
58    }
59
60    run_dump_test link
61
62    # fido does not have a floating point unit.
63    if ![istarget fido-*-*] then {
64	run_dump_test fmoveml
65    }
66
67    run_dump_test mcf-mov3q
68    run_dump_test mcf-movsr
69    run_dump_test mode5
70    run_dump_test mode5 "{name {cf}} {as {-mcpu=5200}}"
71    run_dump_test movem-offset
72    run_dump_test movem-offset "{name {cf}} {as {-mcpu=5485}}"
73    run_dump_test mcf-mac
74    run_dump_test mcf-emac
75    run_dump_test mcf-coproc
76    run_dump_test mcf-fpu
77    run_dump_test mcf-trap
78    run_dump_test mcf-wdebug
79    if { [istarget *-*-elf] || [istarget *-*-linux*] } then {
80      run_dump_test arch-cpu-1
81    }
82    run_dump_test cpu32
83
84    run_dump_test br-isaa
85    run_dump_test br-isab
86    run_dump_test br-isac
87
88    run_dump_test ctrl-1
89    run_dump_test ctrl-2
90
91    gas_test_error "p11673.s" "-march=isab" "movel immediate with offset unsupported on isab"
92
93    gas_test_error "p13050-1.s" "-march=isab" "moveb (d8,An,Xi),(d16,An) unsupported on isab"
94    run_dump_test p13050-2
95
96    if { [istarget *-*-*aout] || [istarget *-*-netbsd] || [istarget *-*-openbsd*] } then {
97      run_dump_test p3041
98      run_dump_test p3041data
99      run_dump_test p3041pcrel
100    }
101
102    set testname "68000 operands"
103    gas_run "operands.s" "-m68000" "2>err.out"
104    if ![string match "child process exited abnormally" $comp_output] then {
105	send_log "$comp_output\n"
106	verbose "$comp_output" 3
107	fail $testname
108    } else {
109	if [regexp_diff "err.out" "$srcdir/$subdir/op68000.d"] then {
110	    fail $testname
111	} else {
112	    pass $testname
113	}
114    }
115
116    if { [istarget m68k-*-linux*] } then {
117      run_dump_test tls-gd-3
118    }
119
120    if { ! [istarget fido-*-*] } then {
121      # The testcase uses an invalid instruction for this architecture.
122      run_dump_test pr11676
123    }
124
125    run_dump_test pmove
126}
127if [info exists errorInfo] then {
128    unset errorInfo
129}
130