gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies.

contrib:
	* gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies.

gcc:
	* config/m68k/genopt.sh, config/m68k/m68k-isas.def,
	config/m68k/m68k-microarchs.def, config/m68k/m68k-opts.h,
	config/m68k/t-opts: New files.
	* config/m68k/m68k-tables.opt: New file (generated).
	* config.gcc (fido-*-*, m68k-*-*): Add m68k/m68k-tables.opt to
	extra_options and m68k/t-opts to tmake_file.
	* config/m68k/m68k.c (m68k_library_id_string): More to m68k.opt.
	(all_isas): Initialize using m68k-isas.def.
	(all_microarchs): Initialize using m68k-microarchs.def.
	(m68k_find_selection): Remove.
	(m68k_handle_option): Don't assert that global structures are in
	use.  Use error_at.  Access variables via opts pointer.  Don't
	handle -march=, -mcpu= and -mtune= here.  Set gcc_options fields
	directly for -m68020-40 and -m68020-60.
	(m68k_option_override): Set m68k_arch_entry, m68k_cpu_entry and
	m68k_tune_entry here.
	* config/m68k/m68k.h (enum uarch_type, enum target_device): Move
	to m68k-opts.h.
	(m68k_library_id_string): Remove declaration.
	* config/m68k/m68k.opt (config/m68k/m68k-opts.h): New
	HeaderInclude.
	(m68k_library_id_string): New Variable.
	(march=, mcpu=, mtune=): Use Enum and Var.

From-SVN: r173256
This commit is contained in:
Joseph Myers 2011-05-02 16:42:39 +01:00 committed by Joseph Myers
parent e562bf36b6
commit 47c94d21e4
13 changed files with 733 additions and 113 deletions

View File

@ -1,3 +1,7 @@
2011-05-02 Joseph Myers <joseph@codesourcery.com>
* gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies.
2011-04-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* paranoia.cc (ENUM_BITFIELD): Remove.

View File

@ -81,6 +81,7 @@ gcc/config.in: gcc/cstamp-h.in
gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
gcc/config/arm/arm-tune.md: gcc/config/arm/arm-cores.def gcc/config/arm/gentune.sh
gcc/config/arm/arm-tables.opt: gcc/config/arm/arm-arches.def gcc/config/arm/arm-cores.def gcc/config/arm/genopt.sh
gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh
# And then, language-specific files
gcc/cp/cfns.h: gcc/cp/cfns.gperf
gcc/java/keyword.h: gcc/java/keyword.gperf

View File

@ -1,3 +1,29 @@
2011-05-02 Joseph Myers <joseph@codesourcery.com>
* config/m68k/genopt.sh, config/m68k/m68k-isas.def,
config/m68k/m68k-microarchs.def, config/m68k/m68k-opts.h,
config/m68k/t-opts: New files.
* config/m68k/m68k-tables.opt: New file (generated).
* config.gcc (fido-*-*, m68k-*-*): Add m68k/m68k-tables.opt to
extra_options and m68k/t-opts to tmake_file.
* config/m68k/m68k.c (m68k_library_id_string): More to m68k.opt.
(all_isas): Initialize using m68k-isas.def.
(all_microarchs): Initialize using m68k-microarchs.def.
(m68k_find_selection): Remove.
(m68k_handle_option): Don't assert that global structures are in
use. Use error_at. Access variables via opts pointer. Don't
handle -march=, -mcpu= and -mtune= here. Set gcc_options fields
directly for -m68020-40 and -m68020-60.
(m68k_option_override): Set m68k_arch_entry, m68k_cpu_entry and
m68k_tune_entry here.
* config/m68k/m68k.h (enum uarch_type, enum target_device): Move
to m68k-opts.h.
(m68k_library_id_string): Remove declaration.
* config/m68k/m68k.opt (config/m68k/m68k-opts.h): New
HeaderInclude.
(m68k_library_id_string): New Variable.
(march=, mcpu=, mtune=): Use Enum and Var.
2011-05-02 Richard Guenther <rguenther@suse.de>
* varasm.c (output_constructor_regular_field): Compute zero-based

