[U-Boot-Users] Target support for qemu -M mips

With serial, NE2000, IDE support. Tested in big-endian mode. Memory size hard-coded to 128M for now, so don't play with the -m option.
Signed-off-by: Vlad Lungu vlad@comsys.ro --- MAKEALL | 1 + Makefile | 6 ++ board/qemu-mips/Makefile | 45 +++++++++++ board/qemu-mips/README | 11 +++ board/qemu-mips/config.mk | 11 +++ board/qemu-mips/flash.c | 43 ++++++++++ board/qemu-mips/lowlevel_init.S | 41 ++++++++++ board/qemu-mips/qemu-mips.c | 89 +++++++++++++++++++++ board/qemu-mips/u-boot.lds | 70 +++++++++++++++++ include/configs/qemu-mips.h | 164 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 481 insertions(+), 0 deletions(-) create mode 100644 board/qemu-mips/Makefile create mode 100644 board/qemu-mips/README create mode 100644 board/qemu-mips/config.mk create mode 100644 board/qemu-mips/flash.c create mode 100644 board/qemu-mips/lowlevel_init.S create mode 100644 board/qemu-mips/qemu-mips.c create mode 100644 board/qemu-mips/u-boot.lds create mode 100644 include/configs/qemu-mips.h
diff --git a/MAKEALL b/MAKEALL index a02412b..7647d67 100755 --- a/MAKEALL +++ b/MAKEALL @@ -524,6 +524,7 @@ LIST_arm=" \
LIST_mips4kc=" \ incaip \ + qemu_mips \ "
LIST_mips5kc=" \ diff --git a/Makefile b/Makefile index 1ff80b5..3e1b074 100644 --- a/Makefile +++ b/Makefile @@ -2514,6 +2514,12 @@ pb1000_config : unconfig @echo "#define CONFIG_PB1000 1" >>$(obj)include/config.h @$(MKCONFIG) -a pb1x00 mips mips pb1x00
+qemu_mips_config : unconfig + @mkdir -p $(obj)include + @ >$(obj)include/config.h + @echo "#define CONFIG_QEMU_MIPS 1" >>$(obj)include/config.h + @$(MKCONFIG) -a qemu-mips mips mips qemu-mips + ######################################################################### ## MIPS64 5Kc ######################################################################### diff --git a/board/qemu-mips/Makefile b/board/qemu-mips/Makefile new file mode 100644 index 0000000..23be447 --- /dev/null +++ b/board/qemu-mips/Makefile @@ -0,0 +1,45 @@ +# +# (C) Copyright 2003-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS = $(BOARD).o flash.o +SOBJS = lowlevel_init.o + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/qemu-mips/README b/board/qemu-mips/README new file mode 100644 index 0000000..39570b1 --- /dev/null +++ b/board/qemu-mips/README @@ -0,0 +1,11 @@ +By Vlad Lungu vlad@comsys.ro 2007-Oct-01 +---------------------------------------- +Qemu is a full system emulator. See + +http://fabrice.bellard.free.fr/qemu + +Limitations & comments +---------------------- +Supports the "-m mips" configuration of qemu: serial,NE2000,IDE. +Support is big endian only for now (or at least this is what I tested). +Derived from au1x00 with a lot of things cut out. diff --git a/board/qemu-mips/config.mk b/board/qemu-mips/config.mk new file mode 100644 index 0000000..61269ce --- /dev/null +++ b/board/qemu-mips/config.mk @@ -0,0 +1,11 @@ + +# +# Qemu -M mips system emulator +# See http://fabrice.bellard.free.fr/qemu +# + +# ROM version +TEXT_BASE = 0xbfc00000 + +# RAM version +#TEXT_BASE = 0x80001000 diff --git a/board/qemu-mips/flash.c b/board/qemu-mips/flash.c new file mode 100644 index 0000000..49f0134 --- /dev/null +++ b/board/qemu-mips/flash.c @@ -0,0 +1,43 @@ +/* + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#if 0 +flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */ +#endif +/*----------------------------------------------------------------------- + * flash_init() + * + * sets up flash_info and returns size of FLASH (bytes) + */ +unsigned long flash_init (void) +{ + printf ("Skipping flash_init\n"); + return (0); +} + +int write_buff ( void * info, uchar * src, ulong addr, ulong cnt) +{ + printf ("write_buff not implemented\n"); + return (-1); +} diff --git a/board/qemu-mips/lowlevel_init.S b/board/qemu-mips/lowlevel_init.S new file mode 100644 index 0000000..28166bc --- /dev/null +++ b/board/qemu-mips/lowlevel_init.S @@ -0,0 +1,41 @@ +/* Memory sub-system initialization code */ + +#include <config.h> +#include <version.h> +#include <asm/regdef.h> +#include <asm/mipsregs.h> + + .text + .set noreorder + .set mips32 + + .globl lowlevel_init +lowlevel_init: + + /* + * Step 2) Establish Status Register + * (set BEV, clear ERL, clear EXL, clear IE) + */ + li t1, 0x00400000 + mtc0 t1, CP0_STATUS + + /* + * Step 3) Establish CP0 Config0 + * (set K0=3) + */ + li t1, 0x00000003 + mtc0 t1, CP0_CONFIG + + /* + * Step 7) Establish Cause + * (set IV bit) + */ + li t1, 0x00800000 + mtc0 t1, CP0_CAUSE + + /* Establish Wired (and Random) */ + mtc0 zero, CP0_WIRED + nop + + j ra + nop diff --git a/board/qemu-mips/qemu-mips.c b/board/qemu-mips/qemu-mips.c new file mode 100644 index 0000000..345bb95 --- /dev/null +++ b/board/qemu-mips/qemu-mips.c @@ -0,0 +1,89 @@ +/* + * (C) Copyright 2007 + * Vlad Lungu vlad@comsys.ro + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <command.h> +#include <asm/mipsregs.h> +#include <asm/io.h> + +long int initdram(int board_type) +{ + /* Sdram is setup by assembler code */ + /* If memory could be changed, we should return the true value here */ + return MEM_SIZE*1024*1024; +} + + +int checkboard (void) +{ + u32 proc_id; + u32 config1; + + proc_id = read_32bit_cp0_register(CP0_PRID); + printf("Board: Qemu -M mips CPU: "); + switch (proc_id) { + case 0x00018000: + printf("4Kc"); + break; + case 0x00018400: + printf("4KEcR1"); + break; + case 0x00019000: + printf("4KEc"); + break; + case 0x00019300: + config1 = read_mips32_cp0_config1(); + if (config1&1) + printf("24Kf"); + else + printf("24Kc"); + break; + case 0x00019500: + printf("34Kf"); + break; + case 0x00000400: + printf("R4000"); + break; + case 0x00018100: + config1 = read_mips32_cp0_config1(); + if (config1&1) + printf("5Kf"); + else + printf("5Kc"); + break; + case 0x000182a0: + printf("20Kc"); + break; + + default: + printf("unknown"); + } + printf (" proc_id=0x%x\n", proc_id); + + return 0; +} + +int misc_init_r(void){ +set_io_port_base(0); +return 0; +} diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds new file mode 100644 index 0000000..8793320 --- /dev/null +++ b/board/qemu-mips/u-boot.lds @@ -0,0 +1,70 @@ +/* + * (C) Copyright 2003 + * Wolfgang Denk Engineering, wd@denx.de + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* +OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips") +*/ +OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips") +OUTPUT_ARCH(mips) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + *(.text) + } + + . = ALIGN(4); + .rodata : { *(.rodata) } + + . = ALIGN(4); + .data : { *(.data) } + + . = ALIGN(16); + _gp = .; + + .got : { + __got_start = .; + *(.got) + __got_end = .; + } + + . = ALIGN(4); + .sdata : { *(.sdata) } + + . = .; + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + uboot_end_data = .; + num_got_entries = (__got_end - __got_start) >> 2; + + . = ALIGN(4); + .sbss : { *(.sbss) } + .bss : { *(.bss) } + uboot_end = .; +} diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h new file mode 100644 index 0000000..1f93ad7 --- /dev/null +++ b/include/configs/qemu-mips.h @@ -0,0 +1,164 @@ +/* + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * This file contains the configuration parameters for the dbau1x00 board. + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#define CONFIG_MIPS32 1 /* MIPS32 CPU core */ +#define CONFIG_QEMU_MIPS 1 +#define CONFIG_MISC_INIT_R + +#undef DEBUG + +/*IP address is default used by Qemu*/ +#define CONFIG_IPADDR 10.0.2.15 /* Our IP address */ +#define CONFIG_SERVERIP 10.0.2.2 /* Server IP address*/ + +#define CONFIG_BOOTDELAY 10 /* autoboot after 10 seconds */ + +#define CONFIG_BAUDRATE 115200 + +/* valid baudrates */ +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_TIMESTAMP /* Print image info with timestamp */ +#undef CONFIG_BOOTARGS + +#define CONFIG_EXTRA_ENV_SETTINGS \ + "addmisc=setenv bootargs ${bootargs} " \ + "console=ttyS0,${baudrate} " \ + "panic=1\0" \ + "bootfile=/tftpboot/vmlinux\0" \ + "load=tftp 80500000 ${u-boot}\0" \ + "" + +#define CONFIG_BOOTCOMMAND "bootp;bootelf" + + +/* + * BOOTP options + */ +#define CONFIG_BOOTP_BOOTFILESIZE +#define CONFIG_BOOTP_BOOTPATH +#define CONFIG_BOOTP_GATEWAY +#define CONFIG_BOOTP_HOSTNAME + + +/* + * Command line configuration. + */ +#include <config_cmd_default.h> + +#define CONFIG_CMD_ELF +#define CONFIG_CMD_FAT +#define CONFIG_CMD_EXT2 +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_FLASH +#undef CONFIG_CMD_LOADB +#undef CONFIG_CMD_LOADS +#define CONFIG_CMD_DHCP + +#define CONFIG_DRIVER_NE2000 +#define CONFIG_DRIVER_NE2000_BASE (0xb4000300) + +#define CFG_NO_FLASH +#define CFG_NS16550 +#define CFG_NS16550_SERIAL +#define CFG_NS16550_REG_SIZE 1 +#define CFG_NS16550_CLK 115200 +#define CFG_NS16550_COM1 (0xb40003f8) +#define CONFIG_CONS_INDEX 1 + +#define CONFIG_CMD_IDE +#define CONFIG_DOS_PARTITION + +#define CFG_IDE_MAXBUS 2 +#define CFG_ATA_IDE0_OFFSET (0x1f0) +#define CFG_ATA_IDE1_OFFSET (0x170) +#define CFG_ATA_DATA_OFFSET (0) +#define CFG_ATA_REG_OFFSET (0) +#define CFG_ATA_BASE_ADDR (0xb4000000) + +#define CFG_IDE_MAXDEVICE (4) + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP /* undef to save memory */ + +#define CFG_PROMPT "qemu-mips # " /* Monitor Command Prompt */ + +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS 16 /* max number of command args*/ + +#define CFG_MALLOC_LEN 128*1024 + +#define CFG_BOOTPARAMS_LEN 128*1024 + +#define CFG_MHZ 132 + +#define CFG_HZ (CFG_MHZ * 1000000) /* FIXME causes overflow in net.c */ + +#define CFG_SDRAM_BASE 0x80000000 /* Cached addr */ + +#define CFG_LOAD_ADDR 0x81000000 /* default load address */ + +#define CFG_MEMTEST_START 0x80100000 +#define CFG_MEMTEST_END 0x80800000 + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ + +/* The following #defines are needed to get flash environment right */ +#define CFG_MONITOR_BASE TEXT_BASE +#define CFG_MONITOR_LEN (192 << 10) + +#define CFG_INIT_SP_OFFSET 0x400000 + +/* We boot from this flash, selected with dip switch */ +#define CFG_FLASH_BASE 0xbfc00000 + +#define CFG_ENV_IS_NOWHERE 1 + +/* Address and size of Primary Environment Sector */ +#define CFG_ENV_SIZE 0x10000 +#undef CONFIG_NET_MULTI + +#define MEM_SIZE 128 + +#undef CONFIG_MEMSIZE_IN_BYTES + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE 16384 +#define CFG_ICACHE_SIZE 16384 +#define CFG_CACHELINE_SIZE 32 + +#endif /* __CONFIG_H */

