arc: introduce more CPU versions for selection
cover arc: introduce more CPU versions for selection
To simplify selection of proper configuration of tools for users this series adds a number of ARC CPUs in Buildroot configuration utility.
So from now on there're following CPUs available for selection:
* ARC 750D - ARC ISAv1 CPU with MMU
* ARC 770D - ARC ISAv1 CPU with MMU and additional features like atomic options
* ARC HS38 - ARC ISAv2 CPU with MMU
Note that ARC HS38 already supported by current arc-2014.08 tools.
Alexey Brodkin (3):
arc: add explicit selection of CPU templates ARC 750D and ARC770D
uclibc: add explicit setup of ARC-specific options
arc: add support of ARC HS38 core
arch/Config.in.arc | 25 +++++++++++++++++++++++-- package/uclibc/Config.in | 7 +++++++ package/uclibc/uclibc.mk | 12 ++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-)
Signature · 1 line
1.9.3
PATCH 1/3 arc: add explicit selection of CPU templates ARC 750D and ARC770D
This separation allows to specify unique options and features for each CPU.
For example ARC 770D has LLOCK/SCOND instructions built-in by default. Also this new scheme simplifies selection of proper configuration for users - preconfigured options now match templates for ARC CPUs.
--- arch/Config.in.arc | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
arch/Config.in.arc +19 -2
@@ -1,6 +1,22 @@ -# Choise of atomic instructions presence +choice + prompt "Target CPU" + depends on BR2_arc + default BR2_arc770d + help + Specific CPU to use + +config BR2_arc750d + bool "ARC 750D" + +config BR2_arc770d + bool "ARC 770D" + +endchoice + +# Choice of atomic instructions presence config BR2_ARC_ATOMIC_EXT bool "Atomic extension (LLOCK/SCOND instructions)" + default y if BR2_arc770d config BR2_ARCH_HAS_ATOMICS default y if BR2_ARC_ATOMIC_EXT
@@ -18,4 +34,5 @@ config BR2_ENDIAN default "BIG" if BR2_arceb config BR2_GCC_TARGET_CPU - default "arc700" + default "arc700" if BR2_arc750d + default "arc700" if BR2_arc770d
Signature · 1 line
1.9.3
PATCH 1/3 arc: add explicit selection of CPU templates ARC 750D and ARC770D
Alexey, All,
On 2014-10-30 16:57 +0300, Alexey Brodkin spake thusly:
Quoted 4 lines
This separation allows to specify unique options and features for each CPU.
For example ARC 770D has LLOCK/SCOND instructions built-in by default.
"built-in by default": does that mean some cores might not have atomics? Does it make sense to disable atomics for 770D at all, or should they always be enabled?
If it makes sense to disable atomics for 770D, then this code has my:
Reviewed-by: "Yann E. MORIN" <[email protected]>
However, if it does not make sense to disable atomics for 770D, then we should do it a little bit differently, like (untested):
choice
bool "Target CPU"
config BR2_arc750d
bool "ARC 750D"
select BR2_ARC_MAYBE_ATOMIC_EXT
config BR2_arc770d
bool "ARC 770D"
select BR2_ARC_ATOMIC_EXT
endchoice
config BR2_ARC_MAYBE_ATOMIC_EXT
bool
config BR2_ARC_ATOMIC_EXT
bool
prompt "Atomic extension (LLOCK/SCOND instructions)" if BR2_ARC_MAYBE_ATOMICS
config BR2_ARCH_HAS_ATOMICS
default y if BR2_ARC_ATOMIC_EXTRegards,
Yann E. MORIN.
Quoted 53 lines
Also this new scheme simplifies selection of proper configuration for users - preconfigured options now match templates for ARC CPUs.
Signed-off-by Alexey Brodkin <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Anton Kolesov <[email protected]>--- arch/Config.in.arc | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)arch/Config.in.arc +19
-2@@ -1,6 +1,22 @@ -# Choise of atomic instructions presence +choice + prompt "Target CPU" + depends on BR2_arc + default BR2_arc770d + help + Specific CPU to use + +config BR2_arc750d + bool "ARC 750D" + +config BR2_arc770d + bool "ARC 770D" + +endchoice + +# Choice of atomic instructions presence config BR2_ARC_ATOMIC_EXT bool "Atomic extension (LLOCK/SCOND instructions)" + default y if BR2_arc770d config BR2_ARCH_HAS_ATOMICS default y if BR2_ARC_ATOMIC_EXT@@ -18,4 +34,5 @@ config BR2_ENDIAN default "BIG" if BR2_arceb config BR2_GCC_TARGET_CPU - default "arc700" + default "arc700" if BR2_arc750d + default "arc700" if BR2_arc770dSignature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/3 arc: add explicit selection of CPU templates ARC 750D and ARC770D
Alexey, All,
On 2014-11-01 20:55 +0100, Yann E. MORIN spake thusly:
Quoted 7 lines
On 2014-10-30 16:57 +0300, Alexey Brodkin spake thusly:
Quoted 4 lines
This separation allows to specify unique options and features for each CPU.
For example ARC 770D has LLOCK/SCOND instructions built-in by default.
"built-in by default": does that mean some cores might not have atomics?
[--SNIP--]
OK, I was dequeuing from the bottom, so I got to read your previous explanations after I reviewed this version of the series.
Forget what I say, and just considered this to be:
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/3 arc: add explicit selection of CPU templates ARC 750D and ARC770D
In reply to Alexey BrodkinQuoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Alexey" == Alexey Brodkin <[email protected]> writes:
This separation allows to specify unique options and features for each CPU.
For example ARC 770D has LLOCK/SCOND instructions built-in by default. Also this new scheme simplifies selection of proper configuration for users - preconfigured options now match templates for ARC CPUs.
Signed-off-by Alexey Brodkin <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 2/3 uclibc: add explicit setup of ARC-specific options
In reply to Alexey BrodkinAs with other architectures for ARC we need to have an ability to set specific options in uClibc.
In particular this is required for selection of ARC ISA version.
--- package/uclibc/Config.in | 6 ++++++ package/uclibc/uclibc.mk | 12 ++++++++++++ 2 files changed, 18 insertions(+)
package/uclibc/Config.in +6 -0
@@ -194,6 +194,12 @@ config BR2_UCLIBC_TARGET_ARCH default i386 if BR2_i386 default x86_64 if BR2_x86_64 +config BR2_UCLIBC_ARC_TYPE + string + depends on BR2_UCLIBC_TARGET_ARCH = "arc" + default ARC_CPU_700 if BR2_arc750d + default ARC_CPU_700 if BR2_arc770d + config BR2_UCLIBC_ARM_BX bool depends on BR2_UCLIBC_TARGET_ARCH = "arm"
package/uclibc/uclibc.mk +12 -0
@@ -57,6 +57,17 @@ UCLIBC_LOCALES = $(foreach locale,$(GENERATE_LOCALE),\ endif # +# ARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arc) +UCLIBC_ARC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARC_TYPE)) +define UCLIBC_ARC_TYPE_CONFIG + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_TYPE),$(@D)/.config) +endef +endif # arc + +# # ARM definitions #
@@ -410,6 +421,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS $(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config) $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config) $(UCLIBC_MMU_CONFIG) + $(UCLIBC_ARC_TYPE_CONFIG) $(UCLIBC_ARM_ABI_CONFIG) $(UCLIBC_ARM_BX_CONFIG) $(UCLIBC_MIPS_ABI_CONFIG)
Signature · 1 line
1.9.3
PATCH 2/3 uclibc: add explicit setup of ARC-specific options
Alexey, All,
On 2014-10-30 16:57 +0300, Alexey Brodkin spake thusly:
Quoted 19 lines
As with other architectures for ARC we need to have an ability to set specific options in uClibc.
In particular this is required for selection of ARC ISA version.
Signed-off-by Alexey Brodkin <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Anton Kolesov <[email protected]>--- package/uclibc/Config.in | 6 ++++++ package/uclibc/uclibc.mk | 12 ++++++++++++ 2 files changed, 18 insertions(+)package/uclibc/Config.in +0
-0
package/uclibc/Config.in config BR2_UCLIBC_TARGET_ARCH · line 201
Quoted 8 lines
package/uclibc/Config.in +5
-0@@ -194,6 +194,12 @@ config BR2_UCLIBC_TARGET_ARCH default i386 if BR2_i386 default x86_64 if BR2_x86_64 +config BR2_UCLIBC_ARC_TYPE + string + depends on BR2_UCLIBC_TARGET_ARCH = "arc" + default ARC_CPU_700 if BR2_arc750d + default ARC_CPU_700 if BR2_arc770d
I know you just followed the existing style of the options around, but since this option is a "string", the default values must be enclosed between double quotes, like:
default "ARC_CPU_700" if BR2_arc750d
The fact that it works is that we are lucky there are no symbol named ARC_CPU_700, otherwise its value would be used, not the string "ARC_CPU_700".
I would prefer we get proper kconfig code, even though the rest of the code around is not correct. Maybe a preliminary patch to fix that? ;-)
Otherwise, looks good to me.
Regards,
Yann E. MORIN.
Quoted 40 lines
package/uclibc/Config.in +0
-0config BR2_UCLIBC_ARM_BX bool depends on BR2_UCLIBC_TARGET_ARCH = "arm"package/uclibc/uclibc.mk +12
-0@@ -57,6 +57,17 @@ UCLIBC_LOCALES = $(foreach locale,$(GENERATE_LOCALE),\ endif # +# ARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arc) +UCLIBC_ARC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARC_TYPE)) +define UCLIBC_ARC_TYPE_CONFIG + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_TYPE),$(@D)/.config) +endef +endif # arc + +# # ARM definitions #@@ -410,6 +421,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS $(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config) $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config) $(UCLIBC_MMU_CONFIG) + $(UCLIBC_ARC_TYPE_CONFIG) $(UCLIBC_ARM_ABI_CONFIG) $(UCLIBC_ARM_BX_CONFIG) $(UCLIBC_MIPS_ABI_CONFIG)Signature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 2/3 uclibc: add explicit setup of ARC-specific options
In reply to Alexey BrodkinQuoted 8 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Alexey" == Alexey Brodkin <[email protected]> writes:
As with other architectures for ARC we need to have an ability to set specific options in uClibc.
In particular this is required for selection of ARC ISA version.
Signed-off-by Alexey Brodkin <[email protected]>
Committed with quotes added as noted by Yann, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 3/3 arc: add support of ARC HS38 core
In reply to Alexey BrodkinSynopsys has recently announced its new ARC HS38 core that is capable of running Linux -
http://www.synopsys.com/dw/ipdir.php?ds=arc-hs38-processor
ARC HS38 is based on ARCv2 ISA and requires special settings of gcc and libc.
Also in case of HS38 atomic extensions (LLOCK/SCOND instructions) are built-in by default, so enabling atomic extensions in Buildroot as well.
This commit adds support of the core in buildroot.
--- arch/Config.in.arc | 6 +++++- package/uclibc/Config.in | 1 + 2 files changed, 6 insertions(+), 1 deletion(-)
arch/Config.in.arc +5 -1
@@ -11,12 +11,15 @@ config BR2_arc750d config BR2_arc770d bool "ARC 770D" +config BR2_archs38 + bool "ARC HS38" + endchoice # Choice of atomic instructions presence config BR2_ARC_ATOMIC_EXT bool "Atomic extension (LLOCK/SCOND instructions)" - default y if BR2_arc770d + default y if BR2_arc770d || BR2_archs38 config BR2_ARCH_HAS_ATOMICS default y if BR2_ARC_ATOMIC_EXT
@@ -36,3 +39,4 @@ config BR2_ENDIAN config BR2_GCC_TARGET_CPU default "arc700" if BR2_arc750d default "arc700" if BR2_arc770d + default "archs" if BR2_archs38
package/uclibc/Config.in +1 -0
@@ -199,6 +199,7 @@ config BR2_UCLIBC_ARC_TYPE depends on BR2_UCLIBC_TARGET_ARCH = "arc" default ARC_CPU_700 if BR2_arc750d default ARC_CPU_700 if BR2_arc770d + default ARC_CPU_HS if BR2_archs38 config BR2_UCLIBC_ARM_BX bool
Signature · 1 line
1.9.3
PATCH 3/3 arc: add support of ARC HS38 core
Alexey, All,
On 2014-10-30 16:57 +0300, Alexey Brodkin spake thusly:
Quoted 9 lines
Synopsys has recently announced its new ARC HS38 core that is capable of running Linux -
http://www.synopsys.com/dw/ipdir.php?ds=arc-hs38-processorARC HS38 is based on ARCv2 ISA and requires special settings of gcc and libc.
Also in case of HS38 atomic extensions (LLOCK/SCOND instructions) are built-in by default, so enabling atomic extensions in Buildroot as well.
Ditto as for the first patch: are atomics configurable? Ditto the proposal if not.
Quoted 42 lines
This commit adds support of the core in buildroot.
Signed-off-by Alexey Brodkin <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Anton Kolesov <[email protected]>--- arch/Config.in.arc | 6 +++++- package/uclibc/Config.in | 1 + 2 files changed, 6 insertions(+), 1 deletion(-)arch/Config.in.arc +5
-1@@ -11,12 +11,15 @@ config BR2_arc750d config BR2_arc770d bool "ARC 770D" +config BR2_archs38 + bool "ARC HS38" + endchoice # Choice of atomic instructions presence config BR2_ARC_ATOMIC_EXT bool "Atomic extension (LLOCK/SCOND instructions)" - default y if BR2_arc770d + default y if BR2_arc770d || BR2_archs38 config BR2_ARCH_HAS_ATOMICS default y if BR2_ARC_ATOMIC_EXT@@ -36,3 +39,4 @@ config BR2_ENDIAN config BR2_GCC_TARGET_CPU default "arc700" if BR2_arc750d default "arc700" if BR2_arc770d + default "archs" if BR2_archs38package/uclibc/Config.in +0
-0
package/uclibc/Config.in config BR2_UCLIBC_ARC_TYPE · line 202
Quoted 4 lines
package/uclibc/Config.in +1
-0@@ -199,6 +199,7 @@ config BR2_UCLIBC_ARC_TYPE depends on BR2_UCLIBC_TARGET_ARCH = "arc" default ARC_CPU_700 if BR2_arc750d default ARC_CPU_700 if BR2_arc770d + default ARC_CPU_HS if BR2_archs38
Ditto: this is a string, so values must be enclosed between double quotes.
Regards,
Yann E. MORIN.
Quoted 10 lines
package/uclibc/Config.in +0
-0config BR2_UCLIBC_ARM_BX boolSignature · 6 lines
1.9.3 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 3/3 arc: add support of ARC HS38 core
Alexey, All,
On 2014-11-01 22:47 +0100, Yann E. MORIN spake thusly:
Quoted 5 lines
On 2014-10-30 16:57 +0300, Alexey Brodkin spake thusly:
Quoted 4 lines
Synopsys has recently announced its new ARC HS38 core that is capable of running Linux -
http://www.synopsys.com/dw/ipdir.php?ds=arc-hs38-processor
Quoted 8 lines
Quoted 5 lines
ARC HS38 is based on ARCv2 ISA and requires special settings of gcc and libc.
Also in case of HS38 atomic extensions (LLOCK/SCOND instructions) are built-in by default, so enabling atomic extensions in Buildroot as well.
Ditto as for the first patch: are atomics configurable? Ditto the proposal if not.
Ditto: I just read your previous explanations, so just forget about that part. Still the comment below stands...
[--SNIP--]
Quoted 4 lines
Quoted 4 lines
package/uclibc/Config.in +0
-0
Quoted 8 lines
package/uclibc/Config.in config BR2_UCLIBC_ARC_TYPE · line 202
Quoted 5 lines
package/uclibc/Config.in +1
-0@@ -199,6 +199,7 @@ config BR2_UCLIBC_ARC_TYPE depends on BR2_UCLIBC_TARGET_ARCH = "arc" default ARC_CPU_700 if BR2_arc750d default ARC_CPU_700 if BR2_arc770d + default ARC_CPU_HS if BR2_archs38Ditto: this is a string, so values must be enclosed between double quotes.
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 3/3 arc: add support of ARC HS38 core
In reply to Alexey BrodkinQuoted 6 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Alexey" == Alexey Brodkin <[email protected]> writes:
Synopsys has recently announced its new ARC HS38 core that is capable of running Linux -
http://www.synopsys.com/dw/ipdir.php?ds=arc-hs38-processor
Quoted 7 lines
ARC HS38 is based on ARCv2 ISA and requires special settings of gcc and libc.
Also in case of HS38 atomic extensions (LLOCK/SCOND instructions) are built-in by default, so enabling atomic extensions in Buildroot as well.
This commit adds support of the core in buildroot.
Committed with quotes added as noted by Yann, thanks.
Signature · 1 line
Bye, Peter Korsgaard