View File

@ -317,6 +317,7 @@ moxie*) cpu_type=moxie
fido-*-*)
cpu_type=m68k
extra_headers=math-68881.h
extra_options="${extra_options} m68k/m68k-tables.opt"
;;
i[34567]86-*-*)
cpu_type=i386
@ -360,6 +361,7 @@ m32r*-*-*)
;;
m68k-*-*)
extra_headers=math-68881.h
extra_options="${extra_options} m68k/m68k-tables.opt"
;;
microblaze*-*-*)
cpu_type=microblaze
@ -3524,6 +3526,7 @@ case ${target} in
fido*-*-* | m68k*-*-*)
target_cpu_default2=$m68k_cpu_ident
tmake_file="m68k/t-opts $tmake_file"
if [ x"$m68k_arch_family" != x ]; then
tmake_file="m68k/t-$m68k_arch_family $tmake_file"
fi

92
gcc/config/m68k/genopt.sh Executable file
View File

@ -0,0 +1,92 @@
#!/bin/sh
# Generate m68k-tables.opt from the lists in *.def.
# Copyright (C) 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
cat <<EOF
; -*- buffer-read-only: t -*-
; Generated automatically by genopt.sh from m68k-devices.def,
; m68k-isas.def and m68k-microarchs.def.
; Copyright (C) 2011 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
; for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3. If not see
; <http://www.gnu.org/licenses/>.
Enum
Name(target_device) Type(enum target_device)
Known M68K CPUs (for use with the -mcpu= option):
EOF
awk -F'[(, ]+' '/^M68K_DEVICE/ {
name = $2
enum = $3
gsub("\"", "", name)
print "EnumValue"
print "Enum(target_device) String(" name ") Value(" enum ")"
print ""
}' $1/m68k-devices.def
cat <<EOF
Enum
Name(uarch_type) Type(enum uarch_type)
Known M68K microarchitectures (for use with the -mtune= option):
EOF
awk -F'[(, ]+' '/^M68K_MICROARCH/ {
name = $2
enum = $4
gsub("\"", "", name)
print "EnumValue"
print "Enum(uarch_type) String(" name ") Value(u" enum ")"
print ""
}' $1/m68k-microarchs.def
cat <<EOF
Enum
Name(m68k_isa) Type(int)
Known M68K ISAs (for use with the -march= option):
EOF
awk -F'[(, ]+' 'BEGIN {
value = 0
}
/^M68K_ISA/ {
name = $2
gsub("\"", "", name)
print "EnumValue"
print "Enum(m68k_isa) String(" name ") Value(" value ")"
print ""
value++
}' $1/m68k-isas.def

View File

@ -0,0 +1,43 @@
/* m68k ISA names.
Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* Define ISAs for the -march option, used both in m68k.c and to
generate m68k-tables.opt. Before including this file, define a
macro:
M68K_ISA (NAME, DEVICE, MICROARCH, ISA, FLAGS)
where NAME is the name for use with -march=, DEVICE is the value in
the target_device enumeration of a representative device, FLAGS is
the set of FL_* flags that apply to this ISA and the other
arguments are as for M68K_DEVICE in m68k-devices.def. */
M68K_ISA ("68000", m68000, 68000, isa_00, FL_FOR_isa_00)
M68K_ISA ("68010", m68010, 68010, isa_10, FL_FOR_isa_10)
M68K_ISA ("68020", m68020, 68020, isa_20, FL_FOR_isa_20)
M68K_ISA ("68030", m68030, 68030, isa_20, FL_FOR_isa_20)
M68K_ISA ("68040", m68040, 68040, isa_40, FL_FOR_isa_40)
M68K_ISA ("68060", m68060, 68060, isa_40, FL_FOR_isa_40)
M68K_ISA ("cpu32", cpu32, cpu32, isa_20, FL_FOR_isa_cpu32)
M68K_ISA ("isaa", mcf5206e, cfv2, isa_a, FL_FOR_isa_a | FL_CF_HWDIV)
M68K_ISA ("isaaplus", mcf5271, cfv2, isa_aplus, FL_FOR_isa_aplus | FL_CF_HWDIV)
M68K_ISA ("isab", mcf5407, cfv4, isa_b, FL_FOR_isa_b)
M68K_ISA ("isac", unk_device, cfv4, isa_c, FL_FOR_isa_c | FL_CF_HWDIV)

