Skip to contentSkip to conversation

Target support for qemu -M mips

U-Boot-Users New Vlad Lungu 4 participants 15 messages Dec 17, 2007 – Jan 17, 2008

Subsystems (2)
lore
Share & tools
lore

Vlad Lungu

author
#0 lore raw

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.

---
 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
MAKEALL +1 -0
index a02412b..7647d67 100755
@@ -524,6 +524,7 @@ LIST_arm="		\
 
 LIST_mips4kc="		\
 	incaip		\
+	qemu_mips	\
 "
 
 LIST_mips5kc="		\
Makefile +6 -0
index 1ff80b5..3e1b074 100644
@@ -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
 #########################################################################
board/qemu-mips/Makefile new file +45 -0

45 lines not on this page · raw message

board/qemu-mips/README new file +11 -0
new file mode 100644
index 0000000..39570b1
@@ -0,0 +1,11 @@
+By Vlad Lungu vlad at 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.
board/qemu-mips/config.mk new file +11 -0
new file mode 100644
index 0000000..61269ce
@@ -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
board/qemu-mips/flash.c new file +43 -0

43 lines not on this page · raw message

board/qemu-mips/lowlevel_init.S new file +41 -0

41 lines not on this page · raw message

board/qemu-mips/qemu-mips.c new file +89 -0

89 lines not on this page · raw message

board/qemu-mips/u-boot.lds new file +70 -0

70 lines not on this page · raw message

include/configs/qemu-mips.h new file +164 -0

164 lines not on this page · raw message

Signature · 1 line
1.5.2.2
#1 lore raw

Hi Vlad,

Quoted 3 lines · Vlad Lungu

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

author
#2 lore raw
Quoted 9 lines · Shinya Kuribayashi

Hi Vlad,

Quoted 4 lines · Vlad Lungu

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.

Quoted 7 lines

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

#3 lore raw

PATCH 1/1 qemu-mips: active HUSH PARSER, AUTO_COMPLETE and CMDLINE_EDITING

include/configs/qemu-mips.h +5 -0
index 1f93ad7..3a02342 100644
@@ -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*/
Signature · 1 line
1.5.3.7
#4 lore raw

PATCH 1/1 qemu-mips: active HUSH PARSER, AUTO_COMPLETE and CMDLINE_EDITING

Quoted 8 lines · Jean-Christophe PLAGNIOL-VILLARD
include/configs/qemu-mips.h +0 -0
index 1f93ad7..3a02342 100644
@@ -112,6 +112,11 @@
 

include/configs/qemu-mips.h line 122

Quoted 10 lines
include/configs/qemu-mips.h +5 -0
 #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

#5 lore raw

PATCH 1/1 qemu-mips: active HUSH PARSER, AUTO_COMPLETE and CMDLINE_EDITING

In reply to Jean-Christophe PLAGNIOL-VILLARD

Could review this patch please?

Best Regards,
J.

Quoted 20 lines · Jean-Christophe PLAGNIOL-VILLARD
include/configs/qemu-mips.h +5 -0
index 1f93ad7..3a02342 100644
@@ -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*/
Signature · 1 line
1.5.3.7
#6 lore raw

PATCH 1/1 qemu-mips: active HUSH PARSER, AUTO_COMPLETE and CMDLINE_EDITING

Quoted 1 line · Jean-Christophe PLAGNIOL-VILLARD

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

#7 lore raw
In reply to Vlad Lungu
Quoted 8 lines · Vlad Lungu

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

Quoted 13 lines

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 .

#8 lore raw
Quoted 21 lines · Shinya Kuribayashi
Quoted 8 lines · Vlad Lungu

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.

Quoted 6 lines

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.

author
#9 lore raw
Quoted 25 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 17 lines · Shinya Kuribayashi
Quoted 8 lines · Vlad Lungu

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
Quoted 5 lines

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.

Quoted 5 lines

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

#10 lore raw
Quoted 29 lines · Vlad Lungu
Quoted 28 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 17 lines · Shinya Kuribayashi
Quoted 8 lines · Vlad Lungu

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
Quoted 5 lines

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

Quoted 6 lines
Quoted 2 lines

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

#11 lore raw
In reply to Vlad Lungu

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

Quoted 3 lines · Vlad Lungu

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

Quoted 2 lines

---

Please consider to add qemu target entry to MAINTAINERS file. I don't think it's essential, but would be helpful.

Quoted 38 lines
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

MAKEALL +1 -0
index a02412b..7647d67 100755
@@ -524,6 +524,7 @@ LIST_arm="        \
 
 LIST_mips4kc="        \
    incaip        \
+    qemu_mips    \

"

LIST_mips5kc=" \

Makefile +0 -0
index 1ff80b5..3e1b074 100644

