diff options
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/cpu/sh2/cpu.c | 6 | ||||
-rw-r--r-- | arch/sh/cpu/sh2/start.S | 7 | ||||
-rw-r--r-- | arch/sh/cpu/sh3/cpu.c | 6 | ||||
-rw-r--r-- | arch/sh/cpu/sh3/start.S | 7 | ||||
-rw-r--r-- | arch/sh/cpu/sh4/cpu.c | 6 | ||||
-rw-r--r-- | arch/sh/cpu/sh4/start.S | 7 | ||||
-rw-r--r-- | arch/sh/cpu/u-boot.lds | 1 | ||||
-rw-r--r-- | arch/sh/include/asm/u-boot.h | 12 | ||||
-rw-r--r-- | arch/sh/lib/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/lib/board.c | 189 |
10 files changed, 33 insertions, 209 deletions
diff --git a/arch/sh/cpu/sh2/cpu.c b/arch/sh/cpu/sh2/cpu.c index a2f856f459..9a93cf573f 100644 --- a/arch/sh/cpu/sh2/cpu.c +++ b/arch/sh/cpu/sh2/cpu.c @@ -83,3 +83,9 @@ int dcache_status(void) { return 0; } + +void relocate_code(ulong start_addr_sp, gd_t *new_gd, ulong relocaaddr) +{ + /* TODO(sh maintainer): Implement this */ + while (1); +} diff --git a/arch/sh/cpu/sh2/start.S b/arch/sh/cpu/sh2/start.S index ebf731a3ab..6171edcce2 100644 --- a/arch/sh/cpu/sh2/start.S +++ b/arch/sh/cpu/sh2/start.S @@ -46,8 +46,9 @@ _init: mov.l ._gd_init, r13 /* global data */ mov.l ._stack_init, r15 /* stack */ - mov.l ._sh_generic_init, r0 - jsr @r0 + #TODO(sh maintainer): Fix this up to call the correct code + #mov.l ._sh_generic_init, r0 + #jsr @r0 nop loop: @@ -62,4 +63,4 @@ loop: ._bss_end: .long bss_end ._gd_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE) ._stack_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16) -._sh_generic_init: .long sh_generic_init +#._sh_generic_init: .long sh_generic_init diff --git a/arch/sh/cpu/sh3/cpu.c b/arch/sh/cpu/sh3/cpu.c index ea0006a650..494f908f64 100644 --- a/arch/sh/cpu/sh3/cpu.c +++ b/arch/sh/cpu/sh3/cpu.c @@ -66,3 +66,9 @@ int dcache_status(void) { return 0; } + +void relocate_code(ulong start_addr_sp, gd_t *new_gd, ulong relocaaddr) +{ + /* TODO(sh maintainer): Implement this */ + while (1); +} diff --git a/arch/sh/cpu/sh3/start.S b/arch/sh/cpu/sh3/start.S index 7a934e24d4..9ed7198f2b 100644 --- a/arch/sh/cpu/sh3/start.S +++ b/arch/sh/cpu/sh3/start.S @@ -45,8 +45,9 @@ _sh_start: mov.l ._gd_init, r13 /* global data */ mov.l ._stack_init, r15 /* stack */ - mov.l ._sh_generic_init, r0 - jsr @r0 + #TODO(sh maintainer): Fix this up to call the correct code + #mov.l ._sh_generic_init, r0 + #jsr @r0 nop loop: @@ -61,4 +62,4 @@ loop: ._bss_end: .long bss_end ._gd_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE) ._stack_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16) -._sh_generic_init: .long sh_generic_init +#._sh_generic_init: .long sh_generic_init diff --git a/arch/sh/cpu/sh4/cpu.c b/arch/sh/cpu/sh4/cpu.c index e8ee0a45ab..de90ca777f 100644 --- a/arch/sh/cpu/sh4/cpu.c +++ b/arch/sh/cpu/sh4/cpu.c @@ -75,3 +75,9 @@ int cpu_eth_init(bd_t *bis) #endif return 0; } + +void relocate_code(ulong start_addr_sp, gd_t *new_gd, ulong relocaaddr) +{ + /* TODO(sh maintainer): Implement this */ + while (1); +} diff --git a/arch/sh/cpu/sh4/start.S b/arch/sh/cpu/sh4/start.S index 21644b5e67..77fc221aa5 100644 --- a/arch/sh/cpu/sh4/start.S +++ b/arch/sh/cpu/sh4/start.S @@ -42,8 +42,9 @@ _sh_start: mov.l ._gd_init, r13 /* global data */ mov.l ._stack_init, r15 /* stack */ - mov.l ._sh_generic_init, r0 - jsr @r0 + #TODO(sh maintainer): Fix this up to call the correct code + #mov.l ._sh_generic_init, r0 + #jsr @r0 nop loop: @@ -58,4 +59,4 @@ loop: ._bss_end: .long bss_end ._gd_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE) ._stack_init: .long (_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16) -._sh_generic_init: .long sh_generic_init +#._sh_generic_init: .long sh_generic_init diff --git a/arch/sh/cpu/u-boot.lds b/arch/sh/cpu/u-boot.lds index 30c7a9d3f8..78611c21e6 100644 --- a/arch/sh/cpu/u-boot.lds +++ b/arch/sh/cpu/u-boot.lds @@ -67,6 +67,7 @@ SECTIONS KEEP(*(SORT(.u_boot_list*))); } + PROVIDE (__init_end = .); PROVIDE (reloc_dst_end = .); /* _reloc_dst_end = .; */ diff --git a/arch/sh/include/asm/u-boot.h b/arch/sh/include/asm/u-boot.h index ea37c24497..716d8e9f2d 100644 --- a/arch/sh/include/asm/u-boot.h +++ b/arch/sh/include/asm/u-boot.h @@ -12,16 +12,8 @@ #ifndef __ASM_SH_U_BOOT_H_ #define __ASM_SH_U_BOOT_H_ -typedef struct bd_info { - unsigned long bi_memstart; /* start of DRAM memory */ - phys_size_t bi_memsize; /* size of DRAM memory in bytes */ - unsigned long bi_flashstart; /* start of FLASH memory */ - unsigned long bi_flashsize; /* size of FLASH memory */ - unsigned long bi_flashoffset; /* reserved area for startup monitor */ - unsigned long bi_sramstart; /* start of SRAM memory */ - unsigned long bi_sramsize; /* size of SRAM memory */ - unsigned long bi_boot_params; /* where this board expects params */ -} bd_t; +/* Use the generic board which requires a unified bd_info */ +#include <asm-generic/u-boot.h> /* For image.h:image_check_target_arch() */ #define IH_ARCH_DEFAULT IH_ARCH_SH diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile index f7ae4f86ef..c5cf89f493 100644 --- a/arch/sh/lib/Makefile +++ b/arch/sh/lib/Makefile @@ -6,7 +6,6 @@ # -obj-y += board.o obj-$(CONFIG_CMD_BOOTM) += bootm.o ifeq ($(CONFIG_CPU_SH2),y) obj-y += time_sh2.o diff --git a/arch/sh/lib/board.c b/arch/sh/lib/board.c deleted file mode 100644 index 69cdca3744..0000000000 --- a/arch/sh/lib/board.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) 2007, 2008, 2010 - * Nobuhiro Iwamatsu <iwamatsu@nigauri.org> - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <command.h> -#include <console.h> -#include <malloc.h> -#include <stdio_dev.h> -#include <version.h> -#include <watchdog.h> -#include <net.h> -#include <mmc.h> -#include <environment.h> - -#ifdef CONFIG_BITBANGMII -#include <miiphy.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -extern int cpu_init(void); -extern int board_init(void); -extern int dram_init(void); -extern int timer_init(void); - -unsigned long monitor_flash_len = CONFIG_SYS_MONITOR_LEN; - -#ifndef CONFIG_SYS_NO_FLASH -static int sh_flash_init(void) -{ - gd->bd->bi_flashsize = flash_init(); - - if (gd->bd->bi_flashsize >= (1024 * 1024)) - printf("Flash: %ldMB\n", gd->bd->bi_flashsize / (1024*1024)); - else - printf("Flash: %ldKB\n", gd->bd->bi_flashsize / 1024); - - return 0; -} -#endif /* CONFIG_SYS_NO_FLASH */ - -#if defined(CONFIG_CMD_NAND) -# include <nand.h> -# define INIT_FUNC_NAND_INIT nand_init, -#else -# define INIT_FUNC_NAND_INIT -#endif /* CONFIG_CMD_NAND */ - -#if defined(CONFIG_WATCHDOG) -extern int watchdog_init(void); -extern int watchdog_disable(void); -# undef INIT_FUNC_WATCHDOG_INIT -# define INIT_FUNC_WATCHDOG_INIT watchdog_init, -# define WATCHDOG_DISABLE watchdog_disable -#else -# define INIT_FUNC_WATCHDOG_INIT -# define WATCHDOG_DISABLE -#endif /* CONFIG_WATCHDOG */ - -#if defined(CONFIG_CMD_IDE) -# include <ide.h> -# define INIT_FUNC_IDE_INIT ide_init, -#else -# define INIT_FUNC_IDE_INIT -#endif /* CONFIG_CMD_IDE */ - -#if defined(CONFIG_PCI) -#include <pci.h> -static int sh_pci_init(void) -{ - pci_init(); - return 0; -} -# define INIT_FUNC_PCI_INIT sh_pci_init, -#else -# define INIT_FUNC_PCI_INIT -#endif /* CONFIG_PCI */ - -static int sh_mem_env_init(void) -{ - mem_malloc_init(CONFIG_SYS_TEXT_BASE - GENERATED_GBL_DATA_SIZE - - CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN - 16); - env_relocate(); - jumptable_init(); - return 0; -} - -#if defined(CONFIG_CMD_MMC) -static int sh_mmc_init(void) -{ - puts("MMC: "); - mmc_initialize(gd->bd); - return 0; -} -#endif - -typedef int (init_fnc_t) (void); - -init_fnc_t *init_sequence[] = -{ - cpu_init, /* basic cpu dependent setup */ - board_init, /* basic board dependent setup */ - interrupt_init, /* set up exceptions */ - env_init, /* event init */ - serial_init, /* SCIF init */ - INIT_FUNC_WATCHDOG_INIT /* watchdog init */ - console_init_f, - display_options, - checkcpu, - checkboard, /* Check support board */ - dram_init, /* SDRAM init */ - timer_init, /* SuperH Timer (TCNT0 only) init */ - sh_mem_env_init, -#ifndef CONFIG_SYS_NO_FLASH - sh_flash_init, /* Flash memory init*/ -#endif - INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */ - INIT_FUNC_PCI_INIT /* PCI init */ - stdio_init, - console_init_r, - interrupt_init, -#ifdef CONFIG_BOARD_LATE_INIT - board_late_init, -#endif -#if defined(CONFIG_CMD_MMC) - sh_mmc_init, -#endif - NULL /* Terminate this list */ -}; - -void sh_generic_init(void) -{ - bd_t *bd; - init_fnc_t **init_fnc_ptr; - - memset(gd, 0, GENERATED_GBL_DATA_SIZE); - - gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ - - gd->bd = (bd_t *)(gd + 1); /* At end of global data */ - gd->baudrate = CONFIG_BAUDRATE; - - gd->cpu_clk = CONFIG_SYS_CLK_FREQ; - - bd = gd->bd; - bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; - bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE; -#ifndef CONFIG_SYS_NO_FLASH - bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; -#endif -#if defined(CONFIG_SYS_SRAM_BASE) && defined(CONFIG_SYS_SRAM_SIZE) - bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; - bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; -#endif - - for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { - WATCHDOG_RESET(); - if ((*init_fnc_ptr) () != 0) - hang(); - } - -#ifdef CONFIG_WATCHDOG - /* disable watchdog if environment is set */ - { - char *s = getenv("watchdog"); - if (s != NULL) - if (strncmp(s, "off", 3) == 0) - WATCHDOG_DISABLE(); - } -#endif /* CONFIG_WATCHDOG*/ - - -#ifdef CONFIG_BITBANGMII - bb_miiphy_init(); -#endif -#if defined(CONFIG_CMD_NET) - puts("Net: "); - eth_initialize(); -#endif /* CONFIG_CMD_NET */ - - while (1) { - WATCHDOG_RESET(); - main_loop(); - } -} |