View File

@ -0,0 +1,46 @@
/* m68k microarchitecture names.
Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* Define microarchitectures for the -mtune option, used both in
m68k.c and to generate m68k-tables.opt. Before including this
file, define a macro:
M68K_MICROARCH (NAME, DEVICE, MICROARCH, ISA, FLAGS)
where NAME is the name for use with -mtune=, DEVICE is the value in
the target_device enumeration of a representative device, FLAGS is
the set of FL_* flags that apply to this ISA and the other
arguments are as for M68K_DEVICE in m68k-devices.def. */
M68K_MICROARCH ("68000", m68000, 68000, isa_00, FL_FOR_isa_00)
M68K_MICROARCH ("68010", m68010, 68010, isa_10, FL_FOR_isa_10)
M68K_MICROARCH ("68020", m68020, 68020, isa_20, FL_FOR_isa_20)
M68K_MICROARCH ("68020-40", m68020, 68020_40, isa_20, FL_FOR_isa_20)
M68K_MICROARCH ("68020-60", m68020, 68020_60, isa_20, FL_FOR_isa_20)
M68K_MICROARCH ("68030", m68030, 68030, isa_20, FL_FOR_isa_20)
M68K_MICROARCH ("68040", m68040, 68040, isa_40, FL_FOR_isa_40)
M68K_MICROARCH ("68060", m68060, 68060, isa_40, FL_FOR_isa_40)
M68K_MICROARCH ("cpu32", cpu32, cpu32, isa_20, FL_FOR_isa_cpu32)
M68K_MICROARCH ("cfv1", mcf51qe, cfv1, isa_c, FL_FOR_isa_c)
M68K_MICROARCH ("cfv2", mcf5206, cfv2, isa_a, FL_FOR_isa_a)
M68K_MICROARCH ("cfv3", mcf5307, cfv3, isa_a, FL_FOR_isa_a | FL_CF_HWDIV)
M68K_MICROARCH ("cfv4", mcf5407, cfv4, isa_b, FL_FOR_isa_b)
M68K_MICROARCH ("cfv4e", mcf547x, cfv4e, isa_b, FL_FOR_isa_b | FL_CF_USP| FL_CF_EMAC | FL_CF_FPU)

View File

@ -0,0 +1,46 @@
/* Definitions for option handling for Motorola 680x0/ColdFire.
Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#ifndef M68K_OPTS_H
#define M68K_OPTS_H
/* Values used in the MICROARCH argument to M68K_DEVICE. */
enum uarch_type
{
#define M68K_MICROARCH(NAME,DEVICE,MICROARCH,ISA,FLAGS) \
u##MICROARCH,
#include "m68k-microarchs.def"
#undef M68K_MICROARCH
ucfv5,
unk_arch
};
/* An enumeration of all supported target devices. */
enum target_device
{
#define M68K_DEVICE(NAME,ENUM_VALUE,FAMILY,MULTILIB,MICROARCH,ISA,FLAGS) \
ENUM_VALUE,
#include "m68k-devices.def"
#undef M68K_DEVICE
unk_device
};
#endif

View File

