#
# Some generic m68k tests
#
if [istarget "m68hc11-*-*"] then {
   return
}
if [istarget "m68hc12-*-*"] then {
   return
}
if [istarget "m6811-*-*"] then {
   return
}
if [istarget "m6812-*-*"] then {
   return
}
if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
    gas_test "t2.s" "" "" "cross-section branch"
    if [istarget m68*-motorola-sysv] then {
	run_dump_test t2
    }

    gas_test "pic1.s" "" "" "PIC generation"

    gas_test "disperr.s" "-m68020" "" "Incorrect Displacement too long error"

    gas_test_error "p2410.s" "" "out-of-range 'bras'"

    # Reloc types etc. need changing for aout and coff to pass.
    setup_xfail "*-*"
    clear_xfail "*-*-*elf*" "*-*-sysv4*" "*-*-rtems" "*-*-*gnu*" "*-*-psos*"
    run_dump_test pcrel

    # Since fido is basically CPU32, it does not support those
    # instructions beyond CPU32.  Disable those tests that test them.
    if ![istarget fido-*-*] then {
	run_dump_test operands
	run_dump_test cas
	run_dump_test bitfield
    } else {
	# Test fido-specific instructions.
	run_dump_test fido
    }

    run_dump_test link

    # fido does not have a floating point unit.
    if ![istarget fido-*-*] then {
	run_dump_test fmoveml
    }

    run_dump_test mcf-mov3q
    run_dump_test mcf-movsr
    run_dump_test mode5
    run_dump_test mcf-mac
    run_dump_test mcf-emac
    run_dump_test mcf-coproc
    run_dump_test mcf-fpu
    run_dump_test mcf-trap
    run_dump_test mcf-wdebug
    if { [istarget *-*-elf] || [istarget *-*-linux*] } then {
      run_dump_test arch-cpu-1
    }
    run_dump_test cpu32

    run_dump_test br-isaa
    run_dump_test br-isab
    run_dump_test br-isac

    run_dump_test ctrl-1
    run_dump_test ctrl-2

    if { [istarget *-*-netbsd] } then {
      run_dump_test p3041
      run_dump_test p3041data
    }

    set testname "68000 operands"
    gas_run "operands.s" "-m68000" "2>err.out"
    if ![string match "child process exited abnormally" $comp_output] then {
	send_log "$comp_output\n"
	verbose "$comp_output" 3
	fail $testname
    } else {
	if [regexp_diff "err.out" "$srcdir/$subdir/op68000.d"] then {
	    fail $testname
	} else {
	    pass $testname
	}
    }

    if { [istarget m68k-*-linux*] } then {
      run_dump_test tls-gd-3
    }
}
if [info exists errorInfo] then {
    unset errorInfo
}
