From a5ad963f5b0c8b851e4d2340c1869552352779b5 Mon Sep 17 00:00:00 2001 From: patacongo Date: Thu, 3 Dec 2009 17:24:42 +0000 Subject: [PATCH] Add framework to support HC12 git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2301 42af7a65-404d-4744-a932-0658087f49c3 --- arch/hc/include/hc12/irq.h | 112 +++++++++ arch/hc/include/irq.h | 98 ++++++++ arch/hc/include/mc9s12ne64/irq.h | 130 +++++++++++ arch/hc/src/Makefile | 143 ++++++++++++ arch/hc/src/mc9s12ne64/Make.defs | 42 ++++ arch/hc/src/mc9s12ne64/chip.h | 62 +++++ arch/hc/src/mc9s12ne64/mc9s12ne64_start.S | 68 ++++++ arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S | 237 ++++++++++++++++++++ 8 files changed, 892 insertions(+) create mode 100755 arch/hc/include/hc12/irq.h create mode 100755 arch/hc/include/irq.h create mode 100755 arch/hc/include/mc9s12ne64/irq.h create mode 100755 arch/hc/src/Makefile create mode 100755 arch/hc/src/mc9s12ne64/Make.defs create mode 100755 arch/hc/src/mc9s12ne64/chip.h create mode 100755 arch/hc/src/mc9s12ne64/mc9s12ne64_start.S create mode 100755 arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S diff --git a/arch/hc/include/hc12/irq.h b/arch/hc/include/hc12/irq.h new file mode 100755 index 0000000000..08d991031c --- /dev/null +++ b/arch/hc/include/hc12/irq.h @@ -0,0 +1,112 @@ +/************************************************************************************ + * arch/hc/include/hc12/irq.h + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +/* This file should never be included directed but, rather, + * only indirectly through nuttx/irq.h + */ + +#ifndef __ARCH_HC_INCLUDE_HC12_IRQ_H +#define __ARCH_HC_INCLUDE_HC12_IRQ_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include +#include +#include + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Public Types + ************************************************************************************/ + +/* This structure defines the way the registers are stored. */ + +#ifndef __ASSEMBLY__ +struct xcptcontext +{ + int dummy; /* For now */ +}; + +/**************************************************************************** + * Inline functions + ****************************************************************************/ + +/* Save the current interrupt enable state & disable IRQs */ + +static inline irqstate_t irqsave(void) +{ + /* To be provided */ +} + +/* Restore saved IRQ & FIQ state */ + +static inline void irqrestore(irqstate_t flags) +{ + /* To be provided */ +} + +static inline void system_call(swint_t func, int parm1, + int parm2, int parm3) +{ + /* To be provided */ +} + +/************************************************************************************ + * Public Data + ************************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +#undef EXTERN +#ifdef __cplusplus +} +#endif + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_HC_INCLUDE_HC12_IRQ_H */ diff --git a/arch/hc/include/irq.h b/arch/hc/include/irq.h new file mode 100755 index 0000000000..a649ee9d45 --- /dev/null +++ b/arch/hc/include/irq.h @@ -0,0 +1,98 @@ +/**************************************************************************** + * arch/hc/include/irq.h + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* This file should never be included directed but, rather, only indirectly + * through nuttx/irq.h + */ + +#ifndef __ARCH_HC_INCLUDE_IRQ_H +#define __ARCH_HC_INCLUDE_IRQ_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +/* Include NuttX-specific IRQ definitions */ + +#include + +/* Include chip-specific IRQ definitions (including IRQ numbers) */ + +#include + +/* Include architecture-specific IRQ definitions (including register + * save structure and irqsave()/irqrestore() macros + */ + +#ifdef CONFIG_ARCH_HC12 +# include +#endif + +/**************************************************************************** + * Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/**************************************************************************** + * Inline functions + ****************************************************************************/ + +/**************************************************************************** + * Public Variables + ****************************************************************************/ + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +#ifndef __ASSEMBLY__ +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +#undef EXTERN +#ifdef __cplusplus +} +#endif +#endif + +#endif /* __ARCH_HC_INCLUDE_IRQ_H */ + diff --git a/arch/hc/include/mc9s12ne64/irq.h b/arch/hc/include/mc9s12ne64/irq.h new file mode 100755 index 0000000000..ed13dafcc6 --- /dev/null +++ b/arch/hc/include/mc9s12ne64/irq.h @@ -0,0 +1,130 @@ +/************************************************************************************ + * arch/hc/include/mc9s12ne64/irq.h + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +/* This file should never be included directed but, rather, + * only indirectly through nuttx/irq.h + */ + +#ifndef __ARCH_HC_INCLUDE_MC9S12NE64_IRQ_H +#define __ARCH_HC_INCLUDE_MC9S12NE64_IRQ_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include +#include +#include + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/* IRQ Numbers */ + +#define HC12_IRQ_VRESET 0 /* fffe: External reset, power on reset orlow voltage reset */ +#define HC12_IRQ_VCLKMON 1 /* fffc: Clock monitor fail reset */ +#define HC12_IRQ_VCOP 2 /* fffa: COP failure reset*/ +#define HC12_IRQ_VTRAP 3 /* fff8: Unimplemented instruction trap */ +#define HC12_IRQ_VSWI 4 /* fff6: SWI */ +#define HC12_IRQ_VXIRQ 5 /* fff4: XIRQ */ +#define HC12_IRQ_VIRQ 6 /* fff2: IRQ */ +#define HC12_IRQ_VRTI 7 /* fff0: Real-time interrupt */ + /* ffe8-ffef: Reserved */ +#define HC12_IRQ_VTIMCH4 8 /* ffe6: Standard timer channel 4 */ +#define HC12_IRQ_VTIMCH5 9 /* ffe4: Standard timer channel 5 */ +#define HC12_IRQ_VTIMCH6 10 /* ffe2: Standard timer channel 6 */ +#define HC12_IRQ_VTIMCH7 11 /* ffe0: Standard timer channel 7 */ +#define HC12_IRQ_VTIMOVF 12 /* ffde: Standard timer overflow */ +#define HC12_IRQ_VTIMPAOVF 13 /* ffdc: Pulse accumulator overflow */ +#define HC12_IRQ_VTIMPAIE 14 /* ffda: Pulse accumulator input edge */ +#define HC12_IRQ_VSPI 15 /* ffd8: SPI */ +#define HC12_IRQ_VSCI0 16 /* ffd6: SCI0 */ +#define HC12_IRQ_VSCI1 17 /* ffd4: SCI1 */ +#define HC12_IRQ_VATD 18 /* ffd2: ATD */ + /* ffd0: Reserved */ +#define HC12_IRQ_VPORTJ 19 /* ffce: Port J */ +#define HC12_IRQ_VPORTH 20 /* ffcc: Port H */ +#define HC12_IRQ_VPORTG 21 /* ffca: Port G */ + /* ffc8: Reserved */ +#define HC12_IRQ_VCRGPLLLCK 22 /* ffc6: CRG PLL lock */ +#define HC12_IRQ_VCRGSCM 23 /* ffc4: CRG self clock mode */ + /* ffc2: Reserved */ +#define HC12_IRQ_VIIC 24 /* ffc0: IIC bus */ + /* ffba-ffbf: Reserved */ +#define HC12_IRQ_VFLASH 25 /* ffb8: FLASH */ +#define HC12_IRQ_VEPHY 26 /* ffb6: EPHY interrupt */ +#define HC12_IRQ_VEMACCRXBAC 27 /* ffb4: EMAC receive buffer A complete */ +#define HC12_IRQ_VEMACCRXBBC 28 /* ffb2: EMAC receive buffer B complete */ +#define HC12_IRQ_VEMACTXC 29 /* ffb0: EMAC frame transmission complete */ +#define HC12_IRQ_VEMACRXFC 30 /* ffae: EMAC receive flow control */ +#define HC12_IRQ_VEMACMII 31 /* ffac: EMAC MII management transfer complete */ +#define HC12_IRQ_VEMACRXERR 32 /* ffaa: EMAC receive error */ +#define HC12_IRQ_VEMACRXBAO 33 /* ffa8: EMAC receive buffer A overrun */ +#define HC12_IRQ_VEMACRXBBO 34 /* ffa6: EMAC receive buffer B overrun */ +#define HC12_IRQ_VEMACBRXERR 35 /* ffa4: EMAC babbling receive error */ +#define HC12_IRQ_VEMACLC 36 /* ffa2: EMAC late collision */ +#define HC12_IRQ_VEMACEC 37 /* ffa0: EMAC excessive collision */ + /* ff80-ff9f: Reserved */ +#define HC12_IRQ_VILLEGAL 38 /* Any reserved vector */ +#define NR_IRQS 39 + +/************************************************************************************ + * Public Types + ************************************************************************************/ + +/************************************************************************************ + * Public Data + ************************************************************************************/ + +#ifndef __ASSEMBLY__ +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +#undef EXTERN +#ifdef __cplusplus +} +#endif +#endif + +#endif /* __ARCH_HC_INCLUDE_MC9S12NE64_IRQ_H */ diff --git a/arch/hc/src/Makefile b/arch/hc/src/Makefile new file mode 100755 index 0000000000..27816b730e --- /dev/null +++ b/arch/hc/src/Makefile @@ -0,0 +1,143 @@ +############################################################################ +# arch/hc/src/Makefile +# +# Copyright (C) 2009 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +-include $(TOPDIR)/Make.defs +-include chip/Make.defs + +ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src +ifeq ($(CONFIG_ARCH_HC12),y) +ARCH_SUBDIR = hc12 +endif + +ifeq ($(WINTOOL),y) + NUTTX = "${shell cygpath -w $(TOPDIR)/nuttx}" + CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \ + -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \ + -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \ + -I "${shell cygpath -w $(TOPDIR)/sched}" +else + NUTTX = $(TOPDIR)/nuttx + CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \ + -I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched +endif + +HEAD_AOBJ = $(HEAD_ASRC:.S=$(OBJEXT)) + +ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) +AOBJS = $(ASRCS:.S=$(OBJEXT)) + +CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS) +COBJS = $(CSRCS:.c=$(OBJEXT)) + +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) + +LDFLAGS = $(ARCHSCRIPT) +EXTRA_LIBS = + +LINKLIBS = +ifeq ($(WINTOOL),y) + LIBPATHS = ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done} + LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}" +else + LIBPATHS = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS))) + LIBPATHS += -L"$(BOARDDIR)" +endif +LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS)))) + +BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board + +LIBGCC = "${shell $(CC) -print-libgcc-file-name}" + +VPATH = chip:common:$(ARCH_SUBDIR) + +all: $(HEAD_OBJ) libarch$(LIBEXT) + +$(AOBJS) $(HEAD_AOBJ): %$(OBJEXT): %.S + $(call ASSEMBLE, $<, $@) + +$(COBJS): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) + +libarch$(LIBEXT): $(OBJS) + @( for obj in $(OBJS) ; do \ + $(call ARCHIVE, $@, $${obj}); \ + done ; ) + +board/libboard$(LIBEXT): + @$(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) + +nuttx: $(HEAD_AOBJ) board/libboard$(LIBEXT) + @echo "LD: nuttx" + @$(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) -o $(NUTTX)$(EXEEXT) $(HEAD_AOBJ) \ + --start-group $(LDLIBS) -lboard --end-group $(EXTRA_LIBS) $(LIBGCC) +ifeq ($(CONFIG_BOOT_RUNFROMFLASH),y) + @export flashloc=`$(OBJDUMP) --all-headers $(NUTTX)$(EXEEXT) | grep _eronly | cut -d' ' -f1`; \ + $(OBJCOPY) $(OBJCOPYARGS) --adjust-section-vma=.data=0x$$flashloc $(NUTTX)$(EXEEXT) $(NUTTX).flashimage + @mv $(NUTTX).flashimage $(NUTTX)$(EXEEXT) +endif + @$(NM) $(NUTTX)$(EXEEXT) | \ + grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ + sort > $(TOPDIR)/System.map + @export vflashstart=`$(OBJDUMP) --all-headers $(NUTTX)$(EXEEXT) | grep _vflashstart | cut -d' ' -f1`; \ + if [ ! -z "$$vflashstart" ]; then \ + $(OBJCOPY) $(OBJCOPYARGS) --adjust-section-vma=.vector=0x$$vflashstart $(NUTTX)$(EXEEXT) $(NUTTX).flashimage; \ + mv $(NUTTX).flashimage $(NUTTX)$(EXEEXT); \ + fi + +.depend: Makefile chip/Make.defs $(SRCS) + @if [ -e board/Makefile ]; then \ + $(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \ + fi + @$(MKDEP) --dep-path chip --dep-path common --dep-path $(ARCH_SUBDIR) \ + $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep + @touch $@ + +depend: .depend + +clean: + @if [ -e board/Makefile ]; then \ + $(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \ + fi + @rm -f libarch$(LIBEXT) *~ .*.swp + $(call CLEAN) + +distclean: clean + @if [ -e board/Makefile ]; then \ + $(MAKE) -C board TOPDIR="$(TOPDIR)" distclean ; \ + fi + @rm -f Make.dep .depend + +-include Make.dep diff --git a/arch/hc/src/mc9s12ne64/Make.defs b/arch/hc/src/mc9s12ne64/Make.defs new file mode 100755 index 0000000000..7bcad4a9b5 --- /dev/null +++ b/arch/hc/src/mc9s12ne64/Make.defs @@ -0,0 +1,42 @@ +############################################################################ +# arch/arm/src/stm32/Make.defs +# +# Copyright (C) 2009 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +HEAD_ASRC = mc9s12ne64_vectors.S + +CMN_ASRCS = +CMN_CSRCS = + +CHIP_ASRCS = mc9s12ne64_start.S +CHIP_CSRCS = diff --git a/arch/hc/src/mc9s12ne64/chip.h b/arch/hc/src/mc9s12ne64/chip.h new file mode 100755 index 0000000000..a7dfdb26aa --- /dev/null +++ b/arch/hc/src/mc9s12ne64/chip.h @@ -0,0 +1,62 @@ +/************************************************************************************ + * arch/hc/src/mc9s12ne64/chip.h + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +#ifndef __ARCH_HC_SRC_MC9S12NE64_CHIP_H +#define __ARCH_HC_SRC_MC9S12NE64_CHIP_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include +#include + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Public Types + ************************************************************************************/ + +/************************************************************************************ + * Public Data + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +#endif /* __ARCH_HC_SRC_MC9S12NE64_CHIP_H */ diff --git a/arch/hc/src/mc9s12ne64/mc9s12ne64_start.S b/arch/hc/src/mc9s12ne64/mc9s12ne64_start.S new file mode 100755 index 0000000000..5f5830e2ba --- /dev/null +++ b/arch/hc/src/mc9s12ne64/mc9s12ne64_start.S @@ -0,0 +1,68 @@ +/**************************************************************************** + * arch/hc/src/mc9s12ne64/mc9s12ne64_start.S + * arch/hc/src/chip/mc9s12ne64_start.S + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +/**************************************************************************** + * Private Definitions + ****************************************************************************/ + +/************************************************************************************ + * Global Symbols + ************************************************************************************/ + + .globl __start + .file "mc9s12ne64_start.S" + +/**************************************************************************** + * .text + ****************************************************************************/ + +/**************************************************************************** + * Name: __start + * + * Description: + * Power-up reset entry point + * + ****************************************************************************/ + +__start: + .end diff --git a/arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S b/arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S new file mode 100755 index 0000000000..42dbe0fd9c --- /dev/null +++ b/arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S @@ -0,0 +1,237 @@ +/************************************************************************************ + * arch/hc/src/mc9s12ne64/mc9s12ne64_vectors.S + * arch/hc/src/chip/mc9s12ne64_vectors.S + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include +#include + +/************************************************************************************ + * Pre-processor Definitions + ************************************************************************************/ + +/************************************************************************************ + * Global Symbols + ************************************************************************************/ + + .globl __start + .file "mc9shc12ne64_vectors.S" + +/************************************************************************************ + * Macros + ************************************************************************************/ + + .macro HANDLER, label, irqno +\label: + .endm + +/************************************************************************************ + * Vectors + ************************************************************************************/ + + .section .vectors, "rd" + .align 2 + .globl hc12_vectors + .type hc12_vectors, function + +hc12_vectors: + /* ff80-ff9f: Reserved */ + .hword villegal /* ff80: Reserved*/ + .hword villegal /* ff82: Reserved */ + .hword villegal /* ff84: Reserved */ + .hword villegal /* ff86: Reserved */ + .hword villegal /* ff88: Reserved */ + .hword villegal /* ff8a: Reserved */ + .hword villegal /* ff8c: Reserved */ + .hword villegal /* ff9e: Reserved */ + .hword villegal /* ff90: Reserved */ + .hword villegal /* ff92: Reserved */ + .hword villegal /* ff94: Reserved */ + .hword villegal /* ff96: Reserved */ + .hword villegal /* ff98: Reserved */ + .hword villegal /* ff9a: Reserved */ + .hword villegal /* ff9c: Reserved */ + .hword villegal /* ff9e: Reserved */ + .hword vemacec /* ffa0: EMAC excessive collision */ + .hword vemaclc /* ffa2: EMAC late collision*/ + .hword vemacbrxerr /* ffa4: MAC babbling receive error*/ + .hword vemacrxbbo /* ffa6: EMAC receive buffer B overrun */ + .hword vemacrxbao /* ffa8: EMAC receive buffer A overrun */ + .hword vemacrxerr /* ffaa: EMAC receive error */ + .hword vemacmii /* ffac: EMAC MII management transfer complete */ + .hword vemacrxfc /* ffae: EMAC receive flow control */ + .hword vemactxc /* ffb0: EMAC frame transmission complete */ + .hword vemaccrxbbc /* ffb2: EMAC receive buffer B complete */ + .hword vemaccrxbac /* ffb4: EMAC receive buffer A complete */ + .hword vephy /* ffb6: EPHY interrupt */ + .hword vflash /* ffb8: FLASH */ + .hword villegal /* ffba: Reserved */ + .hword villegal /* ffbc: Reserved */ + .hword villegal /* ffbe: Reserved */ + .hword viic /* ffc0: IIC bus */ + .hword villegal /* ffc2: Reserved */ + .hword vcrgscm /* ffc4: CRG self clock mode */ + .hword vcrgplllck /* ffc6: CRG PLL lock */ + .hword villegal /* ffc8: Reserved */ + .hword vportg /* ffca: Port G */ + .hword vporth /* ffcc: Port H */ + .hword vportj /* ffcd: Port J */ + .hword villegal /* ffd0: Reserved */ + .hword vatd /* ffd2: ATD */ + .hword vsci1 /* ffd4: SCI1 */ + .hword vsci0 /* ffd6: SCI0 */ + .hword vspi /* ffd8: SPI */ + .hword vtimpaie /* ffda: Pulse accumulator input edge */ + .hword vtimpaovf /* ffdc: Pulse accumulator overflow */ + .hword vtimovf /* ffde: Standard timer overflow */ + .hword vtimch7 /* ffe0: Standard timer channel 7 */ + .hword vtimch6 /* ffe2: Standard timer channel 6 */ + .hword vtimch5 /* ffe4: Standard timer channel 5 */ + .hword vtimch4 /* ffe6: Standard timer channel 4 */ + .hword villegal /* ffe8: Reserved */ + .hword villegal /* ffea: Reserved */ + .hword villegal /* ffec: Reserved */ + .hword villegal /* ffee: Reserved */ + .hword vrti /* fff0: Real-time interrupt */ + .hword virq /* fff2: IRQ */ + .hword vxirq /* fff4: XIRQ */ + .hword vswi /* fff6: SWI */ + .hword vtrap /* fff8: Unimplemented instruction trap */ + .hword vcop /* fffa: COP failure reset */ + .hword vclkmon /* fffc: Clock monitor fail reset */ + .hword __start /* fffe: Reset vector */ + + .size hc12_vectors, .-hc12_vectors + +/************************************************************************************ + * .text + ************************************************************************************/ + + .text + .type handlers, function +handlers: + + HANDLER vemacec, HC12_IRQ_VEMACEC /* EMAC excessive collision */ + HANDLER vemaclc, HC12_IRQ_VEMACLC /* EMAC late collision */ + HANDLER vemacbrxerr, HC12_IRQ_VEMACBRXERR /* EMAC babbling receive error */ + HANDLER vemacrxbbo, HC12_IRQ_VEMACRXBBO /* EMAC receive buffer B overrun */ + HANDLER vemacrxbao, HC12_IRQ_VEMACRXBAO /* EMAC receive buffer A overrun */ + HANDLER vemacrxerr, HC12_IRQ_VEMACRXERR /* EMAC receive error */ + HANDLER vemacmii, HC12_IRQ_VEMACMII /* EMAC MII management transfer complete */ + HANDLER vemacrxfc, HC12_IRQ_VEMACRXFC /* EMAC receive flow control */ + HANDLER vemactxc, HC12_IRQ_VEMACTXC /* EMAC frame transmission complete */ + HANDLER vemaccrxbbc, HC12_IRQ_VEMACCRXBBC /* EMAC receive buffer B complete */ + HANDLER vemaccrxbac, HC12_IRQ_VEMACCRXBAC /* EMAC receive buffer A complete */ + HANDLER vephy, HC12_IRQ_VEPHY /* EPHY interrupt */ + HANDLER vflash, HC12_IRQ_VFLASH /* FLASH */ + HANDLER viic, HC12_IRQ_VIIC /* IIC bus */ + HANDLER vcrgscm, HC12_IRQ_VCRGSCM /* CRG self clock mode */ + HANDLER vcrgplllck, HC12_IRQ_VCRGPLLLCK /* CRG PLL lock */ + HANDLER vportg, HC12_IRQ_VPORTG /* Port G */ + HANDLER vporth, HC12_IRQ_VPORTH /* Port H */ + HANDLER vportj, HC12_IRQ_VPORTJ /* Port J */ + HANDLER vatd, HC12_IRQ_VATD /* ATD */ + HANDLER vsci1, HC12_IRQ_VSCI1 /* SCI1 */ + HANDLER vsci0, HC12_IRQ_VSCI0 /* SCI0 */ + HANDLER vspi, HC12_IRQ_VSPI /* SPI */ + HANDLER vtimpaie, HC12_IRQ_VTIMPAIE /* Pulse accumulator input edge */ + HANDLER vtimpaovf, HC12_IRQ_VTIMPAOVF /* Pulse accumulator overflow */ + HANDLER vtimovf, HC12_IRQ_VTIMOVF /* Standard timer overflow */ + HANDLER vtimch7, HC12_IRQ_VTIMCH7 /* Standard timer channel 7 */ + HANDLER vtimch6, HC12_IRQ_VTIMCH6 /* Standard timer channel 6 */ + HANDLER vtimch5, HC12_IRQ_VTIMCH5 /* Standard timer channel 5 */ + HANDLER vtimch4, HC12_IRQ_VTIMCH4 /* Standard timer channel 4 */ + HANDLER vrti, HC12_IRQ_VRTI /* Real-time interrupt */ + HANDLER virq, HC12_IRQ_VIRQ /* IRQ */ + HANDLER vxirq, HC12_IRQ_VXIRQ /* XIRQ */ + HANDLER vswi, HC12_IRQ_VSWI /* SWI */ + HANDLER vtrap, HC12_IRQ_VTRAP /* Unimplemented instruction trap */ + HANDLER vcop, HC12_IRQ_VCOP /* COP failure reset*/ + HANDLER vclkmon, HC12_IRQ_VCLKMON /* Clock monitor fail reset */ + HANDLER villegal, HC12_IRQ_VILLEGAL /* Any reserved vector */ + +/************************************************************************************ + * Common IRQ handling logic + * + * Description: + * To be provided + * + ************************************************************************************/ + +vcommon: + .size handlers, .-handlers + +/************************************************************************************ + * Name: up_interruptstack/g_userstack + * + * Description: + * Shouldn't happen + * + ************************************************************************************/ + +#if CONFIG_ARCH_INTERRUPTSTACK > 1 + .bss + .align 2 +up_interruptstack: + .skip (CONFIG_ARCH_INTERRUPTSTACK & ~1) +up_interruptstack_base: + .size up_interruptstack, .-up_interruptstack +#endif + +/************************************************************************************ + * .rodata + ************************************************************************************/ + + .section .rodata, "a" + +/* Variables: _sbss is the start of the BSS region (see ld.script) _ebss is the end + * of the BSS regsion (see ld.script). The idle task stack starts at the end of BSS + * and is of size CONFIG_IDLETHREAD_STACKSIZE. The IDLE thread is the thread that + * the system boots on and, eventually, becomes the idle, do nothing task that runs + * only when there is nothing else to run. The heap continues from there until the + * end of memory. See g_heapbase below. + */ + + .globl g_heapbase + .type g_heapbase, object +g_heapbase: + .long _ebss+CONFIG_IDLETHREAD_STACKSIZE + .size g_heapbase, .-g_heapbase + + .end +