@ -0,0 +1,427 @@
; -*- buffer-read-only: t -*-
; Generated automatically by genopt.sh from m68k-devices.def,
; m68k-isas.def and m68k-microarchs.def.
; Copyright (C) 2011 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
; for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3. If not see
; <http://www.gnu.org/licenses/>.
Enum
Name(target_device) Type(enum target_device)
Known M68K CPUs (for use with the -mcpu= option):
EnumValue
Enum(target_device) String(68000) Value(m68000)
EnumValue
Enum(target_device) String(68010) Value(m68010)
EnumValue
Enum(target_device) String(68020) Value(m68020)
EnumValue
Enum(target_device) String(68030) Value(m68030)
EnumValue
Enum(target_device) String(68040) Value(m68040)
EnumValue
Enum(target_device) String(68060) Value(m68060)
EnumValue
Enum(target_device) String(68302) Value(m68302)
EnumValue
Enum(target_device) String(68332) Value(m68332)
EnumValue
Enum(target_device) String(cpu32) Value(cpu32)
EnumValue
Enum(target_device) String(51) Value(mcf51)
EnumValue
Enum(target_device) String(51ac) Value(mcf51ac)
EnumValue
Enum(target_device) String(51cn) Value(mcf51cn)
EnumValue
Enum(target_device) String(51em) Value(mcf51em)
EnumValue
Enum(target_device) String(51jm) Value(mcf51jm)
EnumValue
Enum(target_device) String(51qe) Value(mcf51qe)
EnumValue
Enum(target_device) String(5202) Value(mcf5202)
EnumValue
Enum(target_device) String(5204) Value(mcf5204)
EnumValue
Enum(target_device) String(5206) Value(mcf5206)
EnumValue
Enum(target_device) String(5206e) Value(mcf5206e)
EnumValue
Enum(target_device) String(5207) Value(mcf5207)
EnumValue
Enum(target_device) String(5208) Value(mcf5208)
EnumValue
Enum(target_device) String(5210a) Value(mcf5210a)
EnumValue
Enum(target_device) String(5211a) Value(mcf5211a)
EnumValue
Enum(target_device) String(5211) Value(mcf5211)
EnumValue
Enum(target_device) String(5212) Value(mcf5212)
EnumValue
Enum(target_device) String(5213) Value(mcf5213)
EnumValue
Enum(target_device) String(5214) Value(mcf5214)
EnumValue
Enum(target_device) String(5216) Value(mcf5216)
EnumValue
Enum(target_device) String(5221x) Value(mcf5221x)
EnumValue
Enum(target_device) String(52221) Value(mcf52221)
EnumValue
Enum(target_device) String(52223) Value(mcf52223)
EnumValue
Enum(target_device) String(52230) Value(mcf52230)
EnumValue
Enum(target_device) String(52231) Value(mcf52231)
EnumValue
Enum(target_device) String(52232) Value(mcf52232)
EnumValue
Enum(target_device) String(52233) Value(mcf52233)
EnumValue
Enum(target_device) String(52234) Value(mcf52234)
EnumValue
Enum(target_device) String(52235) Value(mcf52235)
EnumValue
Enum(target_device) String(5224) Value(mcf5224)
EnumValue
Enum(target_device) String(5225) Value(mcf5225)
EnumValue
Enum(target_device) String(52252) Value(mcf52252)
EnumValue
Enum(target_device) String(52254) Value(mcf52254)
EnumValue
Enum(target_device) String(52255) Value(mcf52255)
EnumValue
Enum(target_device) String(52256) Value(mcf52256)
EnumValue
Enum(target_device) String(52258) Value(mcf52258)
EnumValue
Enum(target_device) String(52259) Value(mcf52259)
EnumValue
Enum(target_device) String(52274) Value(mcf52274)
EnumValue
Enum(target_device) String(52277) Value(mcf52277)
EnumValue
Enum(target_device) String(5232) Value(mcf5232)
EnumValue
Enum(target_device) String(5233) Value(mcf5233)
EnumValue
Enum(target_device) String(5234) Value(mcf5234)
EnumValue
Enum(target_device) String(5235) Value(mcf5235)
EnumValue
Enum(target_device) String(523x) Value(mcf523x)
EnumValue
Enum(target_device) String(5249) Value(mcf5249)
EnumValue
Enum(target_device) String(5250) Value(mcf5250)
EnumValue
Enum(target_device) String(5253) Value(mcf5253)
EnumValue
Enum(target_device) String(5270) Value(mcf5270)
EnumValue
Enum(target_device) String(5271) Value(mcf5271)
EnumValue
Enum(target_device) String(5272) Value(mcf5272)
EnumValue
Enum(target_device) String(5274) Value(mcf5274)
EnumValue
Enum(target_device) String(5275) Value(mcf5275)
EnumValue
Enum(target_device) String(5280) Value(mcf5280)
EnumValue
Enum(target_device) String(5281) Value(mcf5281)
EnumValue
Enum(target_device) String(5282) Value(mcf5282)
EnumValue
Enum(target_device) String(528x) Value(mcf528x)
EnumValue
Enum(target_device) String(53011) Value(mcf53011)
EnumValue
Enum(target_device) String(53012) Value(mcf53012)
EnumValue
Enum(target_device) String(53013) Value(mcf53013)
EnumValue
Enum(target_device) String(53014) Value(mcf53014)
EnumValue
Enum(target_device) String(53015) Value(mcf53015)
EnumValue
Enum(target_device) String(53016) Value(mcf53016)
EnumValue
Enum(target_device) String(53017) Value(mcf53017)
EnumValue
Enum(target_device) String(5307) Value(mcf5307)
EnumValue
Enum(target_device) String(5327) Value(mcf5327)
EnumValue
Enum(target_device) String(5328) Value(mcf5328)
EnumValue
Enum(target_device) String(5329) Value(mcf5329)
EnumValue
Enum(target_device) String(532x) Value(mcf532x)
EnumValue
Enum(target_device) String(5372) Value(mcf5372)
EnumValue
Enum(target_device) String(5373) Value(mcf5373)
EnumValue
Enum(target_device) String(537x) Value(mcf537x)
EnumValue
Enum(target_device) String(5407) Value(mcf5407)
EnumValue
Enum(target_device) String(54410) Value(mcf54410)
EnumValue
Enum(target_device) String(54415) Value(mcf54415)
EnumValue
Enum(target_device) String(54416) Value(mcf54416)
EnumValue
Enum(target_device) String(54417) Value(mcf54417)
EnumValue
Enum(target_device) String(54418) Value(mcf54418)
EnumValue
Enum(target_device) String(54450) Value(mcf54450)
EnumValue
Enum(target_device) String(54451) Value(mcf54451)
EnumValue
Enum(target_device) String(54452) Value(mcf54452)
EnumValue
Enum(target_device) String(54453) Value(mcf54453)
EnumValue
Enum(target_device) String(54454) Value(mcf54454)
EnumValue
Enum(target_device) String(54455) Value(mcf54455)
EnumValue
Enum(target_device) String(5470) Value(mcf5470)
EnumValue
Enum(target_device) String(5471) Value(mcf5471)
EnumValue
Enum(target_device) String(5472) Value(mcf5472)
EnumValue
Enum(target_device) String(5473) Value(mcf5473)
EnumValue
Enum(target_device) String(5474) Value(mcf5474)
EnumValue
Enum(target_device) String(5475) Value(mcf5475)
EnumValue
Enum(target_device) String(547x) Value(mcf547x)
EnumValue
Enum(target_device) String(5480) Value(mcf5480)
EnumValue
Enum(target_device) String(5481) Value(mcf5481)
EnumValue
Enum(target_device) String(5482) Value(mcf5482)
EnumValue
Enum(target_device) String(5483) Value(mcf5483)
EnumValue
Enum(target_device) String(5484) Value(mcf5484)
EnumValue
Enum(target_device) String(5485) Value(mcf5485)
EnumValue
Enum(target_device) String(548x) Value(mcf548x)
EnumValue
Enum(target_device) String(fidoa) Value(fidoa)
Enum
Name(uarch_type) Type(enum uarch_type)
Known M68K microarchitectures (for use with the -mtune= option):
EnumValue
Enum(uarch_type) String(68000) Value(u68000)
EnumValue
Enum(uarch_type) String(68010) Value(u68010)
EnumValue
Enum(uarch_type) String(68020) Value(u68020)
EnumValue
Enum(uarch_type) String(68020-40) Value(u68020_40)
EnumValue
Enum(uarch_type) String(68020-60) Value(u68020_60)
EnumValue
Enum(uarch_type) String(68030) Value(u68030)
EnumValue
Enum(uarch_type) String(68040) Value(u68040)
EnumValue
Enum(uarch_type) String(68060) Value(u68060)
EnumValue
Enum(uarch_type) String(cpu32) Value(ucpu32)
EnumValue
Enum(uarch_type) String(cfv1) Value(ucfv1)
EnumValue
Enum(uarch_type) String(cfv2) Value(ucfv2)
EnumValue
Enum(uarch_type) String(cfv3) Value(ucfv3)
EnumValue
Enum(uarch_type) String(cfv4) Value(ucfv4)
EnumValue
Enum(uarch_type) String(cfv4e) Value(ucfv4e)
Enum
Name(m68k_isa) Type(int)
Known M68K ISAs (for use with the -march= option):
EnumValue
Enum(m68k_isa) String(68000) Value(0)
EnumValue
Enum(m68k_isa) String(68010) Value(1)
EnumValue
Enum(m68k_isa) String(68020) Value(2)
EnumValue
Enum(m68k_isa) String(68030) Value(3)
EnumValue
Enum(m68k_isa) String(68040) Value(4)
EnumValue
Enum(m68k_isa) String(68060) Value(5)
EnumValue
Enum(m68k_isa) String(cpu32) Value(6)
EnumValue
Enum(m68k_isa) String(isaa) Value(7)
EnumValue
Enum(m68k_isa) String(isaaplus) Value(8)
EnumValue
Enum(m68k_isa) String(isab) Value(9)
EnumValue
Enum(m68k_isa) String(isac) Value(10)

