Skip to contentSkip to conversation

arch/x86: remove support for i386

PATCH Superseded Thomas Petazzoni 2 participants 4 messages Apr 17, 2016 – Apr 18, 2016

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 arch/x86: remove support for i386

The Linux kernel doesn't even support i386 anymore, there is no NPTL support for i386 and uClibc-ng only supports NPTL on x86, so there is essentially no usable thread implementation. Most likely glibc and musl also don't support i386 either. So it's time to remove the support for this architecture variant.

---
Changes since v1:
- Add Config.in.legacy entry, as suggested by Arnout.
- Remove i386 reference in qemu.mk, as noticed by Arnout.

---
 .defconfig                             | 1 -
 Config.in.legacy                       | 6 ++++++
 arch/Config.in.x86                     | 5 -----
 package/openssl/openssl.mk             | 5 -----
 package/qemu/qemu.mk                   | 1 -
 package/uclibc/Config.in               | 3 +--
 toolchain/toolchain-common.in          | 3 ---
 toolchain/toolchain-external/Config.in | 3 +--
 8 files changed, 8 insertions(+), 19 deletions(-)
.defconfig +0 -1
index 585be55..037647e 100644
@@ -19,7 +19,6 @@ BR2_i386=y
 # BR2_sparc is not set
 # BR2_sparc64 is not set
 # BR2_x86_64 is not set
-# BR2_x86_i386 is not set
 # BR2_x86_i486 is not set
 # BR2_x86_i586 is not set
 BR2_x86_i686=y
Config.in.legacy +6 -0
index 60702ce..b2bd034 100644
@@ -145,6 +145,12 @@ endif
 ###############################################################################
 comment "Legacy options removed in 2016.05"
 
+config BR2_x86_i386
+	bool "x86 i386 support removed"
+	help
+	  The support for the i386 processors of the x86 architecture
+	  has been removed.
+
 config BR2_PACKAGE_QT5WEBKIT_EXAMPLES
 	bool "qt5webkit-examples package removed"
 	select BR2_LEGACY
arch/Config.in.x86 +0 -5
index 7be814b..4039db8 100644
@@ -25,9 +25,6 @@ choice
 	help
 	  Specific CPU variant to use
 
-config BR2_x86_i386
-	bool "i386"
-	depends on !BR2_x86_64
 config BR2_x86_i486
 	bool "i486"
 	depends on !BR2_x86_64
@@ -210,7 +207,6 @@ config BR2_x86_winchip2
 endchoice
 
 config BR2_ARCH
-	default "i386"		if BR2_x86_i386
 	default "i486"		if BR2_x86_i486
 	default "i586"		if BR2_x86_i586
 	default "i586"		if BR2_x86_x1000
@@ -246,7 +242,6 @@ config BR2_ENDIAN
 	default "LITTLE"
 
 config BR2_GCC_TARGET_ARCH
-	default "i386"		if BR2_x86_i386
 	default "i486"		if BR2_x86_i486
 	default "i586"		if BR2_x86_i586
 	default "i586"		if BR2_x86_x1000
package/openssl/openssl.mk +0 -5
index 30dfe31..3b8e525 100644
@@ -53,11 +53,6 @@ ifeq ($(ARCH),x86_64)
 OPENSSL_TARGET_ARCH = x86_64
 endif
 
