From 81f9037c86a32ea5123a5aed141dec59bfda2f5e Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Mon, 20 Oct 2003 06:27:32 +0000 Subject: [PATCH] config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js, arm1136jfs, and armv6j. * config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js, arm1136jfs, and armv6j. * config/arm/arm.c (FL_ARCH6J): New macro. (FL_VFPV2): Likewise. (all_cores): Add entries for arm926ejs, arm1026ejs, arm1136js, and arm1136jfs. (all_architectures): Add entry for armv6j. (arm_override_options): Add entries for arm926ejs, arm1026ejs, arm1136js, and arm1136jfs. * config/arm/arm.h (TARGET_CPU_arm926ej_s): New macro. (TARGET_CPU_arm1026ej_s): Likewise. (TARGET_CPU_arm1136j_s): Likewise. (TARGET_CPU_arm1136jf_s): Likewise. * doc/invoke.texi: Document new ARM cores and architecture variants. From-SVN: r72694 --- gcc/ChangeLog | 18 ++++++++++++++++++ gcc/config.gcc | 6 +++--- gcc/config/arm/arm.c | 16 +++++++++++++++- gcc/config/arm/arm.h | 4 ++++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5dc8b6803f5..4ebb882cc77 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2003-10-19 Mark Mitchell + + * config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js, + arm1136jfs, and armv6j. + * config/arm/arm.c (FL_ARCH6J): New macro. + (FL_VFPV2): Likewise. + (all_cores): Add entries for arm926ejs, arm1026ejs, arm1136js, + and arm1136jfs. + (all_architectures): Add entry for armv6j. + (arm_override_options): Add entries for arm926ejs, arm1026ejs, + arm1136js, and arm1136jfs. + * config/arm/arm.h (TARGET_CPU_arm926ej_s): New macro. + (TARGET_CPU_arm1026ej_s): Likewise. + (TARGET_CPU_arm1136j_s): Likewise. + (TARGET_CPU_arm1136jf_s): Likewise. + * doc/invoke.texi: Document new ARM cores and architecture + variants. + 2003-10-19 Zdenek Dvorak * Makefile.in (toplev.o): Add value-prof.h dependency. diff --git a/gcc/config.gcc b/gcc/config.gcc index ee4a2cc8c02..7e4c820bb11 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2330,9 +2330,9 @@ fi | arm7m | arm7dm | arm7dmi | arm[79]tdmi \ | arm70 | arm700i | arm710t | arm720 \ | arm720t | arm740t | arm710c | arm920 \ - | arm920t | arm940t | arm9e | arm10tdmi \ + | arm920t | arm926ejs | arm940t | arm9e | arm10tdmi \ | arm7100 | arm7500 | arm7500fe | arm810 \ - | arm1020t \ + | arm1026ejs | arm1020t | arm1136js | arm1136jfs \ | xscale | iwmmxt \ | ep9312 \ | strongarm | strongarm110 | strongarm11[01]0) @@ -2348,7 +2348,7 @@ fi case "$with_arch" in "" \ | armv[2345] | armv2a | armv3m | armv4t | armv5t \ - | armv5te | ep9312) + | armv5te | armv6j | ep9312) # OK ;; *) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index dbdde4ad30a..42f4f172ffa 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -281,6 +281,9 @@ int arm_structure_size_boundary = DEFAULT_STRUCTURE_SIZE_BOUNDARY; #define FL_XSCALE (1 << 10) /* XScale */ #define FL_CIRRUS (1 << 11) /* Cirrus/DSP. */ #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */ +#define FL_ARCH6J (1 << 12) /* Architecture rel 6. Adds + media instructions. */ +#define FL_VFPV2 (1 << 13) /* Vector Floating Point V2. */ /* The bits in this mask specify which instructions we are allowed to generate. */ @@ -406,6 +409,7 @@ static const struct processors all_cores[] = {"arm7500", FL_MODE26 | FL_MODE32 }, /* Doesn't have an external co-proc, but does have embedded fpa. */ {"arm7500fe", FL_CO_PROC | FL_MODE26 | FL_MODE32 }, + /* V4 Architecture Processors */ {"arm7tdmi", FL_CO_PROC | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB }, {"arm710t", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB }, {"arm720t", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB }, @@ -423,11 +427,16 @@ static const struct processors all_cores[] = {"strongarm110", FL_MODE26 | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_LDSCHED | FL_STRONG }, {"strongarm1100", FL_MODE26 | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_LDSCHED | FL_STRONG }, {"strongarm1110", FL_MODE26 | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_LDSCHED | FL_STRONG }, + /* V5 Architecture Processors */ {"arm10tdmi", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_ARCH5 }, {"arm1020t", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_ARCH5 }, + {"arm926ejs", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E }, + {"arm1026ejs", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E }, {"xscale", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_STRONG | FL_ARCH5 | FL_ARCH5E | FL_XSCALE }, {"iwmmxt", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_STRONG | FL_ARCH5 | FL_ARCH5E | FL_XSCALE | FL_IWMMXT }, - + /* V6 Architecture Processors */ + {"arm1136js", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E | FL_ARCH6J }, + {"arm1136jfs", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E | FL_ARCH6J | FL_VFPV2 }, {NULL, 0} }; @@ -446,6 +455,7 @@ static const struct processors all_architectures[] = { "armv5", FL_CO_PROC | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 }, { "armv5t", FL_CO_PROC | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 }, { "armv5te", FL_CO_PROC | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E }, + { "armv6j", FL_CO_PROC | FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_ARCH5 | FL_ARCH5E | FL_ARCH6J }, { "ep9312", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_LDSCHED | FL_CIRRUS }, {"iwmmxt", FL_MODE32 | FL_FAST_MULT | FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_STRONG | FL_ARCH5 | FL_ARCH5E | FL_XSCALE | FL_IWMMXT }, { NULL, 0 } @@ -546,6 +556,10 @@ arm_override_options (void) { TARGET_CPU_xscale, "xscale" }, { TARGET_CPU_ep9312, "ep9312" }, { TARGET_CPU_iwmmxt, "iwmmxt" }, + { TARGET_CPU_arm926ej_s, "arm926ej-s" }, + { TARGET_CPU_arm1026ej_s, "arm1026ej-s" }, + { TARGET_CPU_arm1136j_s, "arm1136j_s" }, + { TARGET_CPU_arm1136jf_s, "arm1136jf_s" }, { TARGET_CPU_generic, "arm" }, { 0, 0 } }; diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 7f64d872de3..f757ead07e1 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -98,6 +98,10 @@ #define TARGET_CPU_xscale 0x0100 #define TARGET_CPU_ep9312 0x0200 #define TARGET_CPU_iwmmxt 0x0400 +#define TARGET_CPU_arm926ej_s 0x0800 +#define TARGET_CPU_arm1026ej_s 0x1000 +#define TARGET_CPU_arm1136j_s 0x2000 +#define TARGET_CPU_arm1136jf_s 0x4000 /* Configure didn't specify. */ #define TARGET_CPU_generic 0x8000