Based linux-sunxi#sunxi commit d854c4de2f57 "arm: Handle .gnu.hash section in
ldscripts" vs v2014.01.

As well as the following signed-off-by the sunxi branch shows commits to these
files authored by the following:
  Henrik Nordstrom
  Tom Cubie

Signed-off-by: Stefan Roese <s...@denx.de>
Signed-off-by: Ian Campbell <i...@hellion.org.uk>
---
 Makefile                                |  15 +++
 arch/arm/cpu/armv7/sunxi/config.mk      |   8 ++
 arch/arm/cpu/armv7/sunxi/u-boot-spl.lds |  69 ++++++++++++++
 boards.cfg                              |   1 +
 include/configs/sunxi-common.h          |  45 +++++++++
 spl/Makefile                            |  12 +++
 tools/.gitignore                        |   1 +
 tools/Makefile                          |   6 ++
 tools/mksunxiboot.README                |  13 +++
 tools/mksunxiboot.c                     | 163 ++++++++++++++++++++++++++++++++
 10 files changed, 333 insertions(+)
 create mode 100644 arch/arm/cpu/armv7/sunxi/config.mk
 create mode 100644 arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
 create mode 100644 tools/mksunxiboot.README
 create mode 100644 tools/mksunxiboot.c

diff --git a/Makefile b/Makefile
index 47a03e3..ff1f64e 100644
--- a/Makefile
+++ b/Makefile
@@ -491,6 +491,16 @@ $(obj)u-boot.spr:  $(obj)u-boot.img 
$(obj)spl/u-boot-spl.bin
                        --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@
                cat $(obj)u-boot.img >> $@
 
+# sunxi: Combined object with SPL U-Boot with sunxi header (sunxi-spl.bin)
+# and the full-blown U-Boot attached to it
+$(obj)u-boot-sunxi-with-spl.bin: $(obj)spl/sunxi-spl.bin $(obj)u-boot.img
+               tr "\000" "\377" < /dev/zero | dd ibs=1 
count=$(CONFIG_SPL_PAD_TO) \
+                       of=$(obj)spl/sunxi-spl-pad.bin 2>/dev/null
+               dd if=$(obj)spl/sunxi-spl.bin of=$(obj)spl/sunxi-spl-pad.bin \
+                       conv=notrunc 2>/dev/null
+               cat $(obj)spl/sunxi-spl-pad.bin $(obj)u-boot.img > $@
+               rm $(obj)spl/sunxi-spl-pad.bin
+
 ifneq ($(CONFIG_TEGRA),)
 $(obj)u-boot-nodtb-tegra.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
                $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O 
binary $(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
@@ -578,6 +588,9 @@ $(obj)spl/u-boot-spl.bin:   $(SUBDIR_TOOLS) depend
 $(obj)tpl/u-boot-tpl.bin:      $(SUBDIR_TOOLS) depend
                $(MAKE) -C spl all CONFIG_TPL_BUILD=y
 
+$(obj)spl/sunxi-spl.bin:       $(SUBDIR_TOOLS) depend
+               $(MAKE) -C spl all
+
 # Explicitly make _depend in subdirs containing multiple targets to prevent
 # parallel sub-makes creating .depend files simultaneously.
 depend dep:    $(TIMESTAMP_FILE) $(VERSION_FILE) \
@@ -799,6 +812,7 @@ clean:
               $(obj)tools/dump{env,}image                \
               $(obj)tools/mk{env,}image   $(obj)tools/mpc86x_clk         \
               $(obj)tools/mk{$(BOARD),}spl                               \
+              $(obj)tools/mksunxiboot                                    \
               $(obj)tools/mxsboot                                        \
               $(obj)tools/ncb             $(obj)tools/ubsha1             \
               $(obj)tools/kernel-doc/docproc                             \
@@ -855,6 +869,7 @@ clobber:    tidy
        @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l 
-print | xargs rm -f
        @rm -f $(obj)dts/*.tmp
        @rm -f $(obj)spl/u-boot-spl{,-pad}.ais
+       @rm -f $(obj)spl/sun?i-spl.bin
 
 mrproper \
 distclean:     clobber unconfig
diff --git a/arch/arm/cpu/armv7/sunxi/config.mk 
b/arch/arm/cpu/armv7/sunxi/config.mk
new file mode 100644
index 0000000..9ce48b4
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/config.mk
@@ -0,0 +1,8 @@
+# Build a combined spl + u-boot image
+ifdef CONFIG_SPL
+ifndef CONFIG_SPL_BUILD
+ifndef CONFIG_SPL_FEL
+ALL-y = $(obj)u-boot-sunxi-with-spl.bin
+endif
+endif
+endif
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds 
b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
new file mode 100644
index 0000000..2a3b497
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
@@ -0,0 +1,69 @@
+/*
+ * (C) Copyright 2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangli...@allwinnertech.com>
+ *
+ * Based on omap-common/u-boot-spl.lds:
+ *
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <ga...@denx.de>
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *     Aneesh V <ane...@ti.com>
+ *
+ * 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
+ */
+
+MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
+               LENGTH = CONFIG_SPL_MAX_SIZE }
+MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+               LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+       .text      :
+       {
+               __start = .;
+               arch/arm/cpu/armv7/start.o      (.text)
+               *(.text*)
+       } > .sram
+
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
+
+       . = ALIGN(4);
+       .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+       . = ALIGN(4);
+       __image_copy_end = .;
+       _end = .;
+
+       .bss :
+       {
+               . = ALIGN(4);
+               __bss_start = .;
+               *(.bss*)
+               . = ALIGN(4);
+               __bss_end = .;
+       } > .sdram
+}
diff --git a/boards.cfg b/boards.cfg
index 6c35a40..a513376 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -353,6 +353,7 @@ Active  arm         armv7          rmobile     renesas      
   koelsch
 Active  arm         armv7          s5pc1xx     samsung         goni            
    s5p_goni                             -                                      
                                                                                
           Mateusz Zalega <m.zal...@samsung.com>
 Active  arm         armv7          s5pc1xx     samsung         smdkc100        
    smdkc100                             -                                      
                                                                                
           Minkyu Kang <mk7.k...@samsung.com>
 Active  arm         armv7          socfpga     altera          socfpga         
    socfpga_cyclone5                     -                                      
                                                                                
           -
