Message ID | 1366630651-6857-6-git-send-email-mjonker@synopsys.com |
---|---|
State | Changes Requested |
Headers | show |
Dear Mischa Jonker, On Mon, 22 Apr 2013 13:37:29 +0200, Mischa Jonker wrote: > ARC support in GCC is not upstream yet... > > Signed-off-by: Mischa Jonker <mjonker@synopsys.com> > --- > support/gnuconfig/config.sub | 4 +- > toolchain/Config.in | 3 +- > .../gcc/4.4.7-arc/fix_branch_out_of_range.patch | 22 ++++++++++++++++++++ > toolchain/gcc/Config.in | 22 ++++++++++++------- > toolchain/gcc/gcc-uclibc-4.x.mk | 4 +++ > 5 files changed, 44 insertions(+), 11 deletions(-) > create mode 100644 toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch > > diff --git a/support/gnuconfig/config.sub b/support/gnuconfig/config.sub > index 8509813..b2958ad 100755 > --- a/support/gnuconfig/config.sub > +++ b/support/gnuconfig/config.sub > @@ -259,7 +259,7 @@ case $basic_machine in > | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ > | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ > | am33_2.0 \ > - | arc \ > + | arc | arceb \ > | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ > | avr | avr32 \ > | be32 | be64 \ > @@ -372,7 +372,7 @@ case $basic_machine in > | aarch64-* | aarch64_be-* \ > | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ > | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ > - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ > + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ > | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ > | avr-* | avr32-* \ > | be32-* | be64-* \ This should be in a separate patch. Is this change upstream in the gnuconfig project. We from time to time sync up with the upstream variant, so if you want those changes to be preserved over time, they need to be upstreamed. > diff --git a/toolchain/Config.in b/toolchain/Config.in > index fa78cf4..5d1c592 100644 > --- a/toolchain/Config.in > +++ b/toolchain/Config.in > @@ -22,7 +22,8 @@ config BR2_TOOLCHAIN_EXTERNAL > > config BR2_TOOLCHAIN_CTNG > bool "Crosstool-NG toolchain" > - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa > + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa && \ > + !BR2_arc && !BR2_arceb > select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS > help > Say 'y' if you want to generate the toolchain with crosstool-NG This should also be part of a separate patch, ideally. > diff --git a/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch b/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch > new file mode 100644 > index 0000000..f042a71 > --- /dev/null > +++ b/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch > @@ -0,0 +1,22 @@ > +diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c > +index ff602c0..b3ca4c4 100644 > +--- a/gcc/config/arc/arc.c > ++++ b/gcc/config/arc/arc.c > +@@ -6565,7 +6565,7 @@ estimate required size increase). > + rtx *ccp = &XEXP (XVECEXP (pat, 0, 1), 0); > + > + offset = branch_dest (insn) - INSN_ADDRESSES (INSN_UID (insn)); > +- if ((offset >= -140 && offset < 140) > ++ if ((offset >= -120 && offset < 120) > + && rtx_equal_p (XEXP (op, 1), const0_rtx) > + && compact_register_operand (XEXP (op, 0), VOIDmode) > + && equality_comparison_operator (op, VOIDmode)) > +@@ -6687,7 +6687,7 @@ estimate required size increase). > + > + if (op0 != cmp0) > + cc_clob_rtx = gen_rtx_REG (CC_ZNmode, CC_REG); > +- else if ((offset >= -140 && offset < 140) > ++ else if ((offset >= -120 && offset < 120) > + && rtx_equal_p (op1, const0_rtx) > + && compact_register_operand (op0, VOIDmode) > + && (GET_CODE (op) == EQ Patch lacks a description + Signed-off-by. > diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in > index d7e8715..2396e8e 100644 > --- a/toolchain/gcc/Config.in > +++ b/toolchain/gcc/Config.in > @@ -9,44 +9,49 @@ choice > prompt "GCC compiler Version" > default BR2_GCC_VERSION_4_4_X if BR2_sparc_sparchfleon || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleon || BR2_sparc_sparcsfleonv8 > default BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 if BR2_avr32 > + default BR2_GCC_VERSION_4_4_7_ARC if BR2_arc || BR2_arceb > default BR2_GCC_VERSION_4_7_X > help > Select the version of gcc you wish to use. > > + config BR2_GCC_VERSION_4_4_7_ARC > + depends on BR2_arc || BR2_arceb > + bool "gcc 4.4.7-arc" > + > config BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 > depends on BR2_avr32 > bool "gcc 4.2.2-avr32-2.1.5" > > config BR2_GCC_VERSION_4_3_X > - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 > bool "gcc 4.3.x" > > config BR2_GCC_VERSION_4_4_X > - depends on !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 > bool "gcc 4.4.x" > > config BR2_GCC_VERSION_4_5_X > - depends on !BR2_avr32 && !BR2_cortex_a15 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_cortex_a15 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 > select BR2_GCC_NEEDS_MPC > bool "gcc 4.5.x" > > config BR2_GCC_VERSION_4_6_X > - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > select BR2_GCC_NEEDS_MPC > bool "gcc 4.6.x" > > config BR2_GCC_VERSION_4_7_X > - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > select BR2_GCC_NEEDS_MPC > bool "gcc 4.7.x" > > config BR2_GCC_VERSION_4_8_X > - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > select BR2_GCC_NEEDS_MPC > bool "gcc 4.8.x" > > config BR2_GCC_VERSION_SNAP > - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 > select BR2_GCC_NEEDS_MPC > bool "gcc snapshot" Hum, not really nice. Maybe it's time to split the lines. Or even to have something like "BR2_ARCH_HAS_GCC_4_8", "BR2_ARCH_HAS_GCC_4_5", etc. But maybe that can be as follow-up cleanups. > endchoice > @@ -74,6 +79,7 @@ config BR2_GCC_VERSION > default "4.2.2-avr32-2.1.5" if BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 > default "4.3.6" if BR2_GCC_VERSION_4_3_X > default "4.4.7" if BR2_GCC_VERSION_4_4_X > + default "4.4.7-arc" if BR2_GCC_VERSION_4_4_7_ARC > default "4.5.4" if BR2_GCC_VERSION_4_5_X > default "4.6.4" if BR2_GCC_VERSION_4_6_X > default "4.7.3" if BR2_GCC_VERSION_4_7_X > @@ -119,6 +125,6 @@ config BR2_GCC_ENABLE_TLS > > config BR2_GCC_ENABLE_OPENMP > bool "Enable compiler OpenMP support" > - depends on !BR2_PTHREADS_NONE && !BR2_avr32 > + depends on !BR2_PTHREADS_NONE && !BR2_avr32 && !BR2_arc && !BR2_arceb > help > Enable OpenMP support for the compiler > diff --git a/toolchain/gcc/gcc-uclibc-4.x.mk b/toolchain/gcc/gcc-uclibc-4.x.mk > index fc11ad4..31afd48 100644 > --- a/toolchain/gcc/gcc-uclibc-4.x.mk > +++ b/toolchain/gcc/gcc-uclibc-4.x.mk > @@ -29,6 +29,8 @@ ifneq ($(GCC_SNAP_DATE),) > GCC_SITE:=ftp://gcc.gnu.org/pub/gcc/snapshots/$(GCC_SNAP_DATE)/ > else ifeq ($(findstring avr32,$(GCC_VERSION)),avr32) > GCC_SITE:=ftp://www.at91.com/pub/buildroot/ > +else ifeq ($(findstring arc,$(GCC_VERSION)),arc) > + GCC_SITE:=$(BR2_ARC_SITE) > else > GCC_SITE:=$(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION) > endif > @@ -63,7 +65,9 @@ endif > > # Determine soft-float options > ifeq ($(BR2_SOFT_FLOAT),y) > +ifeq ($(BR2_arc)$(BR2_arceb),) > SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft > +endif Hum. Maybe this --with-float=soft should instead only be passed for the architectures for which it makes sense (ARM? PowerPC?). > ifeq ($(BR2_arm)$(BR2_armeb),y) # only set float-abi for arm > TARGET_SOFT_FLOAT:=-mfloat-abi=soft > else Thomas
>> diff --git a/support/gnuconfig/config.sub >> b/support/gnuconfig/config.sub index 8509813..b2958ad 100755 >> - | arc \ >> + | arc | arceb \ > This should be in a separate patch. Is this change upstream in the gnuconfig project. We from time to time sync up with the upstream variant, so if you want those changes to be preserved over time, they need to be upstreamed. The change is in the upstream project now. Would you like me to change the gnuconfig patch in BuildRoot from 'add ARC to gnuconfig' to 'update gnuconfig from upstream'? Mischa
Dear Mischa Jonker, On Wed, 24 Apr 2013 12:44:20 +0000, Mischa Jonker wrote: > > This should be in a separate patch. Is this change upstream in the > > gnuconfig project. We from time to time sync up with the upstream > > variant, so if you want those changes to be preserved over time, > > they need to be upstreamed. > > The change is in the upstream project now. Would you like me to > change the gnuconfig patch in BuildRoot from 'add ARC to gnuconfig' > to 'update gnuconfig from upstream'? Yes, that'd be great. Thanks, Thomas
Hi Thomas, > > The change is in the upstream project now. Would you like me to change > > the gnuconfig patch in BuildRoot from 'add ARC to gnuconfig' > > to 'update gnuconfig from upstream'? > Yes, that'd be great. There are some patches with your name on it in support/gnuconfig/patches. These patches seem to be applied already on support/gnuconfig/*. I have updated these patches so that they apply cleanly on top of the new gnuconfig (+small ARC-specific addition), but they still have your Signed-off-by tag. What's the proper procedure for signing off patches within a patch? Mischa
Mischa, All, On Wed, Apr 24, 2013 at 03:19:14PM +0000, Mischa Jonker wrote: > There are some patches with your name on it in support/gnuconfig/patches. > These patches seem to be applied already on support/gnuconfig/*. I have > updated these patches so that they apply cleanly on top of the new gnuconfig > (+small ARC-specific addition), but they still have your Signed-off-by tag. > > What's the proper procedure for signing off patches within a patch? Two options: - update the patch, add your SoB-line - add a new patch with only your SoB-line If your change adds a new semantic change (which is the case: add a new architecture), then I'd favour the second option. If your change is an addition (as a fix, or for completeness), then go for option 1. Regards, Yann E. MORIN.
diff --git a/support/gnuconfig/config.sub b/support/gnuconfig/config.sub index 8509813..b2958ad 100755 --- a/support/gnuconfig/config.sub +++ b/support/gnuconfig/config.sub @@ -259,7 +259,7 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc \ + | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ @@ -372,7 +372,7 @@ case $basic_machine in | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ diff --git a/toolchain/Config.in b/toolchain/Config.in index fa78cf4..5d1c592 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -22,7 +22,8 @@ config BR2_TOOLCHAIN_EXTERNAL config BR2_TOOLCHAIN_CTNG bool "Crosstool-NG toolchain" - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa && \ + !BR2_arc && !BR2_arceb select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS help Say 'y' if you want to generate the toolchain with crosstool-NG diff --git a/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch b/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch new file mode 100644 index 0000000..f042a71 --- /dev/null +++ b/toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch @@ -0,0 +1,22 @@ +diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c +index ff602c0..b3ca4c4 100644 +--- a/gcc/config/arc/arc.c ++++ b/gcc/config/arc/arc.c +@@ -6565,7 +6565,7 @@ estimate required size increase). + rtx *ccp = &XEXP (XVECEXP (pat, 0, 1), 0); + + offset = branch_dest (insn) - INSN_ADDRESSES (INSN_UID (insn)); +- if ((offset >= -140 && offset < 140) ++ if ((offset >= -120 && offset < 120) + && rtx_equal_p (XEXP (op, 1), const0_rtx) + && compact_register_operand (XEXP (op, 0), VOIDmode) + && equality_comparison_operator (op, VOIDmode)) +@@ -6687,7 +6687,7 @@ estimate required size increase). + + if (op0 != cmp0) + cc_clob_rtx = gen_rtx_REG (CC_ZNmode, CC_REG); +- else if ((offset >= -140 && offset < 140) ++ else if ((offset >= -120 && offset < 120) + && rtx_equal_p (op1, const0_rtx) + && compact_register_operand (op0, VOIDmode) + && (GET_CODE (op) == EQ diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in index d7e8715..2396e8e 100644 --- a/toolchain/gcc/Config.in +++ b/toolchain/gcc/Config.in @@ -9,44 +9,49 @@ choice prompt "GCC compiler Version" default BR2_GCC_VERSION_4_4_X if BR2_sparc_sparchfleon || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleon || BR2_sparc_sparcsfleonv8 default BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 if BR2_avr32 + default BR2_GCC_VERSION_4_4_7_ARC if BR2_arc || BR2_arceb default BR2_GCC_VERSION_4_7_X help Select the version of gcc you wish to use. + config BR2_GCC_VERSION_4_4_7_ARC + depends on BR2_arc || BR2_arceb + bool "gcc 4.4.7-arc" + config BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 depends on BR2_avr32 bool "gcc 4.2.2-avr32-2.1.5" config BR2_GCC_VERSION_4_3_X - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 bool "gcc 4.3.x" config BR2_GCC_VERSION_4_4_X - depends on !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a15 && !BR2_x86_atom && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 bool "gcc 4.4.x" config BR2_GCC_VERSION_4_5_X - depends on !BR2_avr32 && !BR2_cortex_a15 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_cortex_a15 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 select BR2_GCC_NEEDS_MPC bool "gcc 4.5.x" config BR2_GCC_VERSION_4_6_X - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 select BR2_GCC_NEEDS_MPC bool "gcc 4.6.x" config BR2_GCC_VERSION_4_7_X - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 select BR2_GCC_NEEDS_MPC bool "gcc 4.7.x" config BR2_GCC_VERSION_4_8_X - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 select BR2_GCC_NEEDS_MPC bool "gcc 4.8.x" config BR2_GCC_VERSION_SNAP - depends on !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 + depends on !BR2_arc && !BR2_arceb && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 select BR2_GCC_NEEDS_MPC bool "gcc snapshot" endchoice @@ -74,6 +79,7 @@ config BR2_GCC_VERSION default "4.2.2-avr32-2.1.5" if BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 default "4.3.6" if BR2_GCC_VERSION_4_3_X default "4.4.7" if BR2_GCC_VERSION_4_4_X + default "4.4.7-arc" if BR2_GCC_VERSION_4_4_7_ARC default "4.5.4" if BR2_GCC_VERSION_4_5_X default "4.6.4" if BR2_GCC_VERSION_4_6_X default "4.7.3" if BR2_GCC_VERSION_4_7_X @@ -119,6 +125,6 @@ config BR2_GCC_ENABLE_TLS config BR2_GCC_ENABLE_OPENMP bool "Enable compiler OpenMP support" - depends on !BR2_PTHREADS_NONE && !BR2_avr32 + depends on !BR2_PTHREADS_NONE && !BR2_avr32 && !BR2_arc && !BR2_arceb help Enable OpenMP support for the compiler diff --git a/toolchain/gcc/gcc-uclibc-4.x.mk b/toolchain/gcc/gcc-uclibc-4.x.mk index fc11ad4..31afd48 100644 --- a/toolchain/gcc/gcc-uclibc-4.x.mk +++ b/toolchain/gcc/gcc-uclibc-4.x.mk @@ -29,6 +29,8 @@ ifneq ($(GCC_SNAP_DATE),) GCC_SITE:=ftp://gcc.gnu.org/pub/gcc/snapshots/$(GCC_SNAP_DATE)/ else ifeq ($(findstring avr32,$(GCC_VERSION)),avr32) GCC_SITE:=ftp://www.at91.com/pub/buildroot/ +else ifeq ($(findstring arc,$(GCC_VERSION)),arc) + GCC_SITE:=$(BR2_ARC_SITE) else GCC_SITE:=$(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION) endif @@ -63,7 +65,9 @@ endif # Determine soft-float options ifeq ($(BR2_SOFT_FLOAT),y) +ifeq ($(BR2_arc)$(BR2_arceb),) SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft +endif ifeq ($(BR2_arm)$(BR2_armeb),y) # only set float-abi for arm TARGET_SOFT_FLOAT:=-mfloat-abi=soft else
ARC support in GCC is not upstream yet... Signed-off-by: Mischa Jonker <mjonker@synopsys.com> --- support/gnuconfig/config.sub | 4 +- toolchain/Config.in | 3 +- .../gcc/4.4.7-arc/fix_branch_out_of_range.patch | 22 ++++++++++++++++++++ toolchain/gcc/Config.in | 22 ++++++++++++------- toolchain/gcc/gcc-uclibc-4.x.mk | 4 +++ 5 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 toolchain/gcc/4.4.7-arc/fix_branch_out_of_range.patch