> +# 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 $(TOPDIR)/config.mk > + > +LIB = $(obj)lib$(CPU).a > + > +START = start.o > +OBJS = cpu.o interrupts.o watchdog.o time.o # cache.o > + > +all: .depend $(START) $(LIB) please use $(obj).depend > + > +$(LIB): $(OBJS) > + $(AR) crv $@ $(OBJS) please replace crv by $(ARFLAGS) > + > +######################################################################### > + > +.depend: Makefile $(START:.o=.S) $(OBJS:.o=.c) > + $(CC) -M $(CFLAGS) $(START:.o=.S) $(OBJS:.o=.c) > $@ > + > +sinclude .depend please replace with
# defines $(obj).depend target include $(SRCTREE)/rules.mk sinclude $(obj).depend > + > +######################################################################### > diff --git a/cpu/sh2/cache.c b/cpu/sh2/cache.c > new file mode 100644 > index 0000000..d7ac2a5 > --- /dev/null > +++ b/cpu/sh2/cache.c > @@ -0,0 +1,112 @@ > +/* > + * (C) Copyright 2007 > + * Yoshihiro Shimoda <[EMAIL PROTECTED]> > + * > + * Copyright (C) 2007, 2008 Nobobuhiro Iwamatsu <[EMAIL PROTECTED]> > + * Copyright (C) 2008 Renesas Solutions Corp. > + * > + * 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 > + */ > + > +#include <common.h> > +#include <command.h> > +#include <asm/processor.h> > +#include <asm/io.h> > + > +/* > + * Jump to P2 area. > + * When handling TLB or caches, we need to do it from P2 area. > + */ > +#define jump_to_P2() \ > + do { \ > + unsigned long __dummy; \ > + __asm__ __volatile__( \ > + "mov.l 1f, %0\n\t" \ > + "or %1, %0\n\t" \ > + "jmp @%0\n\t" \ > + " nop\n\t" \ > + ".balign 4\n" \ > + "1: .long 2f\n" \ > + "2:" \ > + : "=&r" (__dummy) \ > + : "r" (0x20000000)); \ > + } while (0) > + please use tab instead of space > +/* > + * Back to P1 area. > + */ > +#define back_to_P1() \ > + do { \ > + unsigned long __dummy; \ > + __asm__ __volatile__( \ > + "nop;nop;nop;nop;nop;nop;nop\n\t" \ > + "mov.l 1f, %0\n\t" \ > + "jmp @%0\n\t" \ > + " nop\n\t" \ > + ".balign 4\n" \ > + "1: .long 2f\n" \ > + "2:" \ > + : "=&r" (__dummy)); \ > + } while (0) please use tab instead of space > + > +#define CACHE_VALID 1 ^^^^^^^ > +#define CACHE_UPDATED 2 ^^^^^ whitespace > + > +static inline void cache_wback_all(void) > +{ > + unsigned long addr, data, i, j; > + > + jump_to_P2(); > + for (i = 0; i < CACHE_OC_NUM_ENTRIES; i++) { > + for (j = 0; j < CACHE_OC_NUM_WAYS; j++) { > + addr = CACHE_OC_ADDRESS_ARRAY > + | (j << CACHE_OC_WAY_SHIFT) > + | (i << CACHE_OC_ENTRY_SHIFT); > + data = inl(addr); > + if (data & CACHE_UPDATED) { > + data &= ~CACHE_UPDATED; > + outl(data, addr); > + } > + } > + } > + back_to_P1(); > +} > + > + > +#define CACHE_ENABLE 0 ^^^^^^ > +#define CACHE_DISABLE 1 ^^^^^ whitespace > + > +int cache_control(unsigned int cmd) > +{ > + unsigned long ccr; > + > + jump_to_P2(); > + ccr = inl(CCR); > + > + if (ccr & CCR_CACHE_ENABLE) > + cache_wback_all(); > + > + if (cmd == CACHE_DISABLE) > + outl(CCR_CACHE_STOP, CCR); > + else > + outl(CCR_CACHE_INIT, CCR); > + back_to_P1(); > + > + return 0; > +} > diff --git a/cpu/sh2/config.mk b/cpu/sh2/config.mk > new file mode 100644 > index 0000000..c2703fe > --- /dev/null > +++ b/cpu/sh2/config.mk > @@ -0,0 +1,29 @@ > +# > +# (C) Copyright 2007-2008 > +# Nobuhiro Iwamatsu <[EMAIL PROTECTED]> > +# > +# 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 > +# > +# > +#export CFLAGS = -m3e -mb > +#export LDFLAGS = -m3e -mb -Wl,-EB -Wl,-elf2flt=-s65536 if no need please remove > + > +PLATFORM_CPPFLAGS += -m3e -mb > +PLATFORM_RELFLAGS += -ffixed-r13 > +PLATFORM_LDFLAGS += -EB > diff --git a/cpu/sh2/cpu.c b/cpu/sh2/cpu.c > new file mode 100644 > index 0000000..e0cb047 > --- /dev/null > +++ b/cpu/sh2/cpu.c > @@ -0,0 +1,98 @@ > +/* > + * Copyright (C) 2007,2008 Nobuhiro Iwamatsu <[EMAIL PROTECTED]> > + * Copyright (C) 2008 Renesas Solutions Corp. > + * > + * 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 > + */ > + > +#include <common.h> > +#include <command.h> > +#include <asm/processor.h> > +#include <asm/io.h> > + > +#define STBCR4 0xFFFE040C ^^^^^^ whitespace > +#define cmt_clock_enable() do {\ > + writeb(readb(STBCR4) & ~0x04, STBCR4);\ > + } while (0) > +#define scif0_enable() do {\ > + writeb(readb(STBCR4) & ~0x80, STBCR4);\ > + } while (0) > + > +int checkcpu(void) > +{ > +#if defined(CONFIG_SH2A) > + puts("CPU: SH2A\n"); > +#else > + puts("CPU: SH2\n"); > +#endif > + return 0; > +} > + > +int cpu_init(void) > +{ > + /* SCIF enable */ > + scif0_enable(); > + /* CMT clock enable */ > + cmt_clock_enable() ; > + return 0; > +} > + > +int cleanup_before_linux(void) > +{ > + disable_interrupts(); > + return 0; > +} > + > +int disable_interrupts(void) > +{ > + return 0; > +} > diff --git a/cpu/sh2/start.S b/cpu/sh2/start.S > new file mode 100644 > index 0000000..969fe00 > --- /dev/null > +++ b/cpu/sh2/start.S > @@ -0,0 +1,84 @@ > +/* > + * Copyright (C) 2007,2008 Nobuhiro Iwamatsu <[EMAIL PROTECTED]> > + * Copyright (C) 2008 Renesas Solutions Corp. > + > + * 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 <config.h> > +#include <version.h> > + > + .text > + .align 2 > + > + .global _start > +_start: > +#if 1 if always 1 please remove the if/endif > + .long 0x00000010 /* Ppower ON reset PC*/ > + .long 0x00000000 > + .long 0x00000010 /* Manual reset PC */ > + .long 0x00000000 > +#endif > +_init: > + mov.l ._lowlevel_init, r0 > +100: bsrf r0 > + nop > + bsr 1f > + nop > +1: sts pr, r5 > + mov.l ._reloc_dst, r4 > +#if 1 > + add #(_start-1b), r5 > +#else > + mov #16, r5 > +#endif please use a CFG_ instead or remove > + mov.l ._reloc_dst_end, r6 > + > +2: mov.l @r5+, r1 > + mov.l r1, @r4 > + add #4, r4 > + cmp/hs r6, r4 > + bf 2b > + > + mov.l ._bss_start, r4 > + mov.l ._bss_end, r5 > + mov #0, r1 > + > +3: mov.l r1, @r4 /* bss clear */ > + add #4, r4 > + cmp/hs r5, r4 > + bf 3b > + > + mov.l ._gd_init, r13 /* global data */ > + mov.l ._stack_init, r15 /* stack */ > + > + mov.l ._sh_generic_init, r0 > + jsr @r0 > + nop > + > +loop: > + bra loop > + > + .align 2 > + > +._lowlevel_init: .long (lowlevel_init - (100b + 4)) > +._reloc_dst: .long reloc_dst > +._reloc_dst_end: .long reloc_dst_end > +._bss_start: .long bss_start > +._bss_end: .long bss_end > +._gd_init: .long (_start - CFG_GBL_DATA_SIZE) > +._stack_init: .long (_start - CFG_GBL_DATA_SIZE - CFG_MALLOC_LEN - > 16) > +._sh_generic_init: .long sh_generic_init > +{ > + while (1) > + ; > +} > + * 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 > + */ > + > +#ifndef _ASM_CPU_SH2_H_ > +#define _ASM_CPU_SH2_H_ > + > +/* cache control */ > +#define CCR_CACHE_STOP 0x00000008 ^^^ > +#define CCR_CACHE_ENABLE 0x00000005 > +#define CCR_CACHE_ICI 0x00000008 ^^^^ whitespace > + > +#define CACHE_OC_ADDRESS_ARRAY 0xf0000000 > +#define CACHE_OC_WAY_SHIFT 13 > +#define CACHE_OC_NUM_ENTRIES 256 > +#define CACHE_OC_ENTRY_SHIFT 4 > + > +# error "Unknown SH2 variant" > + Best Regards, J. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users