From cc67653244104393ffe453e9454ebdf6987253d1 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 22 Mar 2008 22:37:04 +0000 Subject: [PATCH] Need more flexibility in defining the heap region git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@741 42af7a65-404d-4744-a932-0658087f49c3 --- arch/z80/src/common/up_allocateheap.c | 33 ++++------ arch/z80/src/ez80/up_mem.h | 86 +++++++++++++++++++++++++++ arch/z80/src/z8/up_mem.h | 86 +++++++++++++++++++++++++++ 3 files changed, 182 insertions(+), 23 deletions(-) create mode 100644 arch/z80/src/ez80/up_mem.h create mode 100644 arch/z80/src/z8/up_mem.h diff --git a/arch/z80/src/common/up_allocateheap.c b/arch/z80/src/common/up_allocateheap.c index 0ebb416e4e..cb2f555938 100644 --- a/arch/z80/src/common/up_allocateheap.c +++ b/arch/z80/src/common/up_allocateheap.c @@ -47,40 +47,27 @@ #include "up_arch.h" #include "up_internal.h" +#ifdef SDCC /* For the SDCC toolchain, the arch/z80/src/Makefile will parse the map file - * to determin how much memory is available for the heap. This parsed data + * to determine how much memory is available for the heap. This parsed data * is provided via the auto-generated file up_mem.h */ -#ifdef SDCC # include "up_mem.h" + +#else +/* For other toolchains, the architecture must provide a header file in the + * chip subdirectory to provide the heap parameters (if they are not defined + * in the configuration file ) + */ + +# include "chip/up_mem.h" #endif /**************************************************************************** * Definitions ****************************************************************************/ -/* For the ZiLOG ZDS-II toolchain(s), the heap will be set using linker- - * defined values: - * - * far_heapbot : set to the offset to the first unused value in EDATA - * far_stacktop : set to the highest address in EDATA - * - * The top of the heap is then determined by the amount of stack setaside - * in the NuttX configuration file - */ - -#ifdef __ZILOG__ -# ifndef CONFIG_HEAP1_BASE - extern far unsigned long far_heapbot; -# define CONFIG_HEAP1_BASE ((uint16)&far_heapbot) -# endif -# ifndef CONFIG_HEAP1_END - extern far unsigned long far_stacktop; -# define CONFIG_HEAP1_END (((uint16)&far_stacktop) - CONFIG_PROC_STACK_SIZE + 1) -# endif -#endif - /**************************************************************************** * Private Data ****************************************************************************/ diff --git a/arch/z80/src/ez80/up_mem.h b/arch/z80/src/ez80/up_mem.h new file mode 100644 index 0000000000..7de938ff64 --- /dev/null +++ b/arch/z80/src/ez80/up_mem.h @@ -0,0 +1,86 @@ +/************************************************************************************ + * arch/z80/src/ez80/up_mem.h + * arch/z80/src/chip/up_mem.h + * + * Copyright (C) 2008 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 __EZ80_UP_MEM_H +#define __EZ80_UP_MEM_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/* For the ZiLOG ZDS-II toolchain(s), the heap will be set using linker- + * defined values: + * + * _heapbot : set to the last used address + 1 in RAM + * _stack : set to the highest address + 1 in RAM + * + * The top of the heap is then determined by the amount of stack setaside + * in the NuttX configuration file + */ + +#ifndef CONFIG_HEAP1_BASE + extern unsigned long _heapbot; +# define CONFIG_HEAP1_BASE ((uint24)&_heapbot) +#endif + +#ifndef CONFIG_HEAP1_END + extern unsigned long _stack; +# define CONFIG_HEAP1_END (((uint24)&_stack) - CONFIG_PROC_STACK_SIZE) +#endif + +/************************************************************************************ + * 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 /* __EZ80_UP_MEM_H */ diff --git a/arch/z80/src/z8/up_mem.h b/arch/z80/src/z8/up_mem.h new file mode 100644 index 0000000000..72362edcb6 --- /dev/null +++ b/arch/z80/src/z8/up_mem.h @@ -0,0 +1,86 @@ +/************************************************************************************ + * arch/z80/src/z8/up_mem.h + * arch/z80/src/chip/up_mem.h + * + * Copyright (C) 2008 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 __Z8_UP_MEM_H +#define __Z8_UP_MEM_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/* For the ZiLOG ZDS-II toolchain(s), the heap will be set using linker- + * defined values: + * + * far_heapbot : set to the offset to the first unused value in EDATA + * far_stacktop : set to the highest address in EDATA + * + * The top of the heap is then determined by the amount of stack setaside + * in the NuttX configuration file + */ + +#ifndef CONFIG_HEAP1_BASE + extern far unsigned long far_heapbot; +# define CONFIG_HEAP1_BASE ((uint16)&far_heapbot) +#endif + +#ifndef CONFIG_HEAP1_END + extern far unsigned long far_stacktop; +# define CONFIG_HEAP1_END (((uint16)&far_stacktop) - CONFIG_PROC_STACK_SIZE + 1) +#endif + +/************************************************************************************ + * 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 /* __Z8_UP_MEM_H */