From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi-zhou Zhang Date: Wed, 5 Sep 2012 19:59:57 +0800 Subject: [U-Boot] [Patch V5 4/4] MIPS: add board qemu-mips64 support In-Reply-To: References: <1346769158-18319-1-git-send-email-etou.zh@gmail.com> <1346769158-18319-5-git-send-email-etou.zh@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Wed, Sep 5, 2012 at 7:12 AM, Daniel Schwierzeck < daniel.schwierzeck@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 0000000..216326d > > --- /dev/null > > +++ b/include/configs/qemu-mips64.h > > @@ -0,0 +1,171 @@ > > +/* > > + * (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 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_BAUDRATE 115200 > > + > > +/* 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 ffffffff80500000 ${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_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 0xffffffffb4000300 > > + > > +#define CONFIG_SYS_NS16550 > > +#define CONFIG_SYS_NS16550_SERIAL > > +#define CONFIG_SYS_NS16550_REG_SIZE 1 > > +#define CONFIG_SYS_NS16550_CLK 115200 > > +#define CONFIG_SYS_NS16550_COM1 (0xffffffffb40003f8) > > +#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) > > +#define CONFIG_SYS_ATA_DATA_OFFSET (0) > > +#define CONFIG_SYS_ATA_REG_OFFSET (0) > > +#define CONFIG_SYS_ATA_BASE_ADDR (0xffffffffb4000000) > > + > > +#define CONFIG_SYS_IDE_MAXDEVICE (4) > > + > > +#define CONFIG_CMD_RARP > > + > > +/* > > + * Miscellaneous configurable options > > + */ > > +#define CONFIG_SYS_LONGHELP /* undef to save memory */ > > + > > +/* Monitor Command Prompt */ > > +#if defined(CONFIG_SYS_LITTLE_ENDIAN) > > +#define CONFIG_SYS_PROMPT "qemu-mips64el # " > > +#else > > +#define CONFIG_SYS_PROMPT "qemu-mips64 # " > > +#endif > > + > > +#define CONFIG_AUTO_COMPLETE > > +#define CONFIG_CMDLINE_EDITING > > +#define CONFIG_SYS_HUSH_PARSER > > +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " > > + > > +/* Console I/O Buffer Size */ > > +#define CONFIG_SYS_CBSIZE 256 > > +/* Print Buffer Size */ > > +#define CONFIG_SYS_PBSIZE > (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) > > +/* max number of command args */ > > +#define CONFIG_SYS_MAXARGS 16 > > + > > +#define CONFIG_SYS_MALLOC_LEN 128*1024 > > + > > +#define CONFIG_SYS_BOOTPARAMS_LEN 128*1024 > > + > > +#define CONFIG_SYS_MHZ 132 > > + > > +#define CONFIG_SYS_MIPS_TIMER_FREQ (CONFIG_SYS_MHZ * 1000000) > > + > > +#define CONFIG_SYS_HZ 1000 > > + > > +/* Cached addr */ > > +#define CONFIG_SYS_SDRAM_BASE 0xffffffff80000000 > > + > > +/* default load address */ > > +#define CONFIG_SYS_LOAD_ADDR 0xffffffff81000000 > > + > > +#define CONFIG_SYS_MEMTEST_START 0xffffffff80100000 > > +#define CONFIG_SYS_MEMTEST_END 0xffffffff80800000 > > + > > > +/*----------------------------------------------------------------------- > > + * FLASH and environment organization > > + */ > > +#define CONFIG_CMD_NO_FLASH > > +#define CONFIG_SYS_NO_FLASH > > +#undef CONFIG_CMD_IMLS > > 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? > > + > > +/* The following #defines are needed to get flash environment right */ > > +#undef CONFIG_SYS_TEXT_BASE > > drop this line > > > +#define CONFIG_SYS_TEXT_BASE 0xffffffffbfc00000 /* ROM > Version */ > > +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE > > + > > +#define CONFIG_SYS_INIT_SP_OFFSET 0x400000 > > +#define CONFIG_ENV_IS_NOWHERE > > + > > +/* Address and size of Primary Environment Sector */ > > +#define CONFIG_ENV_SIZE 0x8000 > > + > > +#define CONFIG_ENV_OVERWRITE > > + > > +#define MEM_SIZE 128 > > + > > +#define CONFIG_LZA > > #define CONFIG_LZMA > > Thanks, I will put more attention on checking this file. > > + > > > +/*----------------------------------------------------------------------- > > + * Cache Configuration > > + */ > > +#define CONFIG_SYS_DCACHE_SIZE 16384 > > +#define CONFIG_SYS_ICACHE_SIZE 16384 > > +#define CONFIG_SYS_CACHELINE_SIZE 32 > > + > > +#endif /* __CONFIG_H */ > > -- > > 1.7.9.5 > > > > > > -- > Best regards, > Daniel > -- Regards, Zhizhou Zhang