From 0067b7a08c72a767b61cc2bbcc9d870929eacbc0 Mon Sep 17 00:00:00 2001
From: patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>
Date: Mon, 11 Feb 2008 20:31:36 +0000
Subject: [PATCH] Fixes for z8 compilation

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@669 42af7a65-404d-4744-a932-0658087f49c3
---
 arch/z80/src/Makefile.sdcc                    | 16 ++++++-----
 arch/z80/src/Makefile.zdsii                   | 28 +++++++++++++++----
 arch/z80/src/common/up_allocateheap.c         |  6 ++--
 arch/z80/src/common/up_arch.h                 |  2 +-
 arch/z80/src/common/up_assert.c               |  2 +-
 arch/z80/src/common/up_exit.c                 |  2 +-
 arch/z80/src/common/up_internal.h             |  6 ++--
 arch/z80/src/common/up_releasepending.c       |  2 +-
 arch/z80/src/common/up_reprioritizertr.c      |  2 +-
 arch/z80/src/common/up_unblocktask.c          |  2 +-
 arch/z80/src/z8/Make.defs                     |  6 ++--
 arch/z80/src/z80/Make.defs                    | 13 ++++-----
 .../z80_initialstate.c}                       |  2 +-
 configs/z8encore000zco/include/board.h        | 12 ++++++++
 configs/z8encore000zco/ostest/defconfig       |  2 +-
 include/nuttx/compiler.h                      | 25 ++++++++++-------
 16 files changed, 82 insertions(+), 46 deletions(-)
 rename arch/z80/src/{common/up_initialstate.c => z80/z80_initialstate.c} (99%)

diff --git a/arch/z80/src/Makefile.sdcc b/arch/z80/src/Makefile.sdcc
index d45be7f933..13e56c4bf8 100644
--- a/arch/z80/src/Makefile.sdcc
+++ b/arch/z80/src/Makefile.sdcc
@@ -104,15 +104,17 @@ $(SDCCLIBDIR)/myz80.lib: $(SDCCLIBDIR)/$(SDCCLIB)
 # Create a header file that contains addressing information needed by the code
 
 up_mem.h:
-	@echo "#ifndef __ARCH_MEM_H" >up_mem.h
-	@echo "#define __ARCH_MEM_H" >>up_mem.h
+	@echo "#ifndef __UP_MEM_H" >up_mem.h
+	@echo "#define __UP_MEM_H" >>up_mem.h
 	@echo "" >>up_mem.h
-	@echo "#define UP_STACK_END           $(CONFIG_DRAM_SIZE)" >> up_mem.h
-	@echo "#define UP_STACK_BASE          (UP_STACK_END - $(CONFIG_PROC_STACK_SIZE))" >> up_mem.h
-	@echo "#define UP_HEAP1_END           UP_STACK_BASE" >> up_mem.h
-	@echo "#define UP_HEAP1_BASE          $(HEAP_BASE)" >> up_mem.h
+	@echo "#include <nuttx/config.h>
 	@echo "" >>up_mem.h
-	@echo "#endif /* __ARCH_MEM_H */" >>up_mem.h
+	@echo "#define CONFIG_STACK_END   $(CONFIG_DRAM_SIZE)" >> up_mem.h
+	@echo "#define CONFIG_STACK_BASE  (CONFIG_STACK_END - $(CONFIG_PROC_STACK_SIZE))" >> up_mem.h
+	@echo "#define CONFIG_HEAP1_END   CONFIG_STACK_BASE" >> up_mem.h
+	@echo "#define CONFIG_HEAP1_BASE  $(HEAP_BASE)" >> up_mem.h
+	@echo "" >>up_mem.h
+	@echo "#endif /* __UP_MEM_H */" >>up_mem.h
 
 asm_mem.h:
 	@echo "	UP_COMPILER_OTHER	== 0" > asm_mem.h
