[U-Boot] [PATCH 0/3] MIPS: refactoring for extended Qemu support

From: Daniel Schwierzeck daniel.schwierzeck@gmail.com
Refactor handling of endianess flag and CONFIG_STANDALONE_LOAD_ADDR. Introduce qemu_mipsel support.
Daniel Schwierzeck (3): MIPS: factor out endianess flag handling to arch config.mk MIPS: move CONFIG_STANDALONE_LOAD_ADDR to CPU config makefiles MIPS: add support for qemu for little endian MIPS32 CPUs
arch/mips/config.mk | 20 +++++++++++++++++--- arch/mips/cpu/mips32/config.mk | 19 ++----------------- arch/mips/cpu/xburst/config.mk | 5 +++-- boards.cfg | 3 ++- include/configs/qemu-mips.h | 7 ++++++- include/configs/qi_lb60.h | 1 + 6 files changed, 31 insertions(+), 24 deletions(-)

From: Daniel Schwierzeck daniel.schwierzeck@gmail.com
This is CPU independent and should be configured architecture-wide.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com --- arch/mips/config.mk | 20 ++++++++++++++++++-- arch/mips/cpu/mips32/config.mk | 19 +------------------ arch/mips/cpu/xburst/config.mk | 3 +-- include/configs/qi_lb60.h | 1 + 4 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/arch/mips/config.mk b/arch/mips/config.mk index 6ab8acd..b680256 100644 --- a/arch/mips/config.mk +++ b/arch/mips/config.mk @@ -23,6 +23,22 @@
CROSS_COMPILE ?= mips_4KC-
+# Handle special prefix in ELDK 4.0 toolchain +ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) +ENDIANNESS := -EL +endif + +ifdef CONFIG_SYS_LITTLE_ENDIAN +ENDIANNESS := -EL +endif + +ifdef CONFIG_SYS_BIG_ENDIAN +ENDIANNESS := -EB +endif + +# Default to EB if no endianess is configured +ENDIANNESS ?= -EB + CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds
PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__ @@ -47,8 +63,8 @@ PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__ # On the other hand, we want PIC in the U-Boot code to relocate it from ROM # to RAM. $28 is always used as gp. # -PLATFORM_CPPFLAGS += -G 0 -mabicalls -fpic +PLATFORM_CPPFLAGS += -G 0 -mabicalls -fpic $(ENDIANNESS) PLATFORM_CPPFLAGS += -msoft-float -PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib +PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib $(ENDIANNESS) PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections LDFLAGS_FINAL += --gc-sections diff --git a/arch/mips/cpu/mips32/config.mk b/arch/mips/cpu/mips32/config.mk index a1cd590..a0e4de5 100644 --- a/arch/mips/cpu/mips32/config.mk +++ b/arch/mips/cpu/mips32/config.mk @@ -29,21 +29,4 @@ # MIPSFLAGS := -march=mips32r2
-# Handle special prefix in ELDK 4.0 toolchain -ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) -ENDIANNESS := -EL -endif - -ifdef CONFIG_SYS_LITTLE_ENDIAN -ENDIANNESS := -EL -endif - -ifdef CONFIG_SYS_BIG_ENDIAN -ENDIANNESS := -EB -endif - -# Default to EB if no endianess is configured -ENDIANNESS ?= -EB - -PLATFORM_CPPFLAGS += $(MIPSFLAGS) $(ENDIANNESS) -PLATFORM_LDFLAGS += $(ENDIANNESS) +PLATFORM_CPPFLAGS += $(MIPSFLAGS) diff --git a/arch/mips/cpu/xburst/config.mk b/arch/mips/cpu/xburst/config.mk index bce0c1b..18d49ab 100644 --- a/arch/mips/cpu/xburst/config.mk +++ b/arch/mips/cpu/xburst/config.mk @@ -20,5 +20,4 @@ # MA 02111-1307 USA #
-PLATFORM_CPPFLAGS += -march=mips32 -EL -PLATFORM_LDFLAGS += -EL +PLATFORM_CPPFLAGS += -march=mips32 diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h index a3fc465..4bb5bbc 100644 --- a/include/configs/qi_lb60.h +++ b/include/configs/qi_lb60.h @@ -11,6 +11,7 @@ #define __CONFIG_QI_LB60_H
#define CONFIG_MIPS32 /* MIPS32 CPU core */ +#define CONFIG_SYS_LITTLE_ENDIAN #define CONFIG_JZSOC /* Jz SoC */ #define CONFIG_JZ4740 /* Jz4740 SoC */ #define CONFIG_NAND_JZ4740