View File

@ -165,10 +165,6 @@ static rtx m68k_function_arg (CUMULATIVE_ARGS *, enum machine_mode,
const_tree, bool);
static bool m68k_cannot_force_const_mem (enum machine_mode mode, rtx x);
/* Specify the identification number of the library being built */
const char *m68k_library_id_string = "_current_shared_library_a5_offset_";
/* Initialize the GCC target structure. */
#if INT_OP_GROUP == INT_OP_DOT_WORD
@ -385,20 +381,10 @@ static const struct m68k_target_selection all_devices[] =
Used for -march selection. */
static const struct m68k_target_selection all_isas[] =
{
{ "68000", m68000, NULL, u68000, isa_00, FL_FOR_isa_00 },
{ "68010", m68010, NULL, u68010, isa_10, FL_FOR_isa_10 },
{ "68020", m68020, NULL, u68020, isa_20, FL_FOR_isa_20 },
{ "68030", m68030, NULL, u68030, isa_20, FL_FOR_isa_20 },
{ "68040", m68040, NULL, u68040, isa_40, FL_FOR_isa_40 },
{ "68060", m68060, NULL, u68060, isa_40, FL_FOR_isa_40 },
{ "cpu32", cpu32, NULL, ucpu32, isa_20, FL_FOR_isa_cpu32 },
{ "isaa", mcf5206e, NULL, ucfv2, isa_a, (FL_FOR_isa_a
| FL_CF_HWDIV) },
{ "isaaplus", mcf5271, NULL, ucfv2, isa_aplus, (FL_FOR_isa_aplus
| FL_CF_HWDIV) },
{ "isab", mcf5407, NULL, ucfv4, isa_b, FL_FOR_isa_b },
{ "isac", unk_device, NULL, ucfv4, isa_c, (FL_FOR_isa_c
| FL_CF_HWDIV) },
#define M68K_ISA(NAME,DEVICE,MICROARCH,ISA,FLAGS) \
{ NAME, DEVICE, NULL, u##MICROARCH, ISA, FLAGS },
#include "m68k-isas.def"
#undef M68K_ISA
{ NULL, unk_device, NULL, unk_arch, isa_max, 0 }
};
@ -406,24 +392,10 @@ static const struct m68k_target_selection all_isas[] =
device. Used for -mtune selection. */
static const struct m68k_target_selection all_microarchs[] =
{
{ "68000", m68000, NULL, u68000, isa_00, FL_FOR_isa_00 },
{ "68010", m68010, NULL, u68010, isa_10, FL_FOR_isa_10 },
{ "68020", m68020, NULL, u68020, isa_20, FL_FOR_isa_20 },
{ "68020-40", m68020, NULL, u68020_40, isa_20, FL_FOR_isa_20 },
{ "68020-60", m68020, NULL, u68020_60, isa_20, FL_FOR_isa_20 },
{ "68030", m68030, NULL, u68030, isa_20, FL_FOR_isa_20 },
{ "68040", m68040, NULL, u68040, isa_40, FL_FOR_isa_40 },
{ "68060", m68060, NULL, u68060, isa_40, FL_FOR_isa_40 },
{ "cpu32", cpu32, NULL, ucpu32, isa_20, FL_FOR_isa_cpu32 },
{ "cfv1", mcf51qe, NULL, ucfv1, isa_c, FL_FOR_isa_c },
{ "cfv2", mcf5206, NULL, ucfv2, isa_a, FL_FOR_isa_a },
{ "cfv3", mcf5307, NULL, ucfv3, isa_a, (FL_FOR_isa_a
| FL_CF_HWDIV) },
{ "cfv4", mcf5407, NULL, ucfv4, isa_b, FL_FOR_isa_b },
{ "cfv4e", mcf547x, NULL, ucfv4e, isa_b, (FL_FOR_isa_b
| FL_CF_USP
| FL_CF_EMAC
| FL_CF_FPU) },
#define M68K_MICROARCH(NAME,DEVICE,MICROARCH,ISA,FLAGS) \
{ NAME, DEVICE, NULL, u##MICROARCH, ISA, FLAGS },
#include "m68k-microarchs.def"
#undef M68K_MICROARCH
{ NULL, unk_device, NULL, unk_arch, isa_max, 0 }
};
@ -458,70 +430,39 @@ const char *m68k_symbolic_jump;
enum M68K_SYMBOLIC_CALL m68k_symbolic_call_var;
/* See whether TABLE has an entry with name NAME. Return true and
store the entry in *ENTRY if so, otherwise return false and
leave *ENTRY alone. */
static bool
m68k_find_selection (const struct m68k_target_selection **entry,
const struct m68k_target_selection *table,
const char *name)
{
size_t i;
for (i = 0; table[i].name; i++)
if (strcmp (table[i].name, name) == 0)
{
*entry = table + i;
return true;
}
return false;
}
/* Implement TARGET_HANDLE_OPTION. */
static bool
m68k_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
m68k_handle_option (struct gcc_options *opts,
struct gcc_options *opts_set ATTRIBUTE_UNUSED,
const struct cl_decoded_option *decoded,
location_t loc ATTRIBUTE_UNUSED)
location_t loc)
{
size_t code = decoded->opt_index;
const char *arg = decoded->arg;
int value = decoded->value;
gcc_assert (opts == &global_options);
gcc_assert (opts_set == &global_options_set);
switch (code)
{
case OPT_march_:
return m68k_find_selection (&m68k_arch_entry, all_isas, arg);
case OPT_mcpu_:
return m68k_find_selection (&m68k_cpu_entry, all_devices, arg);
case OPT_mtune_:
return m68k_find_selection (&m68k_tune_entry, all_microarchs, arg);
case OPT_m68020_40:
return (m68k_find_selection (&m68k_tune_entry, all_microarchs,
"68020-40")
&& m68k_find_selection (&m68k_cpu_entry, all_devices, "68020"));
opts->x_m68k_tune_option = u68020_40;
opts->x_m68k_cpu_option = m68020;
return true;
case OPT_m68020_60:
return (m68k_find_selection (&m68k_tune_entry, all_microarchs,
"68020-60")
&& m68k_find_selection (&m68k_cpu_entry, all_devices, "68020"));
opts->x_m68k_tune_option = u68020_60;
opts->x_m68k_cpu_option = m68020;
return true;
case OPT_mshared_library_id_:
if (value > MAX_LIBRARY_ID)
error ("-mshared-library-id=%s is not between 0 and %d",
error_at (loc, "-mshared-library-id=%s is not between 0 and %d",
arg, MAX_LIBRARY_ID);
else
{
char *tmp;
asprintf (&tmp, "%d", (value * -4) - 4);
m68k_library_id_string = tmp;
opts->x_m68k_library_id_string = tmp;
}
return true;
@ -538,6 +479,15 @@ m68k_option_override (void)
const struct m68k_target_selection *entry;
unsigned long target_mask;
if (global_options_set.x_m68k_arch_option)
m68k_arch_entry = &all_isas[m68k_arch_option];
if (global_options_set.x_m68k_cpu_option)
m68k_cpu_entry = &all_devices[(int) m68k_cpu_option];
if (global_options_set.x_m68k_tune_option)
m68k_tune_entry = &all_microarchs[(int) m68k_tune_option];
/* User can choose:
-mcpu=

View File

@ -941,36 +941,7 @@ do { \
goto FAIL; \
} while (0);
/* Values used in the MICROARCH argument to M68K_DEVICE. */
enum uarch_type
{
u68000,
u68010,
u68020,
u68020_40,
u68020_60,
u68030,
u68040,
u68060,
ucpu32,
ucfv1,
ucfv2,
ucfv3,
ucfv4,
ucfv4e,
ucfv5,
unk_arch
};
/* An enumeration of all supported target devices. */
enum target_device
{
#define M68K_DEVICE(NAME,ENUM_VALUE,FAMILY,MULTILIB,MICROARCH,ISA,FLAGS) \
ENUM_VALUE,
#include "m68k-devices.def"
#undef M68K_DEVICE
unk_device
};
#include "config/m68k/m68k-opts.h"
enum fpu_type
{
@ -987,7 +958,6 @@ enum m68k_function_kind
};
/* Variables in m68k.c; see there for details. */
extern const char *m68k_library_id_string;
extern enum target_device m68k_cpu;
extern enum uarch_type m68k_tune;
extern enum fpu_type m68k_fpu;

View File

@ -19,6 +19,13 @@
; along with GCC; see the file COPYING3. If not see
; <http://www.gnu.org/licenses/>.
HeaderInclude
config/m68k/m68k-opts.h
; Specify the identification number of the library being built.
Variable
const char *m68k_library_id_string = "_current_shared_library_a5_offset_"
m5200
Target RejectNegative Alias(mcpu=, 5206)
Generate code for a 520X
@ -93,7 +100,7 @@ Target Report Mask(ALIGN_INT)
Align variables on a 32-bit boundary
march=
Target RejectNegative Joined
Target RejectNegative Joined Enum(m68k_isa) Var(m68k_arch_option)
Specify the name of the target architecture
mbitfield
@ -113,7 +120,7 @@ Target RejectNegative Alias(mcpu=, 547x)
Generate code for a ColdFire v4e
mcpu=
Target RejectNegative Joined
Target RejectNegative Joined Enum(target_device) Var(m68k_cpu_option) Init(unk_device)
Specify the target CPU
mcpu32
@ -177,7 +184,7 @@ Target Report Mask(STRICT_ALIGNMENT)
Do not use unaligned memory references
mtune=
Target RejectNegative Joined
Target RejectNegative Joined Enum(uarch_type) Var(m68k_tune_option) Init(unk_arch)
Tune for the specified target CPU or architecture
mxgot

5
gcc/config/m68k/t-opts Normal file
View File

@ -0,0 +1,5 @@
$(srcdir)/config/m68k/m68k-tables.opt: $(srcdir)/config/m68k/genopt.sh \
$(srcdir)/config/m68k/m68k-devices.def $(srcdir)/config/m68k/m68k-isas.def \
$(srcdir)/config/m68k/m68k-microarchs.def
$(SHELL) $(srcdir)/config/m68k/genopt.sh $(srcdir)/config/m68k > \
$(srcdir)/config/m68k/m68k-tables.opt