+Active  arm         armv7          sunxi       -               sunxi           
    Cubietruck                           sun7i:CUBIETRUCK,SPL                   
                                                                                
           -
 Active  arm         armv7          sunxi       -               sunxi           
    Cubietruck_FEL                       sun7i:CUBIETRUCK,SPL_FEL               
                                                                                
           -
 Active  arm         armv7          u8500       st-ericsson     snowball        
    snowball                             -                                      
                                                                                
           Mathieu Poirier <mathieu.poir...@linaro.org>
 Active  arm         armv7          u8500       st-ericsson     u8500           
    u8500_href                           -                                      
                                                                                
           -
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 1afdeb2..1f32304 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -34,6 +34,11 @@
  */
 #define CONFIG_ALLWINNER       /* It's a Allwinner chip */
 #define CONFIG_SUNXI           /* which is sunxi family */
+#ifdef CONFIG_SPL_BUILD
+#ifndef CONFIG_SPL_FEL
+#define CONFIG_SYS_THUMB_BUILD /* Thumbs mode to save space in SPL */
+#endif
+#endif
 
 #include <asm/arch/cpu.h>      /* get chip and board defs */
 
@@ -69,6 +74,9 @@
 #define PHYS_SDRAM_0                   CONFIG_SYS_SDRAM_BASE
 #define PHYS_SDRAM_0_SIZE              0x80000000 /* 2 GiB */
 
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_SETEXPR
+
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_INITRD_TAG
@@ -90,6 +98,10 @@
  */
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + (1 << 20))
 
+/* Flat Device Tree (FDT/DT) support */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_SYS_BOOTMAPSZ           (16 << 20)
+
 /*
  * Miscellaneous configurable options
  */
@@ -137,21 +149,54 @@
 
 #include <config_cmd_default.h>
 
+/* Accept zimage + raw ramdisk without mkimage headers */
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT         /* with this we can access fat bootfs */
+#define CONFIG_FAT_WRITE       /* enable write access */
+#define CONFIG_CMD_EXT2                /* with this we can access ext2 bootfs 
*/
+#define CONFIG_CMD_EXT4                /* with this we can access ext4 bootfs 
*/
+
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 
+#ifdef CONFIG_SPL_FEL
+
 #define CONFIG_SPL
 #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds"
 #define CONFIG_SPL_START_S_PATH "arch/arm/cpu/armv7/sunxi"
 #define CONFIG_SPL_TEXT_BASE           0x2000
 #define CONFIG_SPL_MAX_SIZE            0x4000          /* 16 KiB */
+
+#else /* CONFIG_SPL */
+
+#define CONFIG_SPL_BSS_START_ADDR      0x50000000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000         /* 512 KiB */
+
+#define CONFIG_SPL_TEXT_BASE           0x20            /* sram start+header */
+#define CONFIG_SPL_MAX_SIZE            0x5fe0          /* 24KB on sun4i/sun7i 
*/
+
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+
+#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds"
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        80      /* 40KiB */
+#define CONFIG_SPL_PAD_TO              32768           /* decimal for 'dd' */
+
+#endif /* CONFIG_SPL */
+
 /* end of 32 KiB in sram */
 #define LOW_LEVEL_SRAM_STACK           0x00008000
 #define CONFIG_SPL_STACK               LOW_LEVEL_SRAM_STACK
 