Hi Vlad,
Vlad Lungu wrote:
With serial, NE2000, IDE support. Tested in big-endian mode. Memory size hard-coded to 128M for now, so don't play with the -m option.
very interesting B-). Applied to u-boot-mips/testing branch.
I'd like to give it a try, but I have to admit that I've never tested qemu for U-Boot/Mips; I've tested only with Linux/Mips kernel. Could you give me some HOWTOs, steps to reproduce, expected output results, etc. Or any usuful pointers...
Thanks in advance,
Shinya

Shinya Kuribayashi wrote:
Hi Vlad,
Vlad Lungu wrote:
With serial, NE2000, IDE support. Tested in big-endian mode. Memory size hard-coded to 128M for now, so don't play with the -m option.
very interesting B-). Applied to u-boot-mips/testing branch.
I'd like to give it a try, but I have to admit that I've never tested qemu for U-Boot/Mips; I've tested only with Linux/Mips kernel. Could you give me some HOWTOs, steps to reproduce, expected output results, etc. Or any usuful pointers...
make qemu_mips_config ; make
Copy (or symlink) u-boot.bin to mips_bios.bin and launch qemu-system-mips -L . /dev/null -L . so that qemu picks the BIOS from the current directory and /dev/null because qemu wants a disk image. Qemu willl load and launch U-Boot.
Add -hda file.img to Qemu cmd line in order to emulate a hard-disk and do ide reset at the U-Boot prompt ; the disk (or disks) should be identified. Check U-Boot doc for booting fromHD :-)
Add -tftp / and then do dhcp (or directly tftp) and then bootelf (on vmlinux) or bootm (on uimage).
Main purpose is to be able to develop U-Boot modules with no hardware. Secondary is for me to learn how it works :-) in order to develop a free BIOS for the MTI Malta board, as emulated by Qemu (comes with PCI and stuff). Or even for the real board. I have that sort-of-working too, but I'm not very happy with the PCI bus driver .
Vlad

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com
diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h index 1f93ad7..3a02342 100644 --- a/include/configs/qemu-mips.h +++ b/include/configs/qemu-mips.h @@ -112,6 +112,11 @@
#define CFG_PROMPT "qemu-mips # " /* Monitor Command Prompt */
+#define CONFIG_AUTO_COMPLETE +#define CONFIG_CMDLINE_EDITING +#define CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2 "> " + #define CFG_CBSIZE 256 /* Console I/O Buffer Size */ #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ #define CFG_MAXARGS 16 /* max number of command args*/

