* [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.