+#undef CONFIG_CMD_FPGA
 #undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
 
 #define CONFIG_CONS_INDEX              1       /* UART0 */
 
diff --git a/spl/Makefile b/spl/Makefile
index 5e5472d..436b952 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -152,6 +152,12 @@ ifdef CONFIG_SAMSUNG
 ALL-y  += $(obj)$(BOARD)-spl.bin
 endif
 
+ifdef CONFIG_SUNXI
+ifndef CONFIG_SPL_FEL
+ALL-y  += $(obj)sunxi-spl.bin
+endif
+endif
+
 all:   $(ALL-y)
 
 ifdef CONFIG_SAMSUNG
@@ -164,6 +170,12 @@ $(obj)$(BOARD)-spl.bin: $(obj)u-boot-spl.bin
        $(OBJTREE)/tools/mk$(BOARD)spl $(VAR_SIZE_PARAM) $< $@
 endif
 
+ifdef CONFIG_SUNXI
+$(obj)sunxi-spl.bin: $(obj)u-boot-spl.bin
+       $(OBJTREE)/tools/mksunxiboot \
+               $(obj)u-boot-spl.bin $(obj)sunxi-spl.bin
+endif
+
 $(obj)$(SPL_BIN).bin:  $(obj)$(SPL_BIN)
        $(OBJCOPY) $(OBJCFLAGS) $(SPL_OBJCFLAGS) -O binary $< $@
 
diff --git a/tools/.gitignore b/tools/.gitignore
index cd2f041..2fdc9bd 100644
--- a/tools/.gitignore
+++ b/tools/.gitignore
@@ -8,6 +8,7 @@
 /mkimage
 /mpc86x_clk
 /mxsboot
+/mksunxiboot
 /ncb
 /proftool
 /relocate-rela
diff --git a/tools/Makefile b/tools/Makefile
index 328cea3..3eb46e6 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -56,6 +56,7 @@ BIN_FILES-y += mkimage$(SFX)
 BIN_FILES-$(CONFIG_EXYNOS5250) += mk$(BOARD)spl$(SFX)
 BIN_FILES-$(CONFIG_EXYNOS5420) += mk$(BOARD)spl$(SFX)
 BIN_FILES-$(CONFIG_MX23) += mxsboot$(SFX)
+BIN_FILES-$(CONFIG_SUNXI) += mksunxiboot$(SFX)
 BIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX)
 BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
 BIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
@@ -97,6 +98,7 @@ OBJ_FILES-$(CONFIG_EXYNOS_SPL) += mkexynosspl.o
 OBJ_FILES-$(CONFIG_KIRKWOOD) += kwboot.o
 OBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o
 OBJ_FILES-$(CONFIG_MX23) += mxsboot.o
+OBJ_FILES-$(CONFIG_SUNXI) += mksunxiboot.o
 OBJ_FILES-$(CONFIG_MX28) += mxsboot.o
 OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
 OBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
@@ -266,6 +268,10 @@ $(obj)mpc86x_clk$(SFX):    $(obj)mpc86x_clk.o
        $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
        $(HOSTSTRIP) $@
 
+$(obj)mksunxiboot$(SFX):       $(obj)mksunxiboot.o
+       $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
+       $(HOSTSTRIP) $@
+
 $(obj)mxsboot$(SFX):   $(obj)mxsboot.o
        $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
        $(HOSTSTRIP) $@