Jean-Christophe PLAGNIOL-VILLARD wrote:
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com
diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h index 1f93ad7..3a02342 100644 --- a/include/configs/qemu-mips.h +++ b/include/configs/qemu-mips.h @@ -112,6 +112,11 @@
#define CFG_PROMPT "qemu-mips # " /* Monitor Command Prompt */
+#define CONFIG_AUTO_COMPLETE +#define CONFIG_CMDLINE_EDITING +#define CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2 "> "
#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ #define CFG_MAXARGS 16 /* max number of command args*/
Sorry for late response. Applied to u-boot-mips/testing branch.
Shinya

Could review this patch please?
Best Regards, J.
On 16:03 Sat 22 Dec , Jean-Christophe PLAGNIOL-VILLARD wrote:
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com
diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h index 1f93ad7..3a02342 100644 --- a/include/configs/qemu-mips.h +++ b/include/configs/qemu-mips.h @@ -112,6 +112,11 @@
#define CFG_PROMPT "qemu-mips # " /* Monitor Command Prompt */
+#define CONFIG_AUTO_COMPLETE +#define CONFIG_CMDLINE_EDITING +#define CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2 "> "
#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
#define CFG_MAXARGS 16 /* max number of command args*/
1.5.3.7

Jean-Christophe PLAGNIOL-VILLARD wrote:
Could review this patch please?
I've already applied to testing branch. Or maybe are you talking about pushing qemu stuff into mainline? In fact I couldn't give it enough testing, so have been thinking about waiting for a while.
But well, I don't mind pushing this up. In that case, I hope some coding style cleanups and .lds update, etc. Please consider :-)
Shinya

