@@ -410,6 +410,26 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return 0;
}
+#elif defined(CONFIG_H8300)
+
+int do_bdinfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ bd_t *bd = gd->bd;
+ print_num ("mem start ", (ulong)bd->bi_memstart);
+ print_lnum ("mem size ", (u64)bd->bi_memsize);
+#if !defined(CONFIG_SYS_NO_FLASH)
+ print_num ("flash start ", (ulong)bd->bi_flashstart);
+ print_num ("flash size ", (ulong)bd->bi_flashsize);
+ print_num ("flash offset ", (ulong)bd->bi_flashoffset);
+#endif
+
+#if defined(CONFIG_CMD_NET)
+ print_eth(0);
+ printf ("ip_addr = %pI4\n", &bd->bi_ip_addr);
+#endif
+ printf ("baudrate = %ld bps\n", (ulong)bd->bi_baudrate);
+ return 0;
+}
#else
#error "a case for this architecture does not exist!"
@@ -187,6 +187,8 @@ void arch_preboot_os(void) __attribute__((weak, alias("__arch_preboot_os")));
#define IH_INITRD_ARCH IH_ARCH_SH
#elif defined(__sparc__)
#define IH_INITRD_ARCH IH_ARCH_SPARC
+#elif defined(__H8300H__) || defined(__H8300S__)
+ #define IH_INITRD_ARCH IH_ARCH_H8300
#else
# error Unknown CPU type
#endif
@@ -68,8 +68,6 @@ ELF := $(addprefix $(obj),$(ELF))
BIN := $(addprefix $(obj),$(BIN))
SREC := $(addprefix $(obj),$(SREC))
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
CPPFLAGS += -I..
# For PowerPC there's no need to compile standalone applications as a
@@ -86,6 +84,7 @@ endif
# application's entry point will be the first function in the application's
# source file.
CFLAGS += $(call cc-option,-fno-toplevel-reorder)
+gcclibdir := $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`)
all: $(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN) $(ELF)
@@ -167,7 +167,20 @@ gd_t *global_data;
" jmp %%g1\n" \
" nop\n" \
: : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "g1" );
-
+#elif defined(CONFIG_H8300)
+/*
+ * er5 holds the pointer to the global_data. er0 is call clobbered.
+ */
+#define EXPORT_FUNC(x) \
+ asm volatile( \
+ " .globl\t_" #x "\n" \
+ "_" #x ":\n" \
+ " mov.l er5,er0\n" \
+ " add.l %0,er0\n" \
+ " add.l %1,er0\n" \
+ " mov.l @er0,er0\n" \
+ " jmp @er0\n" \
+ : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "er0" );
#else
#error stubs definition missing for this architecture
#endif
@@ -186,7 +199,10 @@ void __attribute__((unused)) dummy(void)
{
#include <_exports.h>
}
-
+#if defined(CONFIG_H8300)
+#define __bss_start _bss_start
+#define _end end
+#endif
extern unsigned long __bss_start, _end;
void app_startup(char * const *argv)
@@ -106,6 +106,7 @@
#define IH_ARCH_BLACKFIN 16 /* Blackfin */
#define IH_ARCH_AVR32 17 /* AVR32 */
#define IH_ARCH_ST200 18 /* STMicroelectronics ST200 */
+#define IH_ARCH_H8300 19 /* H8/300 */
/*
* Image Types
@@ -504,6 +505,8 @@ static inline int image_check_target_arch (const image_header_t *hdr)
if (!image_check_arch (hdr, IH_ARCH_SH))
#elif defined(__sparc__)
if (!image_check_arch (hdr, IH_ARCH_SPARC))
+#elif defined(__H8300H__) || defined(__H8300S__)
+ if (!image_check_arch (hdr, IH_ARCH_H8300))
#else
# error Unknown CPU type
#endif
@@ -656,6 +659,8 @@ static inline int fit_image_check_target_arch (const void *fdt, int node)
if (!fit_image_check_arch (fdt, node, IH_ARCH_SH))
#elif defined(__sparc__)
if (!fit_image_check_arch (fdt, node, IH_ARCH_SPARC))
+#elif defined(__H8300H__) || defined(__H8300S__)
+ if (!image_check_arch (hdr, IH_ARCH_H8300))
#else
# error Unknown CPU type
#endif
This part h8300 cpu support (3/3) Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp> --- common/cmd_bdinfo.c | 20 ++++++++++++++++++++ common/cmd_bootm.c | 2 ++ examples/standalone/Makefile | 3 +-- examples/standalone/stubs.c | 20 ++++++++++++++++++-- include/image.h | 5 +++++ 5 files changed, 46 insertions(+), 4 deletions(-)