diff --git a/tools/mksunxiboot.README b/tools/mksunxiboot.README
new file mode 100644
index 0000000..5838778
--- /dev/null
+++ b/tools/mksunxiboot.README
@@ -0,0 +1,13 @@
+This program make a arm binary file can be loaded by Allwinner A10 and related
+chips from storage media such as nand and mmc.
+
+More information about A10 boot, please refer to
+http://rhombus-tech.net/allwinner_a10/a10_boot_process/
+
+To compile this program, just type make, you will get 'mksunxiboot'.
+
+To use it,
+$./mksunxiboot u-boot.bin u-boot-mmc.bin
+then you can write it to a mmc card with dd.
+$sudo dd if=u-boot-mmc.bin of=/dev/sdb bs=1024 seek=8
+then insert your mmc card to your A10 tablet, you can boot from mmc card.
diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
new file mode 100644
index 0000000..bc41912
--- /dev/null
+++ b/tools/mksunxiboot.c
@@ -0,0 +1,163 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangli...@allwinnertech.com>
+ *
+ * a simple tool to generate bootable image for sunxi platform.
+ *
+ * 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 <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+typedef unsigned char u8;
+typedef unsigned int u32;
+
+/* boot head definition from sun4i boot code */
+struct boot_file_head {
+       u32 jump_instruction;   /* one intruction jumping to real code */
+       u8 magic[8];            /* ="eGON.BT0" or "eGON.BT1", not C-style str */
+       u32 check_sum;          /* generated by PC */
+       u32 length;             /* generated by PC */
+#if 1
+       /* We use a simplified header, only filling in what is needed by the
+        * boot ROM. To be compatible with Allwinner tools the larger header
+        * below should be used, followed by a custom header if desired. */
+       u8 pad[12];             /* align to 32 bytes */
+#else
+       u32 pub_head_size;      /* the size of boot_file_head */
+       u8 pub_head_vsn[4];     /* the version of boot_file_head */
+       u8 file_head_vsn[4];    /* the version of boot0_file_head or
+                                  boot1_file_head */
+       u8 Boot_vsn[4];         /* Boot version */
+       u8 eGON_vsn[4];         /* eGON version */
+       u8 platform[8];         /* platform information */
+#endif
+};
+
+#define BOOT0_MAGIC                     "eGON.BT0"
+#define STAMP_VALUE                     0x5F0A6C39
+
+/* check sum functon from sun4i boot code */
+int gen_check_sum(void *boot_buf)
+{
+       struct boot_file_head *head_p;
+       u32 length;
+       u32 *buf;
+       u32 loop;
+       u32 i;
+       u32 sum;
+
+       head_p = (struct boot_file_head *)boot_buf;
+       length = head_p->length;
+       if ((length & 0x3) != 0)        /* must 4-byte-aligned */
+               return -1;
+       buf = (u32 *)boot_buf;
+       head_p->check_sum = STAMP_VALUE;        /* fill stamp */
+       loop = length >> 2;
+
+       /* calculate the sum */
+       for (i = 0, sum = 0; i < loop; i++)
+               sum += buf[i];
+
+       /* write back check sum */
+       head_p->check_sum = sum;
+
+       return 0;
+}
+
+#define ALIGN(x, a) __ALIGN_MASK((x), (typeof(x))(a)-1)
+#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask))
+
+#define SUN4I_SRAM_SIZE 0x7600 /* 0x7748+ is used by BROM */
+#define SRAM_LOAD_MAX_SIZE (SUN4I_SRAM_SIZE - sizeof(struct boot_file_head))
+#define BLOCK_SIZE 512
+
+struct boot_img {
+       struct boot_file_head header;
+       char code[SRAM_LOAD_MAX_SIZE];
+       char pad[BLOCK_SIZE];
+};
+
+int main(int argc, char *argv[])
+{
+       int fd_in, fd_out;
+       struct boot_img img;
+       unsigned file_size, load_size;
+       int count;
+
+       if (argc < 2) {
+               printf("\tThis program makes an input bin file to sun4i " \
+                      "bootable image.\n" \
+                      "\tUsage: %s input_file out_putfile\n", argv[0]);
+               return EXIT_FAILURE;
+       }
+
+       fd_in = open(argv[1], O_RDONLY);
+       if (fd_in < 0) {
+               perror("Open input file:");
+               return EXIT_FAILURE;
+       }
+
+       memset((void *)img.pad, 0, BLOCK_SIZE);
+
+       /* get input file size */
+       file_size = lseek(fd_in, 0, SEEK_END);
+       printf("File size: 0x%x\n", file_size);
+
+       if (file_size > SRAM_LOAD_MAX_SIZE) {
+               fprintf(stderr, "ERROR: File too large!\n");
+               return EXIT_FAILURE;
+       } else
+               load_size = ALIGN(file_size, sizeof(int));
+       printf("Load size: 0x%x\n", load_size);
+
+       fd_out = open(argv[2], O_WRONLY | O_CREAT, 0666);
+       if (fd_out < 0) {
+               perror("Open output file:");
+               return EXIT_FAILURE;
+       }
+
+       /* read file to buffer to calculate checksum */
+       lseek(fd_in, 0, SEEK_SET);
+       count = read(fd_in, img.code, load_size);
+       printf("Read 0x%x bytes\n", count);
+
+       /* fill the header */
+       img.header.jump_instruction =   /* b instruction */
+               0xEA000000 |    /* jump to the first instr after the header */
+               ((sizeof(struct boot_file_head) / sizeof(int) - 2)
+                & 0x00FFFFFF);
+       memcpy(img.header.magic, BOOT0_MAGIC, 8);       /* no '0' termination */
+       img.header.length =
+               ALIGN(load_size + sizeof(struct boot_file_head), BLOCK_SIZE);
+       gen_check_sum((void *)&img);
+
+       count = write(fd_out, (void *)&img, img.header.length);
+       printf("Write 0x%x bytes\n", count);
+
+       close(fd_in);
+       close(fd_out);
+
+       return EXIT_SUCCESS;
+}
-- 
1.8.5.3

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

Reply via email to