Vlad Lungu wrote:
make qemu_mips_config ; make
Copy (or symlink) u-boot.bin to mips_bios.bin and launch qemu-system-mips -L . /dev/null -L . so that qemu picks the BIOS from the current directory and /dev/null because qemu wants a disk image. Qemu willl load and launch U-Boot.
$ cd u-boot.git $ make distclean $ make qemu_mips_config $ make CROSS_COMPILE=mips-linux- $ cp -a u-boot.bin mips_bios.bin $ qemu-system-mips -L . /dev/nulll
at this point, qemu console window appears but I can't see any u-boot's bootlog. I tried qemu on Debian testing or the latest CVS, but the same results.
I use u-boot-1.3.1 + qemu patch, gcc 4.2.1 and binutils 2.18.50.0.1.
Am I miss something?
Shinya
Add -hda file.img to Qemu cmd line in order to emulate a hard-disk and do ide reset at the U-Boot prompt ; the disk (or disks) should be identified. Check U-Boot doc for booting fromHD :-)
Add -tftp / and then do dhcp (or directly tftp) and then bootelf (on vmlinux) or bootm (on uimage).
Main purpose is to be able to develop U-Boot modules with no hardware. Secondary is for me to learn how it works :-) in order to develop a free BIOS for the MTI Malta board, as emulated by Qemu (comes with PCI and stuff). Or even for the real board. I have that sort-of-working too, but I'm not very happy with the PCI bus driver .

On 18:06 Sun 23 Dec , Shinya Kuribayashi wrote:
Vlad Lungu wrote:
make qemu_mips_config ; make
Copy (or symlink) u-boot.bin to mips_bios.bin and launch qemu-system-mips -L . /dev/null -L . so that qemu picks the BIOS from the current directory and /dev/null because qemu wants a disk image. Qemu willl load and launch U-Boot.
$ cd u-boot.git $ make distclean $ make qemu_mips_config $ make CROSS_COMPILE=mips-linux- $ cp -a u-boot.bin mips_bios.bin $ qemu-system-mips -L . /dev/nulll
at this point, qemu console window appears but I can't see any u-boot's bootlog. I tried qemu on Debian testing or the latest CVS, but the same results.
I use u-boot-1.3.1 + qemu patch, gcc 4.2.1 and binutils 2.18.50.0.1.
Am I miss something?
Shinya
I've test it on debian unstable with qemu from it and it's work with this cmd
qemu-system-mips -L . /dev/null -nographic
Best Regards J.