diff --git a/arch/z80/src/Makefile.zdsii b/arch/z80/src/Makefile.zdsii
index 199293ef36..c6dcf653c9 100644
--- a/arch/z80/src/Makefile.zdsii
+++ b/arch/z80/src/Makefile.zdsii
@@ -77,12 +77,30 @@ $(AOBJS) $(HEAD_AOBJ): %$(OBJEXT): %$(ASMEXT)
 $(COBJS): %$(OBJEXT): %.c
 	$(call COMPILE, `cygpath -w $<`, $@)
 
-libarch$(LIBEXT): $(OBJS)
+up_mem.h:
+	@echo "#ifndef __UP_MEM_H" >up_mem.h
+	@echo "#define __UP_MEM_H" >>up_mem.h
+	@echo "" >>up_mem.h
+	@echo "#include <nuttx/config.h>" >>up_mem.h
+	@echo "" >>up_mem.h
+	@echo "#ifndef CONFIG_HEAP1_BASE" >>up_mem.h
+	@echo "  extern far unsigned long far_heapbot;" >>up_mem.h
+	@echo "# define CONFIG_HEAP1_BASE ((unsigned long)&far_heapbot)" >>up_mem.h
+	@echo "#endif" >>up_mem.h
+	@echo "" >>up_mem.h
+	@echo "#ifndef CONFIG_HEAP1_END" >>up_mem.h
+	@echo "  extern far unsigned long far_heaptop;" >>up_mem.h
+	@echo "# define CONFIG_HEAP1_END ((unsigned long)&far_heaptop)" >>up_mem.h
+	@echo "#endif" >>up_mem.h
+	@echo "" >>up_mem.h
+	@echo "#endif /* __UP_MEM_H */" >>up_mem.h
+
+libarch$(LIBEXT): up_mem.h $(OBJS)
 	@( for obj in $(OBJS) ; do \
 		$(call ARCHIVE, $@, $${obj}); \
 	done ; )
 
-board/libboard$(LIBEXT):
+board/libboard$(LIBEXT): up_mem.h
 	@$(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT)
 
 nuttx.linkcmd: $(LINKCMDTEMPLATE)
@@ -98,11 +116,11 @@ nuttx.linkcmd: $(LINKCMDTEMPLATE)
 	@echo "  \"${shell cygpath -w $(ZDSSTDLIBDIR)/csioLDD$(LIBEXT)}\", \\"  >>nuttx.linkcmd
 	@echo "  \"${shell cygpath -w $(ZDSSTDLIBDIR)/zsldevinitdummy.lib$(LIBEXT)}\" \\"  >>nuttx.linkcmd
  
-nuttx$(EXEEXT): $(HEAD_AOBJ) board/libboard$(LIBEXT) nuttx.linkcmd
+nuttx$(EXEEXT): up_mem.h $(HEAD_AOBJ) board/libboard$(LIBEXT) nuttx.linkcmd
 	@echo "LD:  nuttx.hex"
 	@$(LD) $(LDFLAGS)
 
