All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [pull request v3] Pull request for branch update-mips-support
@ 2012-09-04 14:09 Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 1/4] uClibc: use BR2_ENDIAN to simplify endianess selection Thomas Petazzoni
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-09-04 14:09 UTC (permalink / raw)
  To: buildroot

Hello,

Here is a new version of the patch set that clarifies MIPS support,
and especially MIPS64 support.

It has four patches:

 * First patch refactors some uclibc.mk to use the existing BR2_ENDIAN
   config option rather than doing the same work again.

 * Second patch reworks the config option for mips. It creates two
   separate two level architectures for MIPS and MIPS64, and then
   clarifies the ABI names and config options.

 * Third patch (from Gustavo) remove old MIPS64 related toolchain
   kludge

 * Fourth patch (from Gustavo) adds a defconfig to build a mips64
   system for Qemu

Changes since v2:
 * None, except rebasing on master.

Changes since v1:

 * Addition of the first, third and fourth patches.
 * Separation of top-level mips64 architectures.
 * Simplification of uClibc code to find the architecture.

Best regards,

Thomas


The following changes since commit 27045cde7d18f6132ab804ed30673e3fb3961879:

  gcc: default to 4.6.x (2012-09-04 13:28:03 +0200)

are available in the git repository at:

  git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git update-mips-support

for you to fetch changes up to 0d47f0d4b6ef8c47d226854c736b9bc87a00073a:

  qemu/mips64-malta: add new sample config (2012-09-04 16:06:51 +0200)

----------------------------------------------------------------
Gustavo Zacarias (2):
      mips64: remove toolchain kludge
      qemu/mips64-malta: add new sample config

Thomas Petazzoni (2):
      uClibc: use BR2_ENDIAN to simplify endianess selection
      Clarify MIPS ABIs support

 board/qemu/mips64-malta/linux-3.3.config |   78 ++++++++++++++++++++++++++++++
 board/qemu/mips64-malta/readme.txt       |    7 +++
 configs/qemu_mips64_malta_defconfig      |   24 +++++++++
 package/Makefile.in                      |    4 --
 target/Config.in.arch                    |   60 +++++++++++++----------
 toolchain/uClibc/uclibc.mk               |   24 ++-------
 6 files changed, 149 insertions(+), 48 deletions(-)
 create mode 100644 board/qemu/mips64-malta/linux-3.3.config
 create mode 100644 board/qemu/mips64-malta/readme.txt
 create mode 100644 configs/qemu_mips64_malta_defconfig

Thanks,
-- 
Thomas Petazzoni

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 1/4] uClibc: use BR2_ENDIAN to simplify endianess selection
  2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
@ 2012-09-04 14:09 ` Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support Thomas Petazzoni
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-09-04 14:09 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/uClibc/uclibc.mk |   17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index 9d0b6db..583d199 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -41,22 +41,9 @@ UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
 		-e 's/cris.*/cris/' \
 		-e 's/xtensa.*/xtensa/' \
 ")
-# just handle the ones that can be big or little
-UCLIBC_TARGET_ENDIAN:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
-		-e 's/armeb/BIG/' \
-		-e 's/arm/LITTLE/' \
-		-e 's/mipsel/LITTLE/' \
-		-e 's/mips/BIG/' \
-		-e 's/sh.*eb/BIG/' \
-		-e 's/sh.*/LITTLE/' \
-		-e 's/sparc.*/BIG/' \
-")
 
-ifneq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
-ifneq ($(UCLIBC_TARGET_ENDIAN),BIG)
-UCLIBC_TARGET_ENDIAN:=
-endif
-endif
+UCLIBC_TARGET_ENDIAN:=$(call qstrip,$(BR2_ENDIAN))
+
 ifeq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
 UCLIBC_NOT_TARGET_ENDIAN:=BIG
 else
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support
  2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 1/4] uClibc: use BR2_ENDIAN to simplify endianess selection Thomas Petazzoni
@ 2012-09-04 14:09 ` Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 3/4] mips64: remove toolchain kludge Thomas Petazzoni
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-09-04 14:09 UTC (permalink / raw)
  To: buildroot

Practically speaking, MIPS has three useful ABIs:

 * o32 is for 32-bits CPUs, or 64-bit CPUs running only a 32-bit subset
   of the instruction set.
 * n32 is for 64-bits CPUs only. It has 32-bits pointers and long
   integers.
 * n64 is for 64-bits CPUs only. It has 64-bits pointers and long
   integers.