Jean-Christophe PLAGNIOL-VILLARD wrote:
On 18:06 Sun 23 Dec , Shinya Kuribayashi wrote:
Vlad Lungu wrote:
make qemu_mips_config ; make
Copy (or symlink) u-boot.bin to mips_bios.bin and launch qemu-system-mips -L . /dev/null -L . so that qemu picks the BIOS from the current directory and /dev/null because qemu wants a disk image. Qemu willl load and launch U-Boot.
$ cd u-boot.git $ make distclean $ make qemu_mips_config $ make CROSS_COMPILE=mips-linux- $ cp -a u-boot.bin mips_bios.bin $ qemu-system-mips -L . /dev/nulll
at this point, qemu console window appears but I can't see any u-boot's bootlog. I tried qemu on Debian testing or the latest CVS, but the same results.
I've test it on debian unstable with qemu from it and it's work with this cmd
qemu-system-mips -L . /dev/null -nographic
Thanks, J-C. You beat me to it. It's etiher that to work without a graphical interface or press Ctrl-Alt-3 to get to the serial console (Ctrl-Alt-2 is the qemu monitor shortcut, Ctrl-Alt-1 is the VGA emulation, unused and probably not working).
Vlad

Vlad Lungu wrote:
Jean-Christophe PLAGNIOL-VILLARD wrote:
On 18:06 Sun 23 Dec , Shinya Kuribayashi wrote:
Vlad Lungu wrote:
make qemu_mips_config ; make
Copy (or symlink) u-boot.bin to mips_bios.bin and launch qemu-system-mips -L . /dev/null -L . so that qemu picks the BIOS from the current directory and /dev/null because qemu wants a disk image. Qemu willl load and launch U-Boot.
$ cd u-boot.git $ make distclean $ make qemu_mips_config $ make CROSS_COMPILE=mips-linux- $ cp -a u-boot.bin mips_bios.bin $ qemu-system-mips -L . /dev/nulll
at this point, qemu console window appears but I can't see any u-boot's bootlog. I tried qemu on Debian testing or the latest CVS, but the same results.
I've test it on debian unstable with qemu from it and it's work with this cmd
qemu-system-mips -L . /dev/null -nographic
Thanks, J-C. You beat me to it. It's etiher that to work without a graphical interface or press Ctrl-Alt-3 to get to the serial console (Ctrl-Alt-2 is the qemu monitor shortcut, Ctrl-Alt-1 is the VGA emulation, unused and probably not working).
Thanks, now boots fine. I'll try ide and network.
Shinya