Makefile pb1000_config : unconfig · line 2517

Quoted 4 lines
Makefile +1 -0
@@ -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 :-)

Quoted 82 lines
Makefile +5 -0
+    @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
 #########################################################################
board/qemu-mips/Makefile new file +45 -0
new file mode 100644
index 0000000..23be447
@@ -0,0 +1,45 @@
+#
+# (C) Copyright 2003-2006
+# Wolfgang Denk, DENX Software Engineering, wd at 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
+
+#########################################################################
board/qemu-mips/README new file +11 -0
new file mode 100644
index 0000000..39570b1
@@ -0,0 +1,11 @@
+By Vlad Lungu vlad at 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.
board/qemu-mips/config.mk new file +0 -0
new file mode 100644
index 0000000..61269ce

board/qemu-mips/config.mk line 1

Quoted 1 line
board/qemu-mips/config.mk new file +1 -0
@@ -0,0 +1,11 @@
+

needless empty line

Quoted 42 lines
board/qemu-mips/config.mk new file +10 -0
+#
+# Qemu -M mips system emulator
+# See http://fabrice.bellard.free.fr/qemu
+#
+
+# ROM version
+TEXT_BASE = 0xbfc00000
+
+# RAM version
+#TEXT_BASE = 0x80001000
board/qemu-mips/flash.c new file +26 -0
new file mode 100644
index 0000000..49f0134
@@ -0,0 +1,43 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, wd at 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 
Quoted 2 lines

chips */
+#endif

Please remove #if 0 - #endif

board/qemu-mips/flash.c line 33

Quoted 6 lines
board/qemu-mips/flash.c new file +6 -0
+/*-----------------------------------------------------------------------
+ * 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.

Quoted 90 lines
board/qemu-mips/flash.c new file +10 -0
+{
+    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);
+}
board/qemu-mips/lowlevel_init.S new file +41 -0
new file mode 100644
index 0000000..28166bc
@@ -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
board/qemu-mips/qemu-mips.c new file +26 -0
new file mode 100644
index 0000000..345bb95
@@ -0,0 +1,89 @@
+/*
+ * (C) Copyright 2007
+ * Vlad Lungu vlad at 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>

board/qemu-mips/qemu-mips.c line 36

Quoted 10 lines
board/qemu-mips/qemu-mips.c new file +10 -0
+#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

Quoted 43 lines
board/qemu-mips/qemu-mips.c new file +43 -0
+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");

board/qemu-mips/qemu-mips.c line 89

Quoted 10 lines
board/qemu-mips/qemu-mips.c new file +10 -0
+    }
+        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

Quoted 65 lines
board/qemu-mips/u-boot.lds new file +27 -0
new file mode 100644
index 0000000..8793320
@@ -0,0 +1,70 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk Engineering, <[email protected]>
+ *
+ * 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")

board/qemu-mips/u-boot.lds new file +31 -0
+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) }

board/qemu-mips/u-boot.lds line 70

Quoted 10 lines
board/qemu-mips/u-boot.lds new file +10 -0
+    __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.

Quoted 164 lines
include/configs/qemu-mips.h new file +113 -0
new file mode 100644
index 0000000..1f93ad7
@@ -0,0 +1,164 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, wd at 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 */

include/configs/qemu-mips.h new file +3 -0
+
+#define    CFG_CBSIZE        256        /* Console I/O Buffer Size   */
+#define    CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)  /* Print 

Buffer Size */

include/configs/qemu-mips.h new file +9 -0
+#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 */

include/configs/qemu-mips.h new file +4 -0
+
+#define CFG_SDRAM_BASE        0x80000000     /* Cached addr */
+
+#define    CFG_LOAD_ADDR        0x81000000     /* default load 

address */

include/configs/qemu-mips.h new file +25 -0
+
+#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
+

include/configs/qemu-mips.h line 164

Quoted 10 lines
include/configs/qemu-mips.h new file +10 -0
+#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.

author
#12 lore raw
Quoted 7 lines · Shinya Kuribayashi

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]

Quoted 4 lines

please update .lds to the latest board/dbau1x00/u-boot.lds, etc. I'd like to see

	. = .;

What does this do ?

Quoted 11 lines
	_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

#13 lore raw
Quoted 6 lines
Quoted 4 lines

please update .lds to the latest board/dbau1x00/u-boot.lds, etc. I'd like to see

	. = .;

What does this do ?

Quoted 1 line
	_gp = ALIGN(16) + 0x7ff0;

It employs the output of `(CROSS_COMPILE)ld --verbose. It's a normal link script, so I just follow it.

Quoted 4 lines

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

author
#14 lore raw

Shinya Kuribayashi wrote:
[snip]

Quoted 10 lines
Quoted 5 lines

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