See http://www.linux-mips.org/wiki/MIPS_ABI_History and
http://www.linux-mips.org/wiki/WhatsWrongWithO32N32N64 for more
details.

So, this commit reworks the Buildroot MIPS support by:

 * Add separate mips64/mips64el top-level architectures.

 * Renaming the n32 ABI option to BR2_MIPS_NABI32, for consistency
   with BR2_MIPS_OABI32.

 * Renaming the n64 ABI option to BR2_MIPS_NABI64, for consistency
   with BR2_MIPS_OABI32.

 * Make the n32 and n64 ABI selections select the BR2_ARCH_IS_64,
   since those ABIs are valid on 64-bits CPUs only.

 * Removing the o64 ABI, which is practicaly never used.

 * Removing the "none" ABI, which really doesn't make sense.

 * Introduce the mips64 and mips64el architecture names when a 64-bits
   MIPS ABI is choosen. This will fix build issue like
   http://autobuild.buildroot.org/results/9b8c5ea86c953a89e85e7b67e9221de41773f652/build-end.log
   where gmp was confused by the fact of having a 32 bits architecture
   (detected by the mips- architecture part of the tuple) but 64 bits
   integer size when compiling.

 * Adjust the uclibc.mk logic to support the new mips64/mips64el
   architecture names, and take into account the renaming of the ABI
   options.

This has been build tested by generating Buildroot toolchains and
compiling a few packages for MIPS o32, MIPS n32 and MIPS n64.

This work is originally based on prior work done by Gustavo Zacarias.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in        |    2 +-
 target/Config.in.arch      |   60 ++++++++++++++++++++++++++------------------
 toolchain/uClibc/uclibc.mk |    7 +++---
 3 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/package/Makefile.in b/package/Makefile.in