Dear Vlad,
There are some coding style issues, but I'm fine with contents of the patch itself. Please find comments below and resubmit.
Shinya
Vlad Lungu wrote:
With serial, NE2000, IDE support. Tested in big-endian mode. Memory size hard-coded to 128M for now, so don't play with the -m option.
No leading spaces for descriptions
Signed-off-by: Vlad Lungu vlad@comsys.ro
Please consider to add qemu target entry to MAINTAINERS file. I don't think it's essential, but would be helpful.
MAKEALL | 1 + Makefile | 6 ++ board/qemu-mips/Makefile | 45 +++++++++++ board/qemu-mips/README | 11 +++ board/qemu-mips/config.mk | 11 +++ board/qemu-mips/flash.c | 43 ++++++++++ board/qemu-mips/lowlevel_init.S | 41 ++++++++++ board/qemu-mips/qemu-mips.c | 89 +++++++++++++++++++++ board/qemu-mips/u-boot.lds | 70 +++++++++++++++++ include/configs/qemu-mips.h | 164 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 481 insertions(+), 0 deletions(-) create mode 100644 board/qemu-mips/Makefile create mode 100644 board/qemu-mips/README create mode 100644 board/qemu-mips/config.mk create mode 100644 board/qemu-mips/flash.c create mode 100644 board/qemu-mips/lowlevel_init.S create mode 100644 board/qemu-mips/qemu-mips.c create mode 100644 board/qemu-mips/u-boot.lds create mode 100644 include/configs/qemu-mips.h
diff --git a/MAKEALL b/MAKEALL index a02412b..7647d67 100755 --- a/MAKEALL +++ b/MAKEALL @@ -524,6 +524,7 @@ LIST_arm=" \
LIST_mips4kc=" \ incaip \
- qemu_mips \
"
LIST_mips5kc=" \ diff --git a/Makefile b/Makefile index 1ff80b5..3e1b074 100644 --- a/Makefile +++ b/Makefile @@ -2514,6 +2514,12 @@ pb1000_config : unconfig @echo "#define CONFIG_PB1000 1" >>$(obj)include/config.h @$(MKCONFIG) -a pb1x00 mips mips pb1x00
+qemu_mips_config : unconfig
"qemu_mips_config:", no spaces, would be good for bash completion :-)
- @mkdir -p $(obj)include
- @ >$(obj)include/config.h
- @echo "#define CONFIG_QEMU_MIPS 1" >>$(obj)include/config.h
- @$(MKCONFIG) -a qemu-mips mips mips qemu-mips
######################################################################### ## MIPS64 5Kc ######################################################################### diff --git a/board/qemu-mips/Makefile b/board/qemu-mips/Makefile new file mode 100644 index 0000000..23be447 --- /dev/null +++ b/board/qemu-mips/Makefile @@ -0,0 +1,45 @@ +# +# (C) Copyright 2003-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +#
+include $(TOPDIR)/config.mk
+LIB = $(obj)lib$(BOARD).a
+COBJS = $(BOARD).o flash.o +SOBJS = lowlevel_init.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS))
+$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+#########################################################################
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/board/qemu-mips/README b/board/qemu-mips/README new file mode 100644 index 0000000..39570b1 --- /dev/null +++ b/board/qemu-mips/README @@ -0,0 +1,11 @@ +By Vlad Lungu vlad@comsys.ro 2007-Oct-01 +---------------------------------------- +Qemu is a full system emulator. See
+http://fabrice.bellard.free.fr/qemu
+Limitations & comments +---------------------- +Supports the "-m mips" configuration of qemu: serial,NE2000,IDE. +Support is big endian only for now (or at least this is what I tested). +Derived from au1x00 with a lot of things cut out. diff --git a/board/qemu-mips/config.mk b/board/qemu-mips/config.mk new file mode 100644 index 0000000..61269ce --- /dev/null +++ b/board/qemu-mips/config.mk @@ -0,0 +1,11 @@
needless empty line
+# +# Qemu -M mips system emulator +# See http://fabrice.bellard.free.fr/qemu +#
+# ROM version +TEXT_BASE = 0xbfc00000
+# RAM version +#TEXT_BASE = 0x80001000 diff --git a/board/qemu-mips/flash.c b/board/qemu-mips/flash.c new file mode 100644 index 0000000..49f0134 --- /dev/null +++ b/board/qemu-mips/flash.c @@ -0,0 +1,43 @@ +/*
- (C) Copyright 2003
- Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#if 0 +flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */ +#endif
Please remove #if 0 - #endif
+/*-----------------------------------------------------------------------
- flash_init()
- sets up flash_info and returns size of FLASH (bytes)
- */
+unsigned long flash_init (void)
I'd like to 'no space between function name and open parenthesis '('.
example) $ linux/scripts/checkpatch.pl qemu-mips.patch says
WARNING: no space between function name and open parenthesis '(' #185: FILE: board/qemu-mips/flash.c:33: +unsigned long flash_init (void)
WARNING: no space between function name and open parenthesis '(' #187: FILE: board/qemu-mips/flash.c:35: + printf ("Skipping flash_init\n");
ERROR: "foo * bar" should be "foo *bar" #191: FILE: board/qemu-mips/flash.c:39: +int write_buff ( void * info, uchar * src, ulong addr, ulong cnt)
WARNING: no space between function name and open parenthesis '(' #191: FILE: board/qemu-mips/flash.c:39: +int write_buff ( void * info, uchar * src, ulong addr, ulong cnt)
ERROR: no space after that open parenthesis '(' #191: FILE: board/qemu-mips/flash.c:39: +int write_buff ( void * info, uchar * src, ulong addr, ulong cnt)
WARNING: no space between function name and open parenthesis '(' #193: FILE: board/qemu-mips/flash.c:41: + printf ("write_buff not implemented\n");
and more... Please fix.
+{
- printf ("Skipping flash_init\n");
- return (0);
+}
+int write_buff ( void * info, uchar * src, ulong addr, ulong cnt) +{
- printf ("write_buff not implemented\n");
- return (-1);
+} diff --git a/board/qemu-mips/lowlevel_init.S b/board/qemu-mips/lowlevel_init.S new file mode 100644 index 0000000..28166bc --- /dev/null +++ b/board/qemu-mips/lowlevel_init.S @@ -0,0 +1,41 @@ +/* Memory sub-system initialization code */
+#include <config.h> +#include <version.h> +#include <asm/regdef.h> +#include <asm/mipsregs.h>
- .text
- .set noreorder
- .set mips32
- .globl lowlevel_init
+lowlevel_init:
- /*
* Step 2) Establish Status Register
* (set BEV, clear ERL, clear EXL, clear IE)
*/
- li t1, 0x00400000
- mtc0 t1, CP0_STATUS
- /*
* Step 3) Establish CP0 Config0
* (set K0=3)
*/
- li t1, 0x00000003
- mtc0 t1, CP0_CONFIG
- /*
* Step 7) Establish Cause
* (set IV bit)
*/
- li t1, 0x00800000
- mtc0 t1, CP0_CAUSE
- /* Establish Wired (and Random) */
- mtc0 zero, CP0_WIRED
- nop
- j ra
- nop
diff --git a/board/qemu-mips/qemu-mips.c b/board/qemu-mips/qemu-mips.c new file mode 100644 index 0000000..345bb95 --- /dev/null +++ b/board/qemu-mips/qemu-mips.c @@ -0,0 +1,89 @@ +/*
- (C) Copyright 2007
- Vlad Lungu vlad@comsys.ro
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <command.h> +#include <asm/mipsregs.h> +#include <asm/io.h>
+long int initdram(int board_type) +{
- /* Sdram is setup by assembler code */
- /* If memory could be changed, we should return the true value here */
- return MEM_SIZE*1024*1024;
+}
don't add 2 newlines
+int checkboard (void) +{
- u32 proc_id;
- u32 config1;
- proc_id = read_32bit_cp0_register(CP0_PRID);
- printf("Board: Qemu -M mips CPU: ");
- switch (proc_id) {
- case 0x00018000:
printf("4Kc");
break;
- case 0x00018400:
printf("4KEcR1");
break;
- case 0x00019000:
printf("4KEc");
break;
- case 0x00019300:
config1 = read_mips32_cp0_config1();
if (config1&1)
printf("24Kf");
else
printf("24Kc");
break;
- case 0x00019500:
printf("34Kf");
break;
- case 0x00000400:
printf("R4000");
break;
- case 0x00018100:
config1 = read_mips32_cp0_config1();
if (config1&1)
printf("5Kf");
else
printf("5Kc");
break;
- case 0x000182a0:
printf("20Kc");
break;
- default:
printf("unknown");
- }
printf (" proc_id=0x%x\n", proc_id);
- return 0;
+}
+int misc_init_r(void){ +set_io_port_base(0); +return 0; +}
please fix a bad bracket and no leading tabs
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds new file mode 100644 index 0000000..8793320 --- /dev/null +++ b/board/qemu-mips/u-boot.lds @@ -0,0 +1,70 @@ +/*
- (C) Copyright 2003
- Wolfgang Denk Engineering, wd@denx.de
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+/* +OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips") +*/ +OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips") +OUTPUT_ARCH(mips) +ENTRY(_start) +SECTIONS +{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
*(.text)
- }
- . = ALIGN(4);
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(16);
- _gp = .;
- .got : { + __got_start = .;
*(.got) + __got_end = .;
- }
- . = ALIGN(4);
- .sdata : { *(.sdata) }
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
+}
please update .lds to the latest board/dbau1x00/u-boot.lds, etc. I'd like to see . = .; _gp = ALIGN(16) + 0x7ff0; and .u_boot_cmd : { __u_boot_cmd_start = .; *(.u_boot_cmd) __u_boot_cmd_end = .; } and so on. I understand it works well without such changes, but it's better to keep all target together.
diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h new file mode 100644 index 0000000..1f93ad7 --- /dev/null +++ b/include/configs/qemu-mips.h @@ -0,0 +1,164 @@ +/*
- (C) Copyright 2003
- Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+/*
- This file contains the configuration parameters for the dbau1x00 board.
- */
+#ifndef __CONFIG_H +#define __CONFIG_H
+#define CONFIG_MIPS32 1 /* MIPS32 CPU core */ +#define CONFIG_QEMU_MIPS 1 +#define CONFIG_MISC_INIT_R
+#undef DEBUG
+/*IP address is default used by Qemu*/ +#define CONFIG_IPADDR 10.0.2.15 /* Our IP address */ +#define CONFIG_SERVERIP 10.0.2.2 /* Server IP address*/
+#define CONFIG_BOOTDELAY 10 /* autoboot after 10 seconds */
+#define CONFIG_BAUDRATE 115200
+/* valid baudrates */ +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+#define CONFIG_TIMESTAMP /* Print image info with timestamp */ +#undef CONFIG_BOOTARGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
- "addmisc=setenv bootargs ${bootargs} " \
"console=ttyS0,${baudrate} " \
"panic=1\0" \
- "bootfile=/tftpboot/vmlinux\0" \
- "load=tftp 80500000 ${u-boot}\0" \
- ""
+#define CONFIG_BOOTCOMMAND "bootp;bootelf"
+/*
- BOOTP options
- */
+#define CONFIG_BOOTP_BOOTFILESIZE +#define CONFIG_BOOTP_BOOTPATH +#define CONFIG_BOOTP_GATEWAY +#define CONFIG_BOOTP_HOSTNAME
+/*
- Command line configuration.
- */
+#include <config_cmd_default.h>
+#define CONFIG_CMD_ELF +#define CONFIG_CMD_FAT +#define CONFIG_CMD_EXT2 +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_FLASH +#undef CONFIG_CMD_LOADB +#undef CONFIG_CMD_LOADS +#define CONFIG_CMD_DHCP
+#define CONFIG_DRIVER_NE2000 +#define CONFIG_DRIVER_NE2000_BASE (0xb4000300)
+#define CFG_NO_FLASH +#define CFG_NS16550 +#define CFG_NS16550_SERIAL +#define CFG_NS16550_REG_SIZE 1 +#define CFG_NS16550_CLK 115200 +#define CFG_NS16550_COM1 (0xb40003f8) +#define CONFIG_CONS_INDEX 1
+#define CONFIG_CMD_IDE +#define CONFIG_DOS_PARTITION
+#define CFG_IDE_MAXBUS 2 +#define CFG_ATA_IDE0_OFFSET (0x1f0) +#define CFG_ATA_IDE1_OFFSET (0x170) +#define CFG_ATA_DATA_OFFSET (0) +#define CFG_ATA_REG_OFFSET (0) +#define CFG_ATA_BASE_ADDR (0xb4000000)
+#define CFG_IDE_MAXDEVICE (4)
+/*
- Miscellaneous configurable options
- */
+#define CFG_LONGHELP /* undef to save memory */
+#define CFG_PROMPT "qemu-mips # " /* Monitor Command Prompt */
+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS 16 /* max number of command args*/
+#define CFG_MALLOC_LEN 128*1024
+#define CFG_BOOTPARAMS_LEN 128*1024
+#define CFG_MHZ 132
+#define CFG_HZ (CFG_MHZ * 1000000) /* FIXME causes overflow in net.c */
+#define CFG_SDRAM_BASE 0x80000000 /* Cached addr */
+#define CFG_LOAD_ADDR 0x81000000 /* default load address */
+#define CFG_MEMTEST_START 0x80100000 +#define CFG_MEMTEST_END 0x80800000
+/*-----------------------------------------------------------------------
- FLASH and environment organization
- */
+/* The following #defines are needed to get flash environment right */ +#define CFG_MONITOR_BASE TEXT_BASE +#define CFG_MONITOR_LEN (192 << 10)
+#define CFG_INIT_SP_OFFSET 0x400000
+/* We boot from this flash, selected with dip switch */ +#define CFG_FLASH_BASE 0xbfc00000
+#define CFG_ENV_IS_NOWHERE 1
+/* Address and size of Primary Environment Sector */ +#define CFG_ENV_SIZE 0x10000 +#undef CONFIG_NET_MULTI
+#define MEM_SIZE 128
+#undef CONFIG_MEMSIZE_IN_BYTES
+/*-----------------------------------------------------------------------
- Cache Configuration
- */
+#define CFG_DCACHE_SIZE 16384 +#define CFG_ICACHE_SIZE 16384 +#define CFG_CACHELINE_SIZE 32
+#endif /* __CONFIG_H */
For some reason, line wrapped due to Thunderbird. Sorry for ugliness.

