Re: [U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support
2012/9/5 Zhi-zhou Zhang : [...] >> >> why have you omitted this? >> >> #define CONFIG_BOOTCOMMAND "bootp;bootelf" >> >> #define CONFIG_CMD_ELF >> > Because I haven't tested `bootelf' command. I'm not should it work or not. > Another reason is that when I configure CONFIG_CMD_ELF I will get lots of > warning such as: > cmd_elf.c: In function 'load_elf_image_phdr': > cmd_elf.c:289:15: warning: cast to pointer from integer of different size > [-Wint-to-pointer-cast] > cmd_elf.c: In function 'load_elf_image_shdr': > cmd_elf.c:343:12: warning: cast to pointer from integer of different size > [-Wint-to-pointer-cast] > cmd_elf.c:346:12: warning: cast to pointer from integer of different size > [-Wint-to-pointer-cast] ok but there are similar warnings in other files too. We can fix those files later. My point is that all qemu_mips variants should be configured with the same options. [...] >> >> why have you omitted the flash support? qemu-system-mips supports >> flash emulation >> with the option -pflash. It already works with a qemu_mips32 U-boot. >> > Yes, I have tested with -pflash in qemu_mips64 either. I have forgot why I > omit > it now. By the way, which commit should I base on of my next patch? it is still git://git.denx.de/u-boot-mips.git master -- Best regards, Daniel ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support
On Wed, Sep 5, 2012 at 7:12 AM, Daniel Schwierzeck < daniel.schwierz...@gmail.com> wrote: > 2012/9/4 Zhizhou Zhang : > > Both big-endian and little-endian are tested with below commands: > > Rom version: (Default, Now we config it as rom version) > > qemu-system-mips64el -M mips -bios u-boot.bin -cpu MIPS64R2-generic > -nographic > > qemu-system-mips64 -M mips -bios u-boot.bin -cpu MIPS64R2-generic > -nographic > > Ram version: > > qemu-system-mips64el -M mips -cpu MIPS64R2-generic -kernel u-boot > -nographic > > qemu-system-mips64 -M mips -cpu MIPS64R2-generic -kernel u-boot > -nographic > > > > Signed-off-by: Zhizhou Zhang > > --- > > arch/mips/cpu/mips64/Makefile | 45 +++ > > arch/mips/cpu/mips64/cache.S | 229 > + > > arch/mips/cpu/mips64/config.mk| 40 ++ > > arch/mips/cpu/mips64/cpu.c| 111 > > arch/mips/cpu/mips64/interrupts.c | 34 + > > arch/mips/cpu/mips64/start.S | 256 > + > > arch/mips/cpu/mips64/time.c | 87 + > > board/qemu-mips/u-boot.lds|8 ++ > > boards.cfg|2 + > > examples/standalone/mips64.lds| 59 + > > include/configs/qemu-mips64.h | 171 + > > 11 files changed, 1042 insertions(+) > > create mode 100644 arch/mips/cpu/mips64/Makefile > > create mode 100644 arch/mips/cpu/mips64/cache.S > > create mode 100644 arch/mips/cpu/mips64/config.mk > > create mode 100644 arch/mips/cpu/mips64/cpu.c > > create mode 100644 arch/mips/cpu/mips64/interrupts.c > > create mode 100644 arch/mips/cpu/mips64/start.S > > create mode 100644 arch/mips/cpu/mips64/time.c > > create mode 100644 examples/standalone/mips64.lds > > create mode 100644 include/configs/qemu-mips64.h > > > [...] > > diff --git a/include/configs/qemu-mips64.h > b/include/configs/qemu-mips64.h > > new file mode 100644 > > index 000..216326d > > --- /dev/null > > +++ b/include/configs/qemu-mips64.h > > @@ -0,0 +1,171 @@ > > +/* > > + * (C) Copyright 2003 > > + * Wolfgang Denk, DENX Software Engineering, w...@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 qemu-mips64 > target. > > + */ > > + > > +#ifndef __CONFIG_H > > +#define __CONFIG_H > > + > > +#define CONFIG_MIPS64 /* MIPS64 CPU core */ > > +#define CONFIG_QEMU_MIPS1 > > +#define CONFIG_MISC_INIT_R > > + > > +#define CONFIG_BOOTDELAY 10 /* autoboot after 10 seconds */ > > + > > +#define CONFIG_BAUDRATE115200 > > + > > +/* valid baudrates */ > > +#define CONFIG_SYS_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 8050 ${u-boot}\0"\ > > + "" > > + > > why have you omitted this? > > #define CONFIG_BOOTCOMMAND "bootp;bootelf" > > #define CONFIG_CMD_ELF > > Because I haven't tested `bootelf' command. I'm not should it work or not. Another reason is that when I configure CONFIG_CMD_ELF I will get lots of warning such as: cmd_elf.c: In function 'load_elf_image_phdr': cmd_elf.c:289:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] cmd_elf.c: In function 'load_elf_image_shdr': cmd_elf.c:343:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] cmd_elf.c:346:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] > +/* > > + * BOOTP options > > + */ > > +#define CONFIG_BOOTP_BOOTFILESIZE > > +#define CONFIG_BOOTP_BOO
Re: [U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support
2012/9/4 Zhizhou Zhang : > Both big-endian and little-endian are tested with below commands: > Rom version: (Default, Now we config it as rom version) > qemu-system-mips64el -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic > qemu-system-mips64 -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic > Ram version: > qemu-system-mips64el -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic > qemu-system-mips64 -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic > > Signed-off-by: Zhizhou Zhang > --- > arch/mips/cpu/mips64/Makefile | 45 +++ > arch/mips/cpu/mips64/cache.S | 229 + > arch/mips/cpu/mips64/config.mk| 40 ++ > arch/mips/cpu/mips64/cpu.c| 111 > arch/mips/cpu/mips64/interrupts.c | 34 + > arch/mips/cpu/mips64/start.S | 256 > + > arch/mips/cpu/mips64/time.c | 87 + > board/qemu-mips/u-boot.lds|8 ++ > boards.cfg|2 + > examples/standalone/mips64.lds| 59 + > include/configs/qemu-mips64.h | 171 + > 11 files changed, 1042 insertions(+) > create mode 100644 arch/mips/cpu/mips64/Makefile > create mode 100644 arch/mips/cpu/mips64/cache.S > create mode 100644 arch/mips/cpu/mips64/config.mk > create mode 100644 arch/mips/cpu/mips64/cpu.c > create mode 100644 arch/mips/cpu/mips64/interrupts.c > create mode 100644 arch/mips/cpu/mips64/start.S > create mode 100644 arch/mips/cpu/mips64/time.c > create mode 100644 examples/standalone/mips64.lds > create mode 100644 include/configs/qemu-mips64.h > [...] > diff --git a/include/configs/qemu-mips64.h b/include/configs/qemu-mips64.h > new file mode 100644 > index 000..216326d > --- /dev/null > +++ b/include/configs/qemu-mips64.h > @@ -0,0 +1,171 @@ > +/* > + * (C) Copyright 2003 > + * Wolfgang Denk, DENX Software Engineering, w...@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 qemu-mips64 target. > + */ > + > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#define CONFIG_MIPS64 /* MIPS64 CPU core */ > +#define CONFIG_QEMU_MIPS1 > +#define CONFIG_MISC_INIT_R > + > +#define CONFIG_BOOTDELAY 10 /* autoboot after 10 seconds */ > + > +#define CONFIG_BAUDRATE115200 > + > +/* valid baudrates */ > +#define CONFIG_SYS_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 8050 ${u-boot}\0"\ > + "" > + why have you omitted this? #define CONFIG_BOOTCOMMAND "bootp;bootelf" #define CONFIG_CMD_ELF > +/* > + * BOOTP options > + */ > +#define CONFIG_BOOTP_BOOTFILESIZE > +#define CONFIG_BOOTP_BOOTPATH > +#define CONFIG_BOOTP_GATEWAY > +#define CONFIG_BOOTP_HOSTNAME > + > +/* > + * Command line configuration. > + */ > +#include > +#define CONFIG_DP83902A > + > +#define CONFIG_CMD_FAT > +#define CONFIG_CMD_EXT2 > +#undef CONFIG_CMD_LOADB > +#undef CONFIG_CMD_LOADS > +#define CONFIG_CMD_DHCP > + > +#define CONFIG_DRIVER_NE2000 > +#define CONFIG_DRIVER_NE2000_BASE 0xb4000300 > + > +#define CONFIG_SYS_NS16550 > +#define CONFIG_SYS_NS16550_SERIAL > +#define CONFIG_SYS_NS16550_REG_SIZE1 > +#define CONFIG_SYS_NS16550_CLK 115200 > +#define CONFIG_SYS_NS16550_COM1(0xb40003f8) > +#define CONFIG_CONS_INDEX 1 > + > +#define CONFIG_CMD_IDE > +#define CONFIG_DOS_PARTITION > + > +#define CONFIG_SYS_IDE_MAXBUS 2 > +#define CONFIG_SYS_ATA_IDE0_OFFSET (0x1f0) > +#define CONFIG_SYS_ATA_IDE1
Re: [U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support
2012/9/4 Zhizhou Zhang : > Both big-endian and little-endian are tested with below commands: > Rom version: (Default, Now we config it as rom version) > qemu-system-mips64el -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic > qemu-system-mips64 -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic > Ram version: > qemu-system-mips64el -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic > qemu-system-mips64 -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic > > Signed-off-by: Zhizhou Zhang > --- > arch/mips/cpu/mips64/Makefile | 45 +++ > arch/mips/cpu/mips64/cache.S | 229 + > arch/mips/cpu/mips64/config.mk| 40 ++ > arch/mips/cpu/mips64/cpu.c| 111 > arch/mips/cpu/mips64/interrupts.c | 34 + > arch/mips/cpu/mips64/start.S | 256 > + > arch/mips/cpu/mips64/time.c | 87 + > board/qemu-mips/u-boot.lds|8 ++ > boards.cfg|2 + > examples/standalone/mips64.lds| 59 + > include/configs/qemu-mips64.h | 171 + > 11 files changed, 1042 insertions(+) > create mode 100644 arch/mips/cpu/mips64/Makefile > create mode 100644 arch/mips/cpu/mips64/cache.S > create mode 100644 arch/mips/cpu/mips64/config.mk > create mode 100644 arch/mips/cpu/mips64/cpu.c > create mode 100644 arch/mips/cpu/mips64/interrupts.c > create mode 100644 arch/mips/cpu/mips64/start.S > create mode 100644 arch/mips/cpu/mips64/time.c > create mode 100644 examples/standalone/mips64.lds > create mode 100644 include/configs/qemu-mips64.h > [...] > diff --git a/include/configs/qemu-mips64.h b/include/configs/qemu-mips64.h > new file mode 100644 > index 000..216326d > --- /dev/null > +++ b/include/configs/qemu-mips64.h > @@ -0,0 +1,171 @@ > +/* > + * (C) Copyright 2003 > + * Wolfgang Denk, DENX Software Engineering, w...@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 qemu-mips64 target. > + */ > + > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#define CONFIG_MIPS64 /* MIPS64 CPU core */ > +#define CONFIG_QEMU_MIPS1 #define CONFIG_QEMU_MIPS arch/mips/lib/config.mk depends on that config option > +#define CONFIG_MISC_INIT_R > + > +#define CONFIG_BOOTDELAY 10 /* autoboot after 10 seconds */ > + > +#define CONFIG_BAUDRATE115200 > + > +/* valid baudrates */ > +#define CONFIG_SYS_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 8050 ${u-boot}\0"\ > + "" > + > +/* > + * BOOTP options > + */ > +#define CONFIG_BOOTP_BOOTFILESIZE > +#define CONFIG_BOOTP_BOOTPATH > +#define CONFIG_BOOTP_GATEWAY > +#define CONFIG_BOOTP_HOSTNAME > + > +/* > + * Command line configuration. > + */ > +#include > +#define CONFIG_DP83902A > + > +#define CONFIG_CMD_FAT > +#define CONFIG_CMD_EXT2 > +#undef CONFIG_CMD_LOADB > +#undef CONFIG_CMD_LOADS > +#define CONFIG_CMD_DHCP > + > +#define CONFIG_DRIVER_NE2000 > +#define CONFIG_DRIVER_NE2000_BASE 0xb4000300 > + > +#define CONFIG_SYS_NS16550 > +#define CONFIG_SYS_NS16550_SERIAL > +#define CONFIG_SYS_NS16550_REG_SIZE1 > +#define CONFIG_SYS_NS16550_CLK 115200 > +#define CONFIG_SYS_NS16550_COM1(0xb40003f8) > +#define CONFIG_CONS_INDEX 1 > + > +#define CONFIG_CMD_IDE > +#define CONFIG_DOS_PARTITION > + > +#define CONFIG_SYS_IDE_MAXBUS 2 > +#define CONFIG_SYS_ATA_IDE0_OFFSET (0x1f0) > +#define CONFIG_SYS_ATA_IDE1_OFFSET (0x170)
[U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support
Both big-endian and little-endian are tested with below commands: Rom version: (Default, Now we config it as rom version) qemu-system-mips64el -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic qemu-system-mips64 -M mips -bios u-boot.bin -cpu MIPS64R2-generic -nographic Ram version: qemu-system-mips64el -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic qemu-system-mips64 -M mips -cpu MIPS64R2-generic -kernel u-boot -nographic Signed-off-by: Zhizhou Zhang --- arch/mips/cpu/mips64/Makefile | 45 +++ arch/mips/cpu/mips64/cache.S | 229 + arch/mips/cpu/mips64/config.mk| 40 ++ arch/mips/cpu/mips64/cpu.c| 111 arch/mips/cpu/mips64/interrupts.c | 34 + arch/mips/cpu/mips64/start.S | 256 + arch/mips/cpu/mips64/time.c | 87 + board/qemu-mips/u-boot.lds|8 ++ boards.cfg|2 + examples/standalone/mips64.lds| 59 + include/configs/qemu-mips64.h | 171 + 11 files changed, 1042 insertions(+) create mode 100644 arch/mips/cpu/mips64/Makefile create mode 100644 arch/mips/cpu/mips64/cache.S create mode 100644 arch/mips/cpu/mips64/config.mk create mode 100644 arch/mips/cpu/mips64/cpu.c create mode 100644 arch/mips/cpu/mips64/interrupts.c create mode 100644 arch/mips/cpu/mips64/start.S create mode 100644 arch/mips/cpu/mips64/time.c create mode 100644 examples/standalone/mips64.lds create mode 100644 include/configs/qemu-mips64.h diff --git a/arch/mips/cpu/mips64/Makefile b/arch/mips/cpu/mips64/Makefile new file mode 100644 index 000..be38664 --- /dev/null +++ b/arch/mips/cpu/mips64/Makefile @@ -0,0 +1,45 @@ +# +# (C) Copyright 2003-2006 +# Wolfgang Denk, DENX Software Engineering, w...@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$(CPU).o + +START = start.o +COBJS-y= cpu.o interrupts.o time.o cache.o + +SRCS := $(START:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y)) +START := $(addprefix $(obj),$(START)) + +all: $(obj).depend $(START) $(LIB) + +$(LIB):$(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +# + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend diff --git a/arch/mips/cpu/mips64/cache.S b/arch/mips/cpu/mips64/cache.S new file mode 100644 index 000..036f035 --- /dev/null +++ b/arch/mips/cpu/mips64/cache.S @@ -0,0 +1,229 @@ +/* + * Cache-handling routined for MIPS CPUs + * + * Copyright (c) 2003 Wolfgang Denk + * + * 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 +#include +#include +#include +#include +#include +#include + +#define RA t9 + +/* + * 16kB is the maximum size of instruction and data caches on MIPS 4K, + * 64kB is on 4KE, 24K, 5K, etc. Set bigger size for convenience. + * + * Note that the above size is the maximum size of primary cache. U-Boot + * doesn't have L2 cache support for now. + */ +#define MIPS_MAX_CACHE_SIZE0x1 + +#define INDEX_BASE CKSEG0 + + .macro cache_op op addr + .setpush + .setnoreorder + .setmips3 + cache \op, 0(\addr) + .setpop + .endm + + .macro f_fill64 dst, offset, val + LONG_S