index 6fad224..21b8634 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -87,7 +87,7 @@ endif
 
 TARGET_CFLAGS=$(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
 
-ifeq ($(findstring yy,$(BR2_mips)$(BR2_MIPS_ABI64)),yy)
+ifeq ($(findstring yy,$(BR2_mips)$(BR2_MIPS_NABI64)),yy)
 TARGET_CFLAGS+=-fno-pic -mno-abicalls
 endif
 
diff --git a/target/Config.in.arch b/target/Config.in.arch
index 342066e..860bf43 100644
--- a/target/Config.in.arch
+++ b/target/Config.in.arch
@@ -83,6 +83,22 @@ config BR2_mipsel
 	  http://www.mips.com/
 	  http://en.wikipedia.org/wiki/MIPS_Technologies
 
+config BR2_mips64
+	bool "MIPS64 (big endian)"
+	select BR2_ARCH_IS_64
+	help
+	  MIPS is a RISC microprocessor from MIPS Technologies. Big endian.
+	  http://www.mips.com/
+	  http://en.wikipedia.org/wiki/MIPS_Technologies
+
+config BR2_mips64el
+	bool "MIPS64 (little endian)"
+	select BR2_ARCH_IS_64
+	help
+	  MIPS is a RISC microprocessor from MIPS Technologies. Big endian.
+	  http://www.mips.com/
+	  http://en.wikipedia.org/wiki/MIPS_Technologies
+
 config BR2_powerpc
 	bool "PowerPC"
 	help
@@ -237,9 +253,10 @@ endchoice
 
 choice
 	prompt "Target Architecture Variant"
-	depends on BR2_mips || BR2_mipsel
+	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
 	default BR2_mips_3 if BR2_mips
 	default BR2_mips_1 if BR2_mipsel
+	default BR2_mips_64 if BR2_mips64 || BR2_mips64el
 	help
 	  Specific CPU variant to use
 
@@ -248,49 +265,43 @@ choice
 
 config BR2_mips_1
 	bool "mips I (generic)"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_2
 	bool "mips II"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_3
 	bool "mips III"
 config BR2_mips_4
 	bool "mips IV"
 config BR2_mips_32
 	bool "mips 32"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_32r2
 	bool "mips 32r2"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_64
 	bool "mips 64"
 config BR2_mips_64r2
 	bool "mips 64r2"
-config BR2_mips_16
-	bool "mips 16"
 endchoice
 
 
 choice
 	prompt "Target ABI"
-	depends on BR2_mips || BR2_mipsel
-	default BR2_MIPS_OABI32 if BR_mips_32 || BR_mips_32r2
-	default BR2_MIPS_ABI32 if BR_mips_64 || BR_mips_64r2
+	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+	default BR2_MIPS_OABI32 if !BR2_ARCH_IS_64
+	default BR2_MIPS_NABI32 if BR2_ARCH_IS_64
 	help
 	  Application Binary Interface to use
 
 config BR2_MIPS_OABI32
 	bool "o32"
-config BR2_MIPS_ABI32
+config BR2_MIPS_NABI32
 	bool "n32"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_ABI64
+	depends on BR2_ARCH_IS_64
+config BR2_MIPS_NABI64
 	bool "n64"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_OABI64
-	bool "o64"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_ABI_none
-	bool "unspecified"
-	depends on BR2_mips_16
-	help
-	  Unspecified ABI leaves ABI selection blank.
+	depends on BR2_ARCH_IS_64
 endchoice
 
 choice
@@ -667,6 +678,8 @@ config BR2_ARCH
 	default "microblaze"	if BR2_microblaze
 	default "mips"		if BR2_mips
 	default "mipsel"	if BR2_mipsel
+	default "mips64"	if BR2_mips64
+	default "mips64el"	if BR2_mips64el
 	default "powerpc"	if BR2_powerpc
 	default "sh2"		if BR2_sh2
 	default "sh2a"		if BR2_sh2a
@@ -683,10 +696,10 @@ config BR2_ARCH
 
 config BR2_ENDIAN
 	string
-	default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || \
+	default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || BR2_mips64el || \
 			    BR2_sh3 || BR2_sh4 || BR2_sh4a || BR2_x86_64 || BR2_sh64 || \
 			    BR2_microblazeel
-	default "BIG"    if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || \
+	default "BIG"    if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || BR2_mips64 || \
 			    BR2_powerpc || BR2_sh2 || BR2_sh2a || \
 			    BR2_sh3eb || BR2_sh4eb || BR2_sh4aeb || BR2_sparc || \
 			    BR2_microblazebe
@@ -754,7 +767,6 @@ config BR2_GCC_TARGET_TUNE
 	default mips32r2	if BR2_mips_32r2
 	default mips64		if BR2_mips_64
 	default mips64r2	if BR2_mips_64r2
-	default mips16		if BR2_mips_16
 	default 401		if BR2_powerpc_401
 	default 403		if BR2_powerpc_403
 	default 405		if BR2_powerpc_405
@@ -859,10 +871,8 @@ config BR2_GCC_TARGET_ABI
 	default apcs-gnu	if BR2_ARM_OABI
 	default aapcs-linux	if BR2_ARM_EABI
 	default 32		if BR2_MIPS_OABI32
-	default n32		if BR2_MIPS_ABI32
-	default eabi		if BR2_MIPS_EABI
-	default o64		if BR2_MIPS_OABI64
-	default 64		if BR2_MIPS_ABI64
+	default n32		if BR2_MIPS_NABI32
+	default 64		if BR2_MIPS_NABI64
 	default altivec		if BR2_powerpc && BR2_PPC_ABI_altivec
 	default no-altivec	if BR2_powerpc && BR2_PPC_ABI_no-altivec
 	default spe		if BR2_powerpc && BR2_PPC_ABI_spe
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index 583d199..534550a 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -37,7 +37,6 @@ UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
 		-e 's/v850.*/v850/g' \
 		-e 's/sh[234].*/sh/' \
 		-e 's/mips.*/mips/' \
-		-e 's/mipsel.*/mips/' \
 		-e 's/cris.*/cris/' \
 		-e 's/xtensa.*/xtensa/' \
 ")
@@ -142,13 +141,13 @@ ifeq ($(UCLIBC_TARGET_ARCH),mips)
 	 /bin/echo "# CONFIG_MIPS_ISA_MIPS32R2 is not set"; \
 	 /bin/echo "# CONFIG_MIPS_ISA_MIPS64 is not set"; \
 	) >> $(UCLIBC_DIR)/.oldconfig
