Both big-endian and little-endian are tested with below commands:
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 <etou...@gmail.com>
---
 board/qemu-mips/u-boot.lds    |    8 ++
 boards.cfg                    |    2 +
 include/configs/qemu-mips64.h |  179 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 189 insertions(+)
 create mode 100644 include/configs/qemu-mips64.h

diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds
index 9460b20..4d9580f 100644
--- a/board/qemu-mips/u-boot.lds
+++ b/board/qemu-mips/u-boot.lds
@@ -24,7 +24,11 @@
 /*
 OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
 */
+#if defined(CONFIG_64BIT)
+OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips", "elf64-tradlittlemips")
+#else
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+#endif
 OUTPUT_ARCH(mips)
 ENTRY(_start)
 SECTIONS
@@ -63,7 +67,11 @@ SECTIONS
        }
 
        uboot_end_data = .;
+#if defined(CONFIG_64BIT)
+       num_got_entries = (__got_end - __got_start) >> 3;
+#else
        num_got_entries = (__got_end - __got_start) >> 2;
+#endif
 
        . = ALIGN(4);
        .sbss  : { *(.sbss*) }
diff --git a/boards.cfg b/boards.cfg
index 6b54941..ff4bb0c 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -380,6 +380,8 @@ M5485HFE                 m68k        mcf547x_8x  m548xevb   
         freescale      -
 microblaze-generic           microblaze  microblaze  microblaze-generic  xilinx
 qemu_mips                    mips        mips32      qemu-mips           -     
         -           qemu-mips:SYS_BIG_ENDIAN
 qemu_mipsel                  mips        mips32      qemu-mips           -     
         -           qemu-mips:SYS_LITTLE_ENDIAN
+qemu_mips64                  mips        mips64      qemu-mips           -     
         -           qemu-mips64:SYS_BIG_ENDIAN
+qemu_mips64el                mips        mips64      qemu-mips           -     
         -           qemu-mips64:SYS_LITTLE_ENDIAN
 vct_platinum                 mips        mips32      vct                 
micronas       -           vct:VCT_PLATINUM
 vct_platinumavc              mips        mips32      vct                 
micronas       -           vct:VCT_PLATINUMAVC
 vct_platinumavc_onenand      mips        mips32      vct                 
micronas       -           vct:VCT_PLATINUMAVC,VCT_ONENAND
diff --git a/include/configs/qemu-mips64.h b/include/configs/qemu-mips64.h
new file mode 100644
index 0000000..c1962a0
--- /dev/null
+++ b/include/configs/qemu-mips64.h
@@ -0,0 +1,179 @@
+/*
+ * (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
+
+/*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 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"                        \
+       ""
+
+#define CONFIG_BOOTCOMMAND     ""
+
+/*
+ * 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_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
+
+/* The following #defines are needed to get flash environment right */
+#undef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE           0xffffffff80200000 /* RAM Version */
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_SYS_INIT_SP_OFFSET      0x400000
+#define CONFIG_ENV_IS_NOWHERE          1
+
+/* Address and size of Primary Environment Sector */
+#define CONFIG_ENV_SIZE                0x8000
+
+#define CONFIG_ENV_OVERWRITE   1
+
+#define MEM_SIZE               128
+
+#undef CONFIG_MEMSIZE_IN_BYTES
+
+#define CONFIG_LZA
+
+/*-----------------------------------------------------------------------
+ * 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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to