Shinya Kuribayashi wrote:
Dear Vlad,
There are some coding style issues, but I'm fine with contents of the patch itself. Please find comments below and resubmit.
My God, you are worse than ze germans! Sorry Wolfgang, I had to say it :-)
[snip]
please update .lds to the latest board/dbau1x00/u-boot.lds, etc. I'd like to see . = .;
What does this do ?
_gp = ALIGN(16) + 0x7ff0; and .u_boot_cmd : { __u_boot_cmd_start = .; *(.u_boot_cmd) __u_boot_cmd_end = .; } and so on. I understand it works well without such changes, but it's better to keep all target together.
Any opinions on using a single ldscript per platform, eventually preprocessed with gcc -E to allow for board-specific differences? At least for MIPS, all scripts are essentally the same.
As for the style issues, some are mine, but many are in the code I copied from. Anyway, I fixed them. Patch to follow.
Regards, Vlad

please update .lds to the latest board/dbau1x00/u-boot.lds, etc. I'd like to see . = .;
What does this do ?
_gp = ALIGN(16) + 0x7ff0;
It employs the output of `(CROSS_COMPILE)ld --verbose. It's a normal link script, so I just follow it.
Any opinions on using a single ldscript per platform, eventually preprocessed with gcc -E to allow for board-specific differences? At least for MIPS, all scripts are essentally the same.
Looking at cpu/mpc5xxx/u-boot.lds, it seems good. Or something like linux/arch/mips/kernel/vmlinux.lds.S is good alternative (I don't know whether it's possible or not, though).
Shinya

Shinya Kuribayashi wrote: [snip]
Any opinions on using a single ldscript per platform, eventually preprocessed with gcc -E to allow for board-specific differences? At least for MIPS, all scripts are essentally the same.
Looking at cpu/mpc5xxx/u-boot.lds, it seems good. Or something like linux/arch/mips/kernel/vmlinux.lds.S is good alternative (I don't know whether it's possible or not, though).
I think it's technically possible, the question is if there's support for it. Wolfgang? Anyone? Obviously, not in this merge window :-), probably after the new config thingy is merged and tested.
Regards, Vlad
participants (4)
-
Jean-Christophe PLAGNIOL-VILLARD
-
Shinya Kuribayashi
-
Shinya Kuribayashi
-
Vlad Lungu