-# Workaround for bug #3445
-ifeq ($(BR2_x86_i386),y)
-OPENSSL_TARGET_ARCH = generic32 386
-endif
-
 define HOST_OPENSSL_CONFIGURE_CMDS
 	(cd $(@D); \
 		$(HOST_CONFIGURE_OPTS) \
package/qemu/qemu.mk +0 -1
index 4397367..522910e 100644
@@ -23,7 +23,6 @@ HOST_QEMU_DEPENDENCIES = host-pkgconf host-python host-zlib host-libglib2 host-p
 #       arm             arm
 #       armeb           armeb
 #       bfin            not supported
-#       i386            i386
 #       i486            i386
 #       i586            i386
 #       i686            i386
package/uclibc/Config.in +1 -2
index eac5d05..efa84e9 100644
@@ -71,7 +71,7 @@ choice
 		select BR2_TOOLCHAIN_HAS_THREADS
 		select BR2_TOOLCHAIN_HAS_THREADS_NPTL
 		depends on BR2_USE_MMU
-		depends on !BR2_m68k && !BR2_x86_i386
+		depends on !BR2_m68k
 endchoice
 
 config BR2_PTHREAD_DEBUG
@@ -176,7 +176,6 @@ config BR2_UCLIBC_POWERPC_TYPE
 config BR2_UCLIBC_X86_TYPE
 	string
 	depends on BR2_UCLIBC_TARGET_ARCH = "i386"
-	default "386"        if BR2_x86_i386
 	default "486"        if BR2_x86_i486
 	default "586"        if BR2_x86_i586
 	default "586MMX"     if BR2_x86_pentium_mmx
toolchain/toolchain-common.in +0 -3
index 0907c5e..7ad1c05 100644
@@ -316,7 +316,6 @@ config BR2_TOOLCHAIN_GCC_AT_LEAST
 config BR2_TOOLCHAIN_HAS_SYNC_1
 	bool
 	default y
-	depends on !BR2_x86_i386
 	depends on !BR2_bfin
 	depends on !BR2_microblaze
 	depends on !BR2_sparc
@@ -330,7 +329,6 @@ config BR2_TOOLCHAIN_HAS_SYNC_4
 	bool
 	default y
 	depends on !BR2_sparc
-	depends on !BR2_x86_i386
 	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
 
 # The availability of __sync for 8-byte types on ARM is somewhat
@@ -362,7 +360,6 @@ config BR2_TOOLCHAIN_X86_HAS_SYNC_8
 	bool
 	default y
 	depends on BR2_i386
-	depends on !BR2_x86_i386
 	depends on !BR2_x86_i486
 	depends on !BR2_x86_c3
 	depends on !BR2_x86_winchip_c6
toolchain/toolchain-external/Config.in +1 -2
index ff759a0..d6f57a1 100644
@@ -615,8 +615,7 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
 	bool "Musl 1.1.12 toolchain (experimental)"
 	depends on (BR2_arm && BR2_ARM_EABI) || \
 		(BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4) || \
-		(BR2_armeb && BR2_ARM_EABI) || \
-		(BR2_i386 && !BR2_x86_i386) || \
+		(BR2_armeb && BR2_ARM_EABI) || BR2_i386 || \
 		(BR2_mips && !BR2_SOFT_FLOAT) || \
 		BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \
 		BR2_sh4 || BR2_sh4eb || \
Signature · 1 line
2.6.4
#1 lore raw

PATCH v2 1/1 arch/x86: remove support for i386

Quoted 7 lines · Thomas Petazzoni

The Linux kernel doesn't even support i386 anymore, there is no NPTL support for i386 and uClibc-ng only supports NPTL on x86, so there is essentially no usable thread implementation. Most likely glibc and musl also don't support i386 either. So it's time to remove the support for this architecture variant.

[snip]

toolchain/toolchain-external/Config.in config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS · line 617

Quoted 8 lines
toolchain/toolchain-external/Config.in +0 -0
index ff759a0..d6f57a1 100644
@@ -615,8 +615,7 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
  	bool "Musl 1.1.12 toolchain (experimental)"
  	depends on (BR2_arm && BR2_ARM_EABI) || \
  		(BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4) || \

With this patch I notice this... Huh? AFAIK ARMv4 cannot have VFPv2, so it
can't be EABIhf, right? I guess, Thomas, that you just blindly set this because the EABIhf version of the toolchain is ARMv5, without realizing that it's ARMv5 because EABIhf doesn't exist for v4?

Regards,
Arnout

Quoted 7 lines
toolchain/toolchain-external/Config.in +1 -2
-		(BR2_armeb && BR2_ARM_EABI) || \
-		(BR2_i386 && !BR2_x86_i386) || \
+		(BR2_armeb && BR2_ARM_EABI) || BR2_i386 || \
  		(BR2_mips && !BR2_SOFT_FLOAT) || \
  		BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \
  		BR2_sh4 || BR2_sh4eb || \
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#2 lore raw

PATCH v2 1/1 arch/x86: remove support for i386

Hello,

Quoted 3 lines · Arnout Vandecappelle
Quoted 1 line

Thanks!

Quoted 5 lines
Quoted 5 lines
toolchain/toolchain-external/Config.in +0 -0
index ff759a0..d6f57a1 100644
@@ -615,8 +615,7 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
Quoted 8 lines

toolchain/toolchain-external/Config.in config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS · line 617

Quoted 3 lines
toolchain/toolchain-external/Config.in +0 -0
  	bool "Musl 1.1.12 toolchain (experimental)"
  	depends on (BR2_arm && BR2_ARM_EABI) || \
  		(BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4) || \

With this patch I notice this... Huh? AFAIK ARMv4 cannot have VFPv2, so it
can't be EABIhf, right? I guess, Thomas, that you just blindly set this because the EABIhf version of the toolchain is ARMv5, without realizing that it's ARMv5 because EABIhf doesn't exist for v4?

You're right!

So I guess something like this could be applied, right:

toolchain/toolchain-external/Config.in +1 -3
index ff759a0..65a0655 100644
@@ -613,9 +613,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
 
 config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
        bool "Musl 1.1.12 toolchain (experimental)"
-       depends on (BR2_arm && BR2_ARM_EABI) || \
-               (BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4) || \
-               (BR2_armeb && BR2_ARM_EABI) || \
+       depends on BR2_arm || (BR2_armeb && BR2_ARM_EABI) || \
                (BR2_i386 && !BR2_x86_i386) || \
                (BR2_mips && !BR2_SOFT_FLOAT) || \
                BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \

Thanks for spotting this!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
author Applied
#3 lore raw

PATCH v2 1/1 arch/x86: remove support for i386

In reply to Thomas Petazzoni

Hello,

Quoted 11 lines · Thomas Petazzoni

The Linux kernel doesn't even support i386 anymore, there is no NPTL support for i386 and uClibc-ng only supports NPTL on x86, so there is essentially no usable thread implementation. Most likely glibc and musl also don't support i386 either. So it's time to remove the support for this architecture variant.

---
Changes since v1:
- Add Config.in.legacy entry, as suggested by Arnout.
- Remove i386 reference in qemu.mk, as noticed by Arnout.

Quoted 10 lines
---
 .defconfig                             | 1 -
 Config.in.legacy                       | 6 ++++++
 arch/Config.in.x86                     | 5 -----
 package/openssl/openssl.mk             | 5 -----
 package/qemu/qemu.mk                   | 1 -
 package/uclibc/Config.in               | 3 +--
 toolchain/toolchain-common.in          | 3 ---
 toolchain/toolchain-external/Config.in | 3 +--
 8 files changed, 8 insertions(+), 19 deletions(-)

Applied to master.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com