On Thursday 23 August 2012 18:50:47 daniel.schwierzeck@gmail.com wrote:
From: Daniel Schwierzeck daniel.schwierzeck@gmail.com
This is CPU independent and should be configured architecture-wide.
nice Acked-by: Mike Frysinger vapier@gentoo.org -mike

From: Daniel Schwierzeck daniel.schwierzeck@gmail.com
Prepare for upcoming MIPS64 CPU support.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com --- arch/mips/config.mk | 2 -- arch/mips/cpu/mips32/config.mk | 2 ++ arch/mips/cpu/xburst/config.mk | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/mips/config.mk b/arch/mips/config.mk index b680256..de9140b 100644 --- a/arch/mips/config.mk +++ b/arch/mips/config.mk @@ -39,8 +39,6 @@ endif # Default to EB if no endianess is configured ENDIANNESS ?= -EB
-CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds - PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__
# diff --git a/arch/mips/cpu/mips32/config.mk b/arch/mips/cpu/mips32/config.mk index a0e4de5..481e984 100644 --- a/arch/mips/cpu/mips32/config.mk +++ b/arch/mips/cpu/mips32/config.mk @@ -30,3 +30,5 @@ MIPSFLAGS := -march=mips32r2
PLATFORM_CPPFLAGS += $(MIPSFLAGS) + +CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds diff --git a/arch/mips/cpu/xburst/config.mk b/arch/mips/cpu/xburst/config.mk index 18d49ab..1536746 100644 --- a/arch/mips/cpu/xburst/config.mk +++ b/arch/mips/cpu/xburst/config.mk @@ -21,3 +21,5 @@ #
PLATFORM_CPPFLAGS += -march=mips32 + +CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds

From: Daniel Schwierzeck daniel.schwierzeck@gmail.com
Tested with 'qemu-system-mipsel -machine mips -bios u-boot.bin -nographic'
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com --- boards.cfg | 3 ++- include/configs/qemu-mips.h | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/boards.cfg b/boards.cfg index fdb84ad..6b54941 100644 --- a/boards.cfg +++ b/boards.cfg @@ -378,7 +378,8 @@ M5485FFE m68k mcf547x_8x m548xevb freescale - M5485GFE m68k mcf547x_8x m548xevb freescale - M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=4,SYS_DRAMSZ=64 M5485HFE m68k mcf547x_8x m548xevb freescale - M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO microblaze-generic microblaze microblaze microblaze-generic xilinx -qemu_mips mips mips32 qemu-mips - - qemu-mips +qemu_mips mips mips32 qemu-mips - - qemu-mips:SYS_BIG_ENDIAN +qemu_mipsel mips mips32 qemu-mips - - qemu-mips:SYS_LITTLE_ENDIAN vct_platinum mips mips32 vct micronas - vct:VCT_PLATINUM vct_platinumavc mips mips32 vct micronas - vct:VCT_PLATINUMAVC vct_platinumavc_onenand mips mips32 vct micronas - vct:VCT_PLATINUMAVC,VCT_ONENAND diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h index 306c173..b8b9705 100644 --- a/include/configs/qemu-mips.h +++ b/include/configs/qemu-mips.h @@ -100,7 +100,12 @@ */ #define CONFIG_SYS_LONGHELP /* undef to save memory */
-#define CONFIG_SYS_PROMPT "qemu-mips # " /* Monitor Command Prompt */ +/* Monitor Command Prompt */ +#if defined(CONFIG_SYS_LITTLE_ENDIAN) +#define CONFIG_SYS_PROMPT "qemu-mipsel # " +#else +#define CONFIG_SYS_PROMPT "qemu-mips # " +#endif
#define CONFIG_AUTO_COMPLETE #define CONFIG_CMDLINE_EDITING
participants (2)
-
daniel.schwierzeck@gmail.com
-
Mike Frysinger