diff options
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/cpu/sh2/Makefile | 24 | ||||
-rw-r--r-- | arch/sh/cpu/sh3/Makefile | 24 | ||||
-rw-r--r-- | arch/sh/cpu/sh4/Makefile | 24 | ||||
-rw-r--r-- | arch/sh/cpu/sh4/cache.c | 4 | ||||
-rw-r--r-- | arch/sh/cpu/sh4/cpu.c | 2 | ||||
-rw-r--r-- | arch/sh/include/asm/cache.h | 3 | ||||
-rw-r--r-- | arch/sh/lib/Makefile | 56 | ||||
-rw-r--r-- | arch/sh/lib/time.c | 72 |
8 files changed, 29 insertions, 180 deletions
diff --git a/arch/sh/cpu/sh2/Makefile b/arch/sh/cpu/sh2/Makefile index 1cc00313e9d..a19ed5ecf59 100644 --- a/arch/sh/cpu/sh2/Makefile +++ b/arch/sh/cpu/sh2/Makefile @@ -8,25 +8,5 @@ # SPDX-License-Identifier: GPL-2.0+ # -include $(TOPDIR)/config.mk - -LIB = $(obj)lib$(CPU).o - -SOBJS = start.o -COBJS = cpu.o interrupts.o watchdog.o - -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS)) - -$(LIB): $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### +extra-y = start.o +obj-y = cpu.o interrupts.o watchdog.o diff --git a/arch/sh/cpu/sh3/Makefile b/arch/sh/cpu/sh3/Makefile index e707de3f898..1dccaf95203 100644 --- a/arch/sh/cpu/sh3/Makefile +++ b/arch/sh/cpu/sh3/Makefile @@ -11,25 +11,5 @@ # SPDX-License-Identifier: GPL-2.0+ # -include $(TOPDIR)/config.mk - -LIB = $(obj)lib$(CPU).o - -SOBJS = start.o -COBJS = cpu.o interrupts.o watchdog.o cache.o - -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS)) - -$(LIB): $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### +extra-y = start.o +obj-y = cpu.o interrupts.o watchdog.o cache.o diff --git a/arch/sh/cpu/sh4/Makefile b/arch/sh/cpu/sh4/Makefile index e7d8903814f..38c6188c383 100644 --- a/arch/sh/cpu/sh4/Makefile +++ b/arch/sh/cpu/sh4/Makefile @@ -8,25 +8,5 @@ # SPDX-License-Identifier: GPL-2.0+ # -include $(TOPDIR)/config.mk - -LIB = $(obj)lib$(CPU).o - -SOBJS = start.o -COBJS = cpu.o interrupts.o watchdog.o cache.o - -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS)) - -$(LIB): $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### +extra-y = start.o +obj-y = cpu.o interrupts.o watchdog.o cache.o diff --git a/arch/sh/cpu/sh4/cache.c b/arch/sh/cpu/sh4/cache.c index 1947ec8e955..e1ee970a91c 100644 --- a/arch/sh/cpu/sh4/cache.c +++ b/arch/sh/cpu/sh4/cache.c @@ -91,7 +91,7 @@ int cache_control(unsigned int cmd) return 0; } -void dcache_wback_range(u32 start, u32 end) +void flush_dcache_range(unsigned long start, unsigned long end) { u32 v; @@ -102,7 +102,7 @@ void dcache_wback_range(u32 start, u32 end) } } -void dcache_invalid_range(u32 start, u32 end) +void invalidate_dcache_range(unsigned long start, unsigned long end) { u32 v; diff --git a/arch/sh/cpu/sh4/cpu.c b/arch/sh/cpu/sh4/cpu.c index 9fae61473b3..91133a38aee 100644 --- a/arch/sh/cpu/sh4/cpu.c +++ b/arch/sh/cpu/sh4/cpu.c @@ -41,7 +41,7 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) void flush_cache (unsigned long addr, unsigned long size) { - dcache_invalid_range( addr , addr + size ); + invalidate_dcache_range(addr , addr + size); } void icache_enable (void) diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h index 24941b3019a..b21dc4422ed 100644 --- a/arch/sh/include/asm/cache.h +++ b/arch/sh/include/asm/cache.h @@ -10,9 +10,6 @@ int cache_control(unsigned int cmd); struct __large_struct { unsigned long buf[100]; }; #define __m(x) (*(struct __large_struct *)(x)) -void dcache_wback_range(u32 start, u32 end); -void dcache_invalid_range(u32 start, u32 end); - #else /* diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile index 8165963ee8d..5fc9d9d66d4 100644 --- a/arch/sh/lib/Makefile +++ b/arch/sh/lib/Makefile @@ -5,57 +5,25 @@ # SPDX-License-Identifier: GPL-2.0+ # -include $(TOPDIR)/config.mk -LIB = $(obj)lib$(ARCH).o -LIBGCC = $(obj)libgcc.o - -SOBJS-y += -GLSOBJS += ashiftrt.o -GLSOBJS += ashiftlt.o -GLSOBJS += lshiftrt.o -GLSOBJS += ashldi3.o -GLSOBJS += ashrsi3.o -GLSOBJS += lshrdi3.o -GLSOBJS += movmem.o - -COBJS-y += board.o -COBJS-$(CONFIG_CMD_BOOTM) += bootm.o +obj-y += board.o +obj-$(CONFIG_CMD_BOOTM) += bootm.o ifeq ($(CONFIG_SH2),y) -COBJS-y += time_sh2.o +obj-y += time_sh2.o else -COBJS-y += time.o -endif -ifeq ($(CONFIG_CMD_SH_ZIMAGEBOOT),y) -COBJS-y += zimageboot.o +obj-y += time.o endif +obj-$(CONFIG_CMD_SH_ZIMAGEBOOT) += zimageboot.o -SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) -OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y)) -LGOBJS := $(addprefix $(obj),$(GLSOBJS)) \ - $(addprefix $(obj),$(GLCOBJS)) -# Always build libsh.o -TARGETS := $(LIB) # Build private libgcc only when asked for ifdef USE_PRIVATE_LIBGCC -TARGETS += $(LIBGCC) +lib-y += ashiftrt.o +lib-y += ashiftlt.o +lib-y += lshiftrt.o +lib-y += ashldi3.o +lib-y += ashrsi3.o +lib-y += lshrdi3.o +lib-y += movmem.o endif - -all: $(TARGETS) - -$(LIB): $(obj).depend $(OBJS) - $(call cmd_link_o_target, $(OBJS)) - -$(LIBGCC): $(obj).depend $(LGOBJS) - $(call cmd_link_o_target, $(LGOBJS)) - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### diff --git a/arch/sh/lib/time.c b/arch/sh/lib/time.c index 1fe537e83bc..d970a1e4f02 100644 --- a/arch/sh/lib/time.c +++ b/arch/sh/lib/time.c @@ -12,36 +12,23 @@ */ #include <common.h> -#include <div64.h> #include <asm/processor.h> #include <asm/io.h> #include <sh_tmu.h> -static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE; +#define TCR_TPSC 0x07 -static u16 bit; -static unsigned long last_tcnt; -static unsigned long long overflow_ticks; +static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE; unsigned long get_tbclk(void) { - return get_tmu0_clk_rate() >> ((bit + 1) * 2); + u16 tmu_bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; + return get_tmu0_clk_rate() >> ((tmu_bit + 1) * 2); } -static inline unsigned long long tick_to_time(unsigned long long tick) +unsigned long timer_read_counter(void) { - tick *= CONFIG_SYS_HZ; - do_div(tick, get_tbclk()); - - return tick; -} - -static inline unsigned long long usec_to_tick(unsigned long long usec) -{ - usec *= get_tbclk(); - do_div(usec, 1000000); - - return usec; + return ~readl(&tmu->tcnt0); } static void tmu_timer_start(unsigned int timer) @@ -60,55 +47,12 @@ static void tmu_timer_stop(unsigned int timer) int timer_init(void) { - bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; - writew(readw(&tmu->tcr0) | bit, &tmu->tcr0); + u16 tmu_bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; + writew((readw(&tmu->tcr0) & ~TCR_TPSC) | tmu_bit, &tmu->tcr0); tmu_timer_stop(0); tmu_timer_start(0); - last_tcnt = 0; - overflow_ticks = 0; - return 0; } -unsigned long long get_ticks(void) -{ - unsigned long tcnt = 0 - readl(&tmu->tcnt0); - - if (last_tcnt > tcnt) /* overflow */ - overflow_ticks++; - last_tcnt = tcnt; - - return (overflow_ticks << 32) | tcnt; -} - -void __udelay(unsigned long usec) -{ - unsigned long long tmp; - ulong tmo; - - tmo = usec_to_tick(usec); - tmp = get_ticks() + tmo; /* get current timestamp */ - - while (get_ticks() < tmp) /* loop till event */ - /*NOP*/; -} - -unsigned long get_timer(unsigned long base) -{ - /* return msec */ - return tick_to_time(get_ticks()) - base; -} - -void set_timer(unsigned long t) -{ - writel((0 - t), &tmu->tcnt0); -} - -void reset_timer(void) -{ - tmu_timer_stop(0); - set_timer(0); - tmu_timer_start(0); -} |