[U-Boot] [PATCH 3/5] Add h8300 architecture part3 - misc

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(-)
diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c index bba7374..4c8494d 100644 --- a/common/cmd_bdinfo.c +++ b/common/cmd_bdinfo.c @@ -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!" diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 18019d6..08321e7 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -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 diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index c1dfdce..e5eaf5b 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -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)
diff --git a/examples/standalone/stubs.c b/examples/standalone/stubs.c index 2d2e709..957326f 100644 --- a/examples/standalone/stubs.c +++ b/examples/standalone/stubs.c @@ -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) diff --git a/include/image.h b/include/image.h index 005e0d2..8cee0fc 100644 --- a/include/image.h +++ b/include/image.h @@ -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
participants (1)
-
Yoshinori Sato