-ifeq ($(BR2_MIPS_OABI),y)
+ifeq ($(BR2_MIPS_OABI32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
-ifeq ($(BR2_MIPS_ABI32),y)
+ifeq ($(BR2_MIPS_NABI32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
-ifeq ($(BR2_MIPS_ABI64),y)
+ifeq ($(BR2_MIPS_NABI64),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
 ifeq ($(BR2_mips_1),y)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 3/4] mips64: remove toolchain kludge
  2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 1/4] uClibc: use BR2_ENDIAN to simplify endianess selection Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support Thomas Petazzoni
@ 2012-09-04 14:09 ` Thomas Petazzoni
  2012-09-04 14:09 ` [Buildroot] [PATCH 4/4] qemu/mips64-malta: add new sample config Thomas Petazzoni
  2012-09-04 20:04 ` [Buildroot] [pull request v3] Pull request for branch update-mips-support Peter Korsgaard
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-09-04 14:09 UTC (permalink / raw)
  To: buildroot

From: Gustavo Zacarias <gustavo@zacarias.com.ar>

-mno-abicalls is an old kludge for some (probably) old issue.
Remove it since it's actually harmful, static busybox doesn't build with
it for a modern-ish toolchain (defaults as of this commit, uClibc
0.9.33.2 + gcc 4.5.4).

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in |    4 ----
 1 file changed, 4 deletions(-)

diff --git a/package/Makefile.in b/package/Makefile.in
index 21b8634..340e387 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -87,10 +87,6 @@ endif
 
 TARGET_CFLAGS=$(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
 
-ifeq ($(findstring yy,$(BR2_mips)$(BR2_MIPS_NABI64)),yy)
-TARGET_CFLAGS+=-fno-pic -mno-abicalls
-endif
-
 ifeq ($(BR2_LARGEFILE),y)
 TARGET_CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
 endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 4/4] qemu/mips64-malta: add new sample config
  2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2012-09-04 14:09 ` [Buildroot] [PATCH 3/4] mips64: remove toolchain kludge Thomas Petazzoni
@ 2012-09-04 14:09 ` Thomas Petazzoni
  2012-09-04 20:04 ` [Buildroot] [pull request v3] Pull request for branch update-mips-support Peter Korsgaard
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-09-04 14:09 UTC (permalink / raw)
  To: buildroot

From: Gustavo Zacarias <gustavo@zacarias.com.ar>

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 board/qemu/mips64-malta/linux-3.3.config |   78 ++++++++++++++++++++++++++++++
 board/qemu/mips64-malta/readme.txt       |    7 +++
 configs/qemu_mips64_malta_defconfig      |   24 +++++++++
 3 files changed, 109 insertions(+)
 create mode 100644 board/qemu/mips64-malta/linux-3.3.config
 create mode 100644 board/qemu/mips64-malta/readme.txt
 create mode 100644 configs/qemu_mips64_malta_defconfig

diff --git a/board/qemu/mips64-malta/linux-3.3.config b/board/qemu/mips64-malta/linux-3.3.config
new file mode 100644
index 0000000..6e7f7ee
--- /dev/null
+++ b/board/qemu/mips64-malta/linux-3.3.config
@@ -0,0 +1,78 @@
+CONFIG_MIPS_MALTA=y
+CONFIG_CPU_MIPS64_R1=y
+CONFIG_64BIT=y
+CONFIG_64BIT_PHYS_ADDR=y
+CONFIG_MIPS_MT_SMP=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_HZ_100=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_SYSVIPC=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_SYSFS_DEPRECATED_V2=y
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_PID_NS=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_PCI=y
+CONFIG_PM=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+# CONFIG_MISC_DEVICES is not set
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_GENERIC=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_NETDEVICES=y
+CONFIG_NET_ETHERNET=y
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_WLAN is not set
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO_I8042 is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HWMON is not set
+# CONFIG_MFD_SUPPORT is not set
+CONFIG_FB=y
+CONFIG_FB_CIRRUS=y
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_HID_SUPPORT is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+CONFIG_QUOTA=y
+CONFIG_PROC_KCORE=y
+CONFIG_TMPFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_ROOT_NFS=y
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
diff --git a/board/qemu/mips64-malta/readme.txt b/board/qemu/mips64-malta/readme.txt
new file mode 100644
index 0000000..5087b01
--- /dev/null
+++ b/board/qemu/mips64-malta/readme.txt
@@ -0,0 +1,7 @@
+Run the emulation with:
+
+ qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -hda output/images/rootfs.ext2 -append "root=/dev/hda"
+
+The login prompt will appear in the terminal that started Qemu. The
+graphical window is the framebuffer. No keyboard support has been
+enabled.
diff --git a/configs/qemu_mips64_malta_defconfig b/configs/qemu_mips64_malta_defconfig
new file mode 100644
index 0000000..5653c88
--- /dev/null
+++ b/configs/qemu_mips64_malta_defconfig
@@ -0,0 +1,24 @@
+# Architecture
+BR2_mips=y
+BR2_mips_64=y
+BR2_MIPS_NABI64=y
+
+# Toolchain
+# uClibc dynamic loader seems broken for mips64
+BR2_PREFER_STATIC_LIB=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_EXT2=y
+# BR2_TARGET_ROOTFS_TAR is not set
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.3.8"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux-3.3.config"
+BR2_LINUX_KERNEL_VMLINUX=y
+
+# Serial port config
+BR2_TARGET_GENERIC_GETTY=y
+BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [pull request v3] Pull request for branch update-mips-support
  2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2012-09-04 14:09 ` [Buildroot] [PATCH 4/4] qemu/mips64-malta: add new sample config Thomas Petazzoni
@ 2012-09-04 20:04 ` Peter Korsgaard
  4 siblings, 0 replies; 7+ messages in thread
From: Peter Korsgaard @ 2012-09-04 20:04 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> Hello,
 Thomas> Here is a new version of the patch set that clarifies MIPS support,
 Thomas> and especially MIPS64 support.

 Thomas> It has four patches:

 Thomas>  * First patch refactors some uclibc.mk to use the existing BR2_ENDIAN
 Thomas>    config option rather than doing the same work again.

 Thomas>  * Second patch reworks the config option for mips. It creates two
 Thomas>    separate two level architectures for MIPS and MIPS64, and then
 Thomas>    clarifies the ABI names and config options.

 Thomas>  * Third patch (from Gustavo) remove old MIPS64 related toolchain
 Thomas>    kludge

 Thomas>  * Fourth patch (from Gustavo) adds a defconfig to build a mips64
 Thomas>    system for Qemu

Committed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support
  2012-08-05 10:04 [Buildroot] [v2] Improve MIPS support Thomas Petazzoni
@ 2012-08-05 10:04 ` Thomas Petazzoni
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2012-08-05 10:04 UTC (permalink / raw)
  To: buildroot

Practically speaking, MIPS has three useful ABIs:

 * o32 is for 32-bits CPUs, or 64-bit CPUs running only a 32-bit subset
   of the instruction set.
 * n32 is for 64-bits CPUs only. It has 32-bits pointers and long
   integers.
 * n64 is for 64-bits CPUs only. It has 64-bits pointers and long
   integers.

See http://www.linux-mips.org/wiki/MIPS_ABI_History and
http://www.linux-mips.org/wiki/WhatsWrongWithO32N32N64 for more
details.

So, this commit reworks the Buildroot MIPS support by:

 * Add separate mips64/mips64el top-level architectures.

 * Renaming the n32 ABI option to BR2_MIPS_NABI32, for consistency
   with BR2_MIPS_OABI32.

 * Renaming the n64 ABI option to BR2_MIPS_NABI64, for consistency
   with BR2_MIPS_OABI32.

 * Make the n32 and n64 ABI selections select the BR2_ARCH_IS_64,
   since those ABIs are valid on 64-bits CPUs only.

 * Removing the o64 ABI, which is practicaly never used.

 * Removing the "none" ABI, which really doesn't make sense.

 * Introduce the mips64 and mips64el architecture names when a 64-bits
   MIPS ABI is choosen. This will fix build issue like
   http://autobuild.buildroot.org/results/9b8c5ea86c953a89e85e7b67e9221de41773f652/build-end.log
   where gmp was confused by the fact of having a 32 bits architecture
   (detected by the mips- architecture part of the tuple) but 64 bits
   integer size when compiling.

 * Adjust the uclibc.mk logic to support the new mips64/mips64el
   architecture names, and take into account the renaming of the ABI
   options.

This has been build tested by generating Buildroot toolchains and
compiling a few packages for MIPS o32, MIPS n32 and MIPS n64.

This work is originally based on prior work done by Gustavo Zacarias.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in        |    2 +-
 target/Config.in.arch      |   60 ++++++++++++++++++++++++++------------------
 toolchain/uClibc/uclibc.mk |    7 +++---
 3 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/package/Makefile.in b/package/Makefile.in
index 6fad224..21b8634 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -87,7 +87,7 @@ endif
 
 TARGET_CFLAGS=$(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
 
-ifeq ($(findstring yy,$(BR2_mips)$(BR2_MIPS_ABI64)),yy)
+ifeq ($(findstring yy,$(BR2_mips)$(BR2_MIPS_NABI64)),yy)
 TARGET_CFLAGS+=-fno-pic -mno-abicalls
 endif
 
diff --git a/target/Config.in.arch b/target/Config.in.arch
index 342066e..860bf43 100644
--- a/target/Config.in.arch
+++ b/target/Config.in.arch
@@ -83,6 +83,22 @@ config BR2_mipsel
 	  http://www.mips.com/
 	  http://en.wikipedia.org/wiki/MIPS_Technologies
 
+config BR2_mips64
+	bool "MIPS64 (big endian)"
+	select BR2_ARCH_IS_64
+	help
+	  MIPS is a RISC microprocessor from MIPS Technologies. Big endian.
+	  http://www.mips.com/
+	  http://en.wikipedia.org/wiki/MIPS_Technologies
+
+config BR2_mips64el
+	bool "MIPS64 (little endian)"
+	select BR2_ARCH_IS_64
+	help
+	  MIPS is a RISC microprocessor from MIPS Technologies. Big endian.
+	  http://www.mips.com/
+	  http://en.wikipedia.org/wiki/MIPS_Technologies
+
 config BR2_powerpc
 	bool "PowerPC"
 	help
@@ -237,9 +253,10 @@ endchoice
 
 choice
 	prompt "Target Architecture Variant"
-	depends on BR2_mips || BR2_mipsel
+	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
 	default BR2_mips_3 if BR2_mips
 	default BR2_mips_1 if BR2_mipsel
+	default BR2_mips_64 if BR2_mips64 || BR2_mips64el
 	help
 	  Specific CPU variant to use
 
@@ -248,49 +265,43 @@ choice
 
 config BR2_mips_1
 	bool "mips I (generic)"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_2
 	bool "mips II"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_3
 	bool "mips III"
 config BR2_mips_4
 	bool "mips IV"
 config BR2_mips_32
 	bool "mips 32"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_32r2
 	bool "mips 32r2"
+	depends on !BR2_ARCH_IS_64
 config BR2_mips_64
 	bool "mips 64"
 config BR2_mips_64r2
 	bool "mips 64r2"
-config BR2_mips_16
-	bool "mips 16"
 endchoice
 
 
 choice
 	prompt "Target ABI"
-	depends on BR2_mips || BR2_mipsel
-	default BR2_MIPS_OABI32 if BR_mips_32 || BR_mips_32r2
-	default BR2_MIPS_ABI32 if BR_mips_64 || BR_mips_64r2
+	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+	default BR2_MIPS_OABI32 if !BR2_ARCH_IS_64
+	default BR2_MIPS_NABI32 if BR2_ARCH_IS_64
 	help
 	  Application Binary Interface to use
 
 config BR2_MIPS_OABI32
 	bool "o32"
-config BR2_MIPS_ABI32
+config BR2_MIPS_NABI32
 	bool "n32"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_ABI64
+	depends on BR2_ARCH_IS_64
+config BR2_MIPS_NABI64
 	bool "n64"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_OABI64
-	bool "o64"
-	depends on BR2_mips_3 || BR2_mips_4 || BR2_mips_64 || BR2_mips_64r2 || BR2_mips_16
-config BR2_MIPS_ABI_none
-	bool "unspecified"
-	depends on BR2_mips_16
-	help
-	  Unspecified ABI leaves ABI selection blank.
+	depends on BR2_ARCH_IS_64
 endchoice
 
 choice
@@ -667,6 +678,8 @@ config BR2_ARCH
 	default "microblaze"	if BR2_microblaze
 	default "mips"		if BR2_mips
 	default "mipsel"	if BR2_mipsel
+	default "mips64"	if BR2_mips64
+	default "mips64el"	if BR2_mips64el
 	default "powerpc"	if BR2_powerpc
 	default "sh2"		if BR2_sh2
 	default "sh2a"		if BR2_sh2a
@@ -683,10 +696,10 @@ config BR2_ARCH
 
 config BR2_ENDIAN
 	string
-	default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || \
+	default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || BR2_mips64el || \
 			    BR2_sh3 || BR2_sh4 || BR2_sh4a || BR2_x86_64 || BR2_sh64 || \
 			    BR2_microblazeel
-	default "BIG"    if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || \
+	default "BIG"    if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || BR2_mips64 || \
 			    BR2_powerpc || BR2_sh2 || BR2_sh2a || \
 			    BR2_sh3eb || BR2_sh4eb || BR2_sh4aeb || BR2_sparc || \
 			    BR2_microblazebe
@@ -754,7 +767,6 @@ config BR2_GCC_TARGET_TUNE
 	default mips32r2	if BR2_mips_32r2
 	default mips64		if BR2_mips_64
 	default mips64r2	if BR2_mips_64r2
-	default mips16		if BR2_mips_16
 	default 401		if BR2_powerpc_401
 	default 403		if BR2_powerpc_403
 	default 405		if BR2_powerpc_405
@@ -859,10 +871,8 @@ config BR2_GCC_TARGET_ABI
 	default apcs-gnu	if BR2_ARM_OABI
 	default aapcs-linux	if BR2_ARM_EABI
 	default 32		if BR2_MIPS_OABI32
-	default n32		if BR2_MIPS_ABI32
-	default eabi		if BR2_MIPS_EABI
-	default o64		if BR2_MIPS_OABI64
-	default 64		if BR2_MIPS_ABI64
+	default n32		if BR2_MIPS_NABI32
+	default 64		if BR2_MIPS_NABI64
 	default altivec		if BR2_powerpc && BR2_PPC_ABI_altivec
 	default no-altivec	if BR2_powerpc && BR2_PPC_ABI_no-altivec
 	default spe		if BR2_powerpc && BR2_PPC_ABI_spe
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index 583d199..534550a 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -37,7 +37,6 @@ UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
 		-e 's/v850.*/v850/g' \
 		-e 's/sh[234].*/sh/' \
 		-e 's/mips.*/mips/' \
-		-e 's/mipsel.*/mips/' \
 		-e 's/cris.*/cris/' \
 		-e 's/xtensa.*/xtensa/' \
 ")
@@ -142,13 +141,13 @@ ifeq ($(UCLIBC_TARGET_ARCH),mips)
 	 /bin/echo "# CONFIG_MIPS_ISA_MIPS32R2 is not set"; \
 	 /bin/echo "# CONFIG_MIPS_ISA_MIPS64 is not set"; \
 	) >> $(UCLIBC_DIR)/.oldconfig
-ifeq ($(BR2_MIPS_OABI),y)
+ifeq ($(BR2_MIPS_OABI32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
-ifeq ($(BR2_MIPS_ABI32),y)
+ifeq ($(BR2_MIPS_NABI32),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
-ifeq ($(BR2_MIPS_ABI64),y)
+ifeq ($(BR2_MIPS_NABI64),y)
 	$(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
 endif
 ifeq ($(BR2_mips_1),y)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-09-04 20:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-04 14:09 [Buildroot] [pull request v3] Pull request for branch update-mips-support Thomas Petazzoni
2012-09-04 14:09 ` [Buildroot] [PATCH 1/4] uClibc: use BR2_ENDIAN to simplify endianess selection Thomas Petazzoni
2012-09-04 14:09 ` [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support Thomas Petazzoni
2012-09-04 14:09 ` [Buildroot] [PATCH 3/4] mips64: remove toolchain kludge Thomas Petazzoni
2012-09-04 14:09 ` [Buildroot] [PATCH 4/4] qemu/mips64-malta: add new sample config Thomas Petazzoni
2012-09-04 20:04 ` [Buildroot] [pull request v3] Pull request for branch update-mips-support Peter Korsgaard
  -- strict thread matches above, loose matches on Subject: below --
2012-08-05 10:04 [Buildroot] [v2] Improve MIPS support Thomas Petazzoni
2012-08-05 10:04 ` [Buildroot] [PATCH 2/4] Clarify MIPS ABIs support Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.