-.depend: Makefile chip/Make.defs $(DEPSRCS)
+.depend: Makefile up_mem.h chip/Make.defs $(DEPSRCS)
 	@if [ -e board/Makefile ]; then \
 		$(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \
 	fi
@@ -116,7 +134,7 @@ clean:
 		$(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \
 	fi
 	@rm -f libarch$(LIBEXT) *~ .*.swp
-	@rm -f nuttx.linkcmd *.asm *.tmp *.map
+	@rm -f nuttx.linkcmd up_mem.h *.asm *.tmp *.map
 	$(call CLEAN)
 
 distclean: clean
diff --git a/arch/z80/src/common/up_allocateheap.c b/arch/z80/src/common/up_allocateheap.c
index 0c5f9fc300..4b21b575c3 100644
--- a/arch/z80/src/common/up_allocateheap.c
+++ b/arch/z80/src/common/up_allocateheap.c
@@ -76,8 +76,8 @@
 
 void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
 {
-  *heap_start = (FAR void*)UP_HEAP1_BASE;
-  *heap_size = UP_HEAP1_END - UP_HEAP1_BASE;
+  *heap_start = (FAR void*)CONFIG_HEAP1_BASE;
+  *heap_size = CONFIG_HEAP1_END - CONFIG_HEAP1_BASE;
   up_ledon(LED_HEAPALLOCATE);
 }
 
@@ -93,6 +93,6 @@ void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
 #if CONFIG_MM_REGIONS > 1
 void up_addregion(void)
 {
-  mm_addregion((FAR void*)UP_HEAP2_BASE, UP_HEAP2_END - UP_HEAP2_BASE);
+  mm_addregion((FAR void*)CONFIG_HEAP2_BASE, CONFIG_HEAP2_END - CONFIG_HEAP2_BASE);
 }
 #endif
diff --git a/arch/z80/src/common/up_arch.h b/arch/z80/src/common/up_arch.h
index b0158325aa..5ef0b932c7 100644
--- a/arch/z80/src/common/up_arch.h
+++ b/arch/z80/src/common/up_arch.h
@@ -46,7 +46,7 @@
 #endif
 
 #include <arch/board/board.h>
-#include "chip.h"
+#include "chip/chip.h"
 
 /************************************************************************************
  * Definitions
diff --git a/arch/z80/src/common/up_assert.c b/arch/z80/src/common/up_assert.c
index f226c94310..c1e2e4a8cd 100644
--- a/arch/z80/src/common/up_assert.c
+++ b/arch/z80/src/common/up_assert.c
@@ -46,8 +46,8 @@
 
 #include <nuttx/irq.h>
 #include <nuttx/arch.h>
-#include <chip/chip.h>
 
+#include "chip/chip.h"
 #include "up_arch.h"
 #include "os_internal.h"
 #include "up_internal.h"
diff --git a/arch/z80/src/common/up_exit.c b/arch/z80/src/common/up_exit.c
index d8c94fece9..45409800ef 100644
--- a/arch/z80/src/common/up_exit.c
+++ b/arch/z80/src/common/up_exit.c
@@ -44,8 +44,8 @@
 #include <debug.h>
 
 #include <nuttx/arch.h>
-#include <chip/chip.h>
 
+#include "chip/chip.h"
 #include "os_internal.h"
 #include "up_internal.h"
 
diff --git a/arch/z80/src/common/up_internal.h b/arch/z80/src/common/up_internal.h
index d340a56312..e90bec766d 100644
--- a/arch/z80/src/common/up_internal.h
+++ b/arch/z80/src/common/up_internal.h
@@ -41,7 +41,7 @@
  ****************************************************************************/
 
 #include <arch/irq.h>
-#include <chip/chip.h>
+#include "chip/chip.h"
 
 /****************************************************************************
  * Definitions
@@ -111,8 +111,8 @@ extern int up_restoreusercontext(chipreg_t *regs);
 extern FAR chipreg_t *up_decodeirq(uint8 rstno, FAR chipreg_t *regs);
 extern void up_irqinitialize(void);
 extern int  up_timerisr(int irq, FAR chipreg_t *regs);
-extern void up_lowputc(char ch) __naked;
-extern char up_lowgetc(void) __naked;
+extern void up_lowputc(char ch) naked_function;
+extern char up_lowgetc(void) naked_function;
 
 /* Defined in up_doirq.c */
 
diff --git a/arch/z80/src/common/up_releasepending.c b/arch/z80/src/common/up_releasepending.c
index 3b2b119a3c..853cc73507 100644
--- a/arch/z80/src/common/up_releasepending.c
+++ b/arch/z80/src/common/up_releasepending.c
@@ -44,8 +44,8 @@
 #include <debug.h>
 
 #include <nuttx/arch.h>
-#include <chip/chip.h>
 
+#include "chip/chip.h"
 #include "os_internal.h"
 #include "up_internal.h"
 
diff --git a/arch/z80/src/common/up_reprioritizertr.c b/arch/z80/src/common/up_reprioritizertr.c
index b5961d92d2..3adf33735c 100644
--- a/arch/z80/src/common/up_reprioritizertr.c
+++ b/arch/z80/src/common/up_reprioritizertr.c
@@ -44,8 +44,8 @@
 #include <debug.h>
 
 #include <nuttx/arch.h>
-#include <chip/chip.h>
 
+#include "chip/chip.h"
 #include "os_internal.h"
 #include "up_internal.h"
 
diff --git a/arch/z80/src/common/up_unblocktask.c b/arch/z80/src/common/up_unblocktask.c
index 93bfdf472f..1ce672a5da 100644
--- a/arch/z80/src/common/up_unblocktask.c
+++ b/arch/z80/src/common/up_unblocktask.c
@@ -44,8 +44,8 @@
 #include <debug.h>
 
 #include <nuttx/arch.h>
-#include <chip/chip.h>
 
+#include "chip/chip.h"
 #include "os_internal.h"
 #include "clock_internal.h"
 #include "up_internal.h"
diff --git a/arch/z80/src/z8/Make.defs b/arch/z80/src/z8/Make.defs
index 8488efc96b..3c48749d7b 100644
--- a/arch/z80/src/z8/Make.defs
+++ b/arch/z80/src/z8/Make.defs
@@ -36,9 +36,9 @@
 HEAD_ASRC	= z8_head.asm
 
 CMN_ASRCS	= 
-CMN_CSRCS	= up_initialize.c up_allocateheap.c up_initialstate.c \
-		  up_createstack.c up_releasestack.c up_interruptcontext.c \
-		  up_blocktask.c  up_unblocktask.c up_exit.c up_releasepending.c \
+CMN_CSRCS	= up_initialize.c up_allocateheap.c up_createstack.c \
+		  up_releasestack.c up_interruptcontext.c up_blocktask.c \
+		  up_unblocktask.c up_exit.c up_releasepending.c \
 		  up_reprioritizertr.c up_copystate.c up_irq.c up_idle.c \
 		  up_assert.c up_mdelay.c up_udelay.c \
 		  up_schedulesigaction.c up_sigdeliver.c \
diff --git a/arch/z80/src/z80/Make.defs b/arch/z80/src/z80/Make.defs
index 1d4d5c29ed..ae5bdf56b3 100644
--- a/arch/z80/src/z80/Make.defs
+++ b/arch/z80/src/z80/Make.defs
@@ -36,14 +36,13 @@
 HEAD_ASRC	= z80_head.asm
 
 CMN_ASRCS	= 
-CMN_CSRCS	= up_initialize.c up_allocateheap.c up_initialstate.c \
-		  up_createstack.c up_releasestack.c up_interruptcontext.c \
-		  up_blocktask.c  up_unblocktask.c up_exit.c up_releasepending.c \
+CMN_CSRCS	= up_initialize.c up_allocateheap.c up_createstack.c \
+		  up_releasestack.c up_interruptcontext.c up_blocktask.c  \
+		  up_unblocktask.c up_exit.c up_releasepending.c \
 		  up_reprioritizertr.c up_copystate.c up_irq.c up_idle.c \
-		  up_assert.c up_mdelay.c up_udelay.c \
-		  up_schedulesigaction.c up_sigdeliver.c \
-		  up_registerdump.c up_usestack.c
+		  up_assert.c up_mdelay.c up_udelay.c up_schedulesigaction.c \
+		  up_sigdeliver.c up_registerdump.c up_usestack.c
 
 CHIP_ASRCS	= z80_saveusercontext.asm z80_restoreusercontext.asm
-CHIP_CSRCS	= 
+CHIP_CSRCS	= z80_initialstate.c 
 
diff --git a/arch/z80/src/common/up_initialstate.c b/arch/z80/src/z80/z80_initialstate.c
similarity index 99%
rename from arch/z80/src/common/up_initialstate.c
rename to arch/z80/src/z80/z80_initialstate.c
index 0e26af9a2d..767c7b6057 100644
--- a/arch/z80/src/common/up_initialstate.c
+++ b/arch/z80/src/z80/z80_initialstate.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * common/up_initialstate.c
+ * arch/z80/src/z80/up_initialstate.c
  *
  *   Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
diff --git a/configs/z8encore000zco/include/board.h b/configs/z8encore000zco/include/board.h
index 8007523181..64632bee4f 100644
--- a/configs/z8encore000zco/include/board.h
+++ b/configs/z8encore000zco/include/board.h
@@ -43,6 +43,18 @@
 /****************************************************************************
  * Definitions
  ****************************************************************************/
+ 
+/* LED pattern definitions */
+
+#define LED_STARTED                 0
+#define LED_HEAPALLOCATE            1
+#define LED_IRQSENABLED             2
+#define LED_STACKCREATED            3
+#define LED_IDLE                    4
+#define LED_INIRQ                   5
+#define LED_ASSERTION               6
+#define LED_SIGNAL                  6
+#define LED_PANIC                   7
 
 /****************************************************************************
  * Public Functions
diff --git a/configs/z8encore000zco/ostest/defconfig b/configs/z8encore000zco/ostest/defconfig
index ad5c6a47ea..5fa382a593 100644
--- a/configs/z8encore000zco/ostest/defconfig
+++ b/configs/z8encore000zco/ostest/defconfig
@@ -66,7 +66,7 @@ CONFIG_ARCH_BOARD_Z8ENCORE000ZCO=y
 CONFIG_BOARD_LOOPSPERMSEC=1250
 CONFIG_ENDIAN_BIG=y
 CONFIG_DRAM_SIZE=65536
-CONFIG_ARCH_LEDS=y
+CONFIG_ARCH_LEDS=n
 #
 # Z16F specific device driver settings
 #
diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h
index 7183288cbf..d14f816c07 100644
--- a/include/nuttx/compiler.h
+++ b/include/nuttx/compiler.h
@@ -59,9 +59,8 @@
 
 /* Attributes
  *
- * GCC supports weak symbols which can be used to reduce
- * code size because unnecessary "weak" functions can be
- * excluded from the link.
+ * GCC supports weak symbols which can be used to reduce code size because
+ * unnecessary "weak" functions can be excluded from the link.
  */
 
 # ifndef __CYGWIN__
@@ -77,21 +76,20 @@
 #  define weak_const_function
 #endif
 
-/* The noreturn attribute informs GCC that the function will
- * not return.
- */
+/* The noreturn attribute informs GCC that the function will not return. */
 
 # define noreturn_function __attribute__ ((noreturn))
 
-/* The packed attribute informs GCC that the stucture elements
- * are packed, ignoring other alignment rules.
+/* The packed attribute informs GCC that the stucture elements are packed,
+ * ignoring other alignment rules.
  */
 
 # define packed_struct __attribute__ ((packed))
 
-/* GCC does not support the reentrant attribute */
+/* GCC does not support the reentrant or naked attributes */
 
 # define reentrant_function
+# define naked_function
 
 /* GCC has does not use storage classes to qualify addressing */
 
@@ -158,6 +156,10 @@
 # define noreturn_function
 # define packed_struct
 
+/* SDCC does support "naked" function s*/
+
+# define naked_function __naked
+
 /* The reentrant attribute informs SDCC that the function
  * must be reentrant.  In this case, SDCC will store input
  * arguments on the stack to support reentrancy.
@@ -249,10 +251,11 @@
 # define weak_function
 # define weak_const_function
 
-/* The Zilog compiler does not support the noreturn or packed attributes */
+/* The Zilog compiler does not support the noreturn, packed, or naked attributes */
 
 # define noreturn_function
 # define packed_struct
+# define naked_function
 
 /* The Zilog compiler does not support the reentrant attribute */
 
@@ -317,6 +320,8 @@
 # define noreturn_function
 # define packed_struct
 # define reentrant_function
+# define naked_function
+
 
 # define FAR
 # define NEAR
-- 
GitLab