summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-07 19:02:57 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-07 19:02:57 +0000
commitbf0e0bb95ec767c971d01d70f1ba027ef585ce14 (patch)
tree59900051a4e3fa3ae3024115f7532c2eeda7aefd /nuttx
parent3c5cba9b94c3f5365034f044e18a58d425508c87 (diff)
downloadpx4-nuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.tar.gz
px4-nuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.tar.bz2
px4-nuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.zip
Redesign z80 build so that mkhpbase.sh bash script is not needed; remove support for older SDCC toolchains; Re-verify z80 build on Linux
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5416 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/arch/z80/src/Makefile.sdccl155
-rw-r--r--nuttx/arch/z80/src/Makefile.sdccw146
-rw-r--r--nuttx/arch/z80/src/common/up_arch.h6
-rw-r--r--nuttx/arch/z80/src/common/up_internal.h6
-rwxr-xr-xnuttx/arch/z80/src/mkhpbase.bat45
-rwxr-xr-xnuttx/arch/z80/src/mkhpbase.sh109
-rw-r--r--nuttx/arch/z80/src/z80/up_mem.h75
-rw-r--r--nuttx/arch/z80/src/z80/z80_head.asm21
-rw-r--r--nuttx/arch/z80/src/z80/z80_io.c24
-rw-r--r--nuttx/arch/z80/src/z80/z80_irq.c16
-rw-r--r--nuttx/configs/xtrs/README.txt61
-rw-r--r--nuttx/configs/xtrs/nsh/Make.defs18
-rw-r--r--nuttx/configs/xtrs/ostest/Make.defs18
-rw-r--r--nuttx/configs/xtrs/pashello/Make.defs18
-rw-r--r--nuttx/configs/xtrs/sdcc-2.6.0-asz80-symlen.patch11
-rw-r--r--nuttx/configs/z80sim/README.txt72
-rw-r--r--nuttx/configs/z80sim/nsh/Make.defs18
-rw-r--r--nuttx/configs/z80sim/ostest/Make.defs18
-rw-r--r--nuttx/configs/z80sim/pashello/Make.defs18
-rw-r--r--nuttx/configs/z80sim/sdcc-2.6.0-asz80-symlen.patch11
-rw-r--r--nuttx/configs/z80sim/src/z80_lowputc.c19
21 files changed, 231 insertions, 654 deletions
diff --git a/nuttx/arch/z80/src/Makefile.sdccl b/nuttx/arch/z80/src/Makefile.sdccl
index 916f85b70..d4cf28a45 100644
--- a/nuttx/arch/z80/src/Makefile.sdccl
+++ b/nuttx/arch/z80/src/Makefile.sdccl
@@ -75,15 +75,11 @@ VPATH = chip:common:board
LIBGCC = ${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}
-# Supports dynamic sizing of HEAP.
-#
-HEAP_BASE = ${shell ./mkhpbase.sh}
-
# Targets
all: $(HEAD_OBJ) libarch$(LIBEXT)
-.PHONY: board/libboard$(LIBEXT) pass1.lnk nuttx.lnk
+.PHONY: board/libboard$(LIBEXT) nuttx.lnk
$(AOBJS) $(HEAD_OBJ): %$(OBJEXT): %$(ASMEXT)
$(call ASSEMBLE, $<, $@)
@@ -93,72 +89,46 @@ $(COBJS): %$(OBJEXT): %.c
# This is a kludge to work around some conflicting symbols in libsdcc.lib
-$(TOPDIR)/lib/myz80.lib: $(SDCC_LIBDIR)/$(SDCCLIB)
-ifeq ($(CONFIG_SDCC_OLD),y)
- $(Q) cat $(SDCC_LIBDIR)/$(SDCCLIB) | \
- grep -v alloc | grep -v free | grep -v printf | \
- grep -v _str | grep -v _mem | grep -v crt0\.o \
- > $(TOPDIR)/lib/myz80.lib
-else
- $(Q) cp $(SDCC_LIBDIR)/z80.lib $(TOPDIR)/lib/myz80.lib
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _calloc.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _malloc.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _realloc.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _free.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib printf_large.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib sprintf.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib vprintf.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib strcpy.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib strlen.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcat.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strchr.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcmp.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcspn.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncat.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncmp.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncpy.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strpbrk.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strrchr.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strspn.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strstr.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _strtok.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _memchr.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _memcmp.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _memcpy.rel
- $(Q) sdar d $(TOPDIR)/lib/myz80.lib _memset.rel
-endif
-
-# Create a header file that contains addressing information needed by the code
-
-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 "#define CONFIG_STACK_END $(CONFIG_DRAM_SIZE)" >> up_mem.h
- @echo "#define CONFIG_STACK_BASE (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))" >> 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
+$(TOPDIR)/lib/$(SDCCLIB): $(SDCC_LIBDIR)/$(SDCCLIB)
+ $(Q) cp $(SDCC_LIBDIR)/$(SDCCLIB) $(TOPDIR)/lib/$(SDCCLIB)
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _calloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _malloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _realloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _free.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) printf_large.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) sprintf.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) vprintf.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) strcpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) strlen.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcat.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcspn.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncat.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strpbrk.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strrchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strspn.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strstr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strtok.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memcmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memcpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memset.rel
+
+# Create a header file that contains addressing information needed by the
+# assemlby language start-up code. Locate the IDLE thread stack at the
+# end of RAM. The heap then extends from s__HEAP to the bottom of the
+# IDLE thread stack
asm_mem.h:
- @echo " CONFIG_COMPILER_OTHER == 0" > asm_mem.h
- @echo " CONFIG_COMPILER_SDCC == 1" >> asm_mem.h
-ifeq ($(CC),sdcc)
- @echo " CONFIG_COMPILER == 1" >> asm_mem.h
-else
- @echo " CONFIG_COMPILER == 0" >> asm_mem.h
-endif
@echo " CONFIG_STACK_END == ($(CONFIG_DRAM_SIZE) - 1)" >> asm_mem.h
@echo " CONFIG_STACK_BASE == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))" >> asm_mem.h
- @echo " CONFIG_HEAP1_END == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE) - 1)" >> asm_mem.h
- @echo " CONFIG_HEAP1_BASE == $(HEAP_BASE)" >> asm_mem.h
# Combine all objects in this directory into a library
-libarch$(LIBEXT): up_mem.h asm_mem.h $(OBJS)
+libarch$(LIBEXT): asm_mem.h $(OBJS)
$(call ARCHIVE, $@, $(OBJS))
# This builds the libboard library in the board/ subdirectory
@@ -168,43 +138,6 @@ board/libboard$(LIBEXT):
# This target builds the final executable
-pass1.lnk:
- @echo "LD: pass1.ihx"
- @echo "--" >pass1.lnk # Non-interactive
- @echo "-k $(BOARDDIR)" >>pass1.lnk # Path to board library
- @echo "-k $(TOPDIR)/lib" >>pass1.lnk # Path to top-level lib-directory
- @echo "-l libboard$(LIBEXT)" >>pass1.lnk # Name of board library
- $(Q) for LIB in $(LINKLIBS); do \
- echo "-l $(TOPDIR)/lib/$$LIB" >> pass1.lnk ;\
- done
- @echo "-l myz80.lib" >>pass1.lnk # Name of SDCC z80 library
-ifneq ($(CONFIG_LINKER_START_AREA),)
- @echo "-b START=$(CONFIG_LINKER_START_AREA)" >>pass1.lnk # Start of START area
-endif
-ifneq ($(CONFIG_LINKER_CODE_AREA),)
- @echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>pass1.lnk # Start of _CODE area
-else
- @echo "-b _CODE=256" >>pass1.lnk # Start of _CODE area
-endif
-ifneq ($(CONFIG_LINKER_DATA_AREA),)
- @echo "-b _CODE=$(CONFIG_LINKER_DATA_AREA)" >>pass1.lnk
-endif
- @echo "-i" >>pass1.lnk # Intel hex format
- @echo "-x" >>pass1.lnk # Hexadecimal
- @echo "-m" >>pass1.lnk # Generate a map file
- @echo "-j" >>pass1.lnk # Generate a symbol file
- @echo "pass1.ihx" >>pass1.lnk # Path to head object
- @echo "$(HEAD_OBJ)" >>pass1.lnk # Path to head object
- @echo "-e" >>pass1.lnk # End of script
-
-pass1.ihx: up_mem.h asm_mem.h $(TOPDIR)/lib/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) pass1.lnk
- @echo "LD: pass1.ihx"
- $(Q) $(LD) -f pass1.lnk
- $(Q) rm -f up_mem.h asm_mem.h
- $(Q) rm -f up_allocateheap$(OBJEXT) $(HEAD_OBJ) libarch$(LIBEXT)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" libarch$(LIBEXT)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" $(HEAD_OBJ)
-
nuttx.lnk:
@echo "--" >nuttx.lnk # Non-interactive
@echo "-k $(BOARDDIR)" >>nuttx.lnk # Path to board library
@@ -213,7 +146,18 @@ nuttx.lnk:
$(Q) for LIB in $(LINKLIBS); do \
echo "-l $(TOPDIR)/lib/$$LIB" >> nuttx.lnk ;\
done
- @echo "-l myz80.lib" >>nuttx.lnk # Name of SDCC z80 library
+ @echo "-l $(SDCCLIB)" >>nuttx.lnk # Name of SDCC z80 library
+ifneq ($(CONFIG_LINKER_CODE_AREA),)
+ @echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>nuttx.lnk # Start of _CODE area
+else
+ @echo "-b _CODE=0x0200" >>nuttx.lnk # Start of _CODE area
+endif
+ifneq ($(CONFIG_LINKER_DATA_AREA),)
+ @echo "-b _CODE=$(CONFIG_LINKER_DATA_AREA)" >>nuttx.lnk
+else
+ @echo "-b _DATA=0x8000" >>nuttx.lnk # Start of _DATA area
+endif
+
ifneq ($(CONFIG_LINKER_START_AREA),)
@echo "-b START=$(CONFIG_LINKER_START_AREA)" >>nuttx.lnk # Start of START area
endif
@@ -233,10 +177,9 @@ endif
@echo "$(HEAD_OBJ)" >>nuttx.lnk # Path to head object
@echo "-e" >>nuttx.lnk # End of script
-nuttx$(EXEEXT): pass1.ihx up_mem.h asm_mem.h $(TOPDIR)/lib/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk
+nuttx$(EXEEXT): asm_mem.h $(TOPDIR)/lib/$(SDCCLIB) $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk
@echo "LD: nuttx.ihx"
$(Q) $(LD) -f nuttx.lnk
- $(Q) rm -f pass1.*
$(Q) cp -f nuttx.map $(TOPDIR)/.
ifeq ($(EXEEXT),.cmd)
sed s/:00000001FF/:00520001AD/ nuttx.ihx | \
@@ -257,7 +200,7 @@ export_head: board/libboard$(LIBEXT) $(HEAD_OBJ)
# Build dependencies
-.depend: Makefile up_mem.h asm_mem.h chip/Make.defs $(DEPSRCS)
+.depend: Makefile asm_mem.h chip/Make.defs $(DEPSRCS)
$(Q) if [ -e board/Makefile ]; then \
$(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \
fi
@@ -270,9 +213,7 @@ clean:
$(Q) if [ -e board/Makefile ]; then \
$(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \
fi
- $(call DELFILE, up_mem.h)
$(call DELFILE, asm_mem.h)
- $(call DELFILE, pass1.*)
$(call DELFILE, nuttx.*)
$(call DELFILE, libarch$(LIBEXT))
$(call CLEAN)
diff --git a/nuttx/arch/z80/src/Makefile.sdccw b/nuttx/arch/z80/src/Makefile.sdccw
index 4433429bb..0cd7b4757 100644
--- a/nuttx/arch/z80/src/Makefile.sdccw
+++ b/nuttx/arch/z80/src/Makefile.sdccw
@@ -33,16 +33,13 @@
#
############################################################################
-############################################################################
# Tools
# CFLAGS, CPPFLAGS, ASFLAGS, LDFLAGS are set in $(TOPDIR)\Make.defs
CFLAGS += -I$(ARCH_SRCDIR)\chip -I$(ARCH_SRCDIR)\common -I$(TOPDIR)\sched
CPPFLAGS += -D__ASSEMBLY__
-############################################################################
# Files and directories
-
# There should be one head source (.asm file)
HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT))
@@ -77,16 +74,11 @@ VPATH = chip:common:board
LIBGCC = ${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}
-# Supports dynamic sizing of HEAP.
-#
-HEAP_BASE = ${shell .\mkhpbase.bat}
-
-############################################################################
# Targets
all: $(HEAD_OBJ) libarch$(LIBEXT)
-.PHONY: board\libboard$(LIBEXT) pass1.lnk nuttx.lnk
+.PHONY: board\libboard$(LIBEXT) nuttx.lnk
$(AOBJS) $(HEAD_OBJ): %$(OBJEXT): %$(ASMEXT)
$(call ASSEMBLE, $<, $@)
@@ -96,69 +88,46 @@ $(COBJS): %$(OBJEXT): %.c
# This is a kludge to work around some conflicting symbols in the SDCC libraries
-$(TOPDIR)\lib\myz80.lib: $(SDCC_LIBDIR)\$(SDCCLIB)
-ifeq ($(CONFIG_SDCC_OLD),y)
- $(Q) cat $(SDCC_LIBDIR)\$(SDCCLIB) | \
- grep -v alloc | grep -v free | grep -v printf | \
- grep -v _str | grep -v _mem | grep -v crt0\.o \
- > $(TOPDIR)\lib\myz80.lib
-else
- $(Q) cp $(SDCC_LIBDIR)\z80.lib $(TOPDIR)\lib\myz80.lib
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _calloc.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _malloc.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _realloc.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _free.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib printf_large.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib sprintf.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib vprintf.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib strcpy.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib strlen.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strcat.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strchr.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strcmp.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strcspn.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strncat.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strncmp.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strncpy.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strpbrk.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strrchr.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strspn.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strstr.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _strtok.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _memchr.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _memcmp.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _memcpy.rel
- $(Q) sdar d $(TOPDIR)\lib\myz80.lib _memset.rel
-endif
-
-# Create a header file that contains addressing information needed by the code
-
-up_mem.h:
- @echo #ifndef __UP_MEM_H>up_mem.h
- @echo #define __UP_MEM_H>>up_mem.h
- @echo #include ^<nuttx/config.h^>>>up_mem.h
- @echo #define CONFIG_STACK_END $(CONFIG_DRAM_SIZE)>> up_mem.h
- @echo #define CONFIG_STACK_BASE (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))>> 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 #endif /* __UP_MEM_H */>>up_mem.h
+$(TOPDIR)\lib\$(SDCCLIB): $(SDCC_LIBDIR)\$(SDCCLIB)
+ $(Q) cp $(SDCC_LIBDIR)\$(SDCCLIB) $(TOPDIR)\lib\$(SDCCLIB)
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _calloc.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _malloc.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _realloc.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _free.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) printf_large.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) sprintf.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) vprintf.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) strcpy.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) strlen.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strcat.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strchr.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strcmp.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strcspn.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strncat.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strncmp.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strncpy.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strpbrk.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strrchr.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strspn.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strstr.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _strtok.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _memchr.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _memcmp.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _memcpy.rel
+ $(Q) sdar d $(TOPDIR)\lib\$(SDCCLIB) _memset.rel
+
+# Create a header file that contains addressing information needed by the
+# assemlby language start-up code. Locate the IDLE thread stack at the
+# end of RAM. The heap then extends from s__HEAP to the bottom of the
+# IDLE thread stack
asm_mem.h:
- @echo CONFIG_COMPILER_OTHER == ^0>asm_mem.h
- @echo CONFIG_COMPILER_SDCC == ^1>>asm_mem.h
-ifeq ($(CC),sdcc)
- @echo CONFIG_COMPILER == ^1>>asm_mem.h
-else
- @echo CONFIG_COMPILER == ^0>>asm_mem.h
-endif
@echo CONFIG_STACK_END == ($(CONFIG_DRAM_SIZE) - 1)>>asm_mem.h
@echo CONFIG_STACK_BASE == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))>>asm_mem.h
- @echo CONFIG_HEAP1_END == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE) - 1)>>asm_mem.h
- @echo CONFIG_HEAP1_BASE == $(HEAP_BASE)>>asm_mem.h
# Combine all objects in this directory into a library
-libarch$(LIBEXT): up_mem.h asm_mem.h $(OBJS)
+libarch$(LIBEXT): asm_mem.h $(OBJS)
$(call ARCHIVE, $@, $(OBJS))
# This builds the libboard library in the board\ subdirectory
@@ -168,43 +137,6 @@ board\libboard$(LIBEXT):
# This target builds the final executable
-pass1.lnk:
- @echo LD: pass1.lnk
- @echo -->pass1.lnk
- @echo -k $(BOARDDIR)>>pass1.lnk
- @echo -k $(TOPDIR)\lib>>pass1.lnk
- @echo -l libboard$(LIBEXT)>>pass1.lnk
- $(Q) for %%G in ($(LINKLIBS)) do ( echo -l $(TOPDIR)\lib\%%G>> pass1.lnk )
- @echo -l myz80.lib>>pass1.lnk
-ifneq ($(CONFIG_LINKER_START_AREA),)
- @echo -b START=$(CONFIG_LINKER_START_AREA)>>pass1.lnk
-else
- @echo -b START=0>>pass1.lnk
-endif
-ifneq ($(CONFIG_LINKER_CODE_AREA),)
- @echo -b _CODE=$(CONFIG_LINKER_CODE_AREA)>>pass1.lnk
-else
- @echo -b _CODE=256>>pass1.lnk
-endif
-ifneq ($(CONFIG_LINKER_DATA_AREA),)
- @echo -b _CODE=$(CONFIG_LINKER_DATA_AREA)>>pass1.lnk
-endif
- @echo -i>>pass1.lnk
- @echo -x>>pass1.lnk
- @echo -m>>pass1.lnk
- @echo -j>>pass1.lnk
- @echo pass1.ihx>>pass1.lnk
- @echo $(HEAD_OBJ)>>pass1.lnk
- @echo -e>>pass1.lnk
-
-pass1.ihx: up_mem.h asm_mem.h $(TOPDIR)\lib\myz80.lib $(HEAD_OBJ) board\libboard$(LIBEXT) pass1.lnk
- @echo LD: pass1.ihx
- $(Q) $(LD) -f pass1.lnk
- $(Q) rm -f up_mem.h asm_mem.h
- $(Q) rm -f up_allocateheap$(OBJEXT) $(HEAD_OBJ) libarch$(LIBEXT)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" libarch$(LIBEXT)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" $(HEAD_OBJ)
-
nuttx.lnk:
@echo LD: nuttx.lnk
@echo -->nuttx.lnk
@@ -212,7 +144,7 @@ nuttx.lnk:
@echo -k $(TOPDIR)\lib>>nuttx.lnk
@echo -l libboard$(LIBEXT)>>nuttx.lnk
$(Q) for %%G in ($(LINKLIBS)) do ( echo -l $(TOPDIR)\lib\%%G>> nuttx.lnk )
- @echo -l myz80.lib>>nuttx.lnk
+ @echo -l $(SDCCLIB)>>nuttx.lnk
ifneq ($(CONFIG_LINKER_START_AREA),)
@echo -b START=$(CONFIG_LINKER_START_AREA)>>nuttx.lnk
else
@@ -234,10 +166,9 @@ endif
@echo $(HEAD_OBJ)>>nuttx.lnk
@echo -e>>nuttx.lnk
-nuttx$(EXEEXT): pass1.ihx up_mem.h asm_mem.h $(TOPDIR)\lib\myz80.lib $(HEAD_OBJ) board\libboard$(LIBEXT) nuttx.lnk
+nuttx$(EXEEXT): asm_mem.h $(TOPDIR)\lib\$(SDCCLIB) $(HEAD_OBJ) board\libboard$(LIBEXT) nuttx.lnk
@echo LD: nuttx.ihx
$(Q) $(LD) -f nuttx.lnk
- $(call DELFILE, pass1.*)
$(Q) cp -f nuttx.map $(TOPDIR)\.
ifeq ($(EXEEXT),.cmd)
sed s/:00000001FF/:00520001AD/ nuttx.ihx | \
@@ -254,7 +185,7 @@ export_head: board\libboard$(LIBEXT) $(HEAD_OBJ)
# Build dependencies
-.depend: Makefile up_mem.h asm_mem.h chip\Make.defs $(DEPSRCS)
+.depend: Makefile asm_mem.h chip\Make.defs $(DEPSRCS)
$(Q) if exist board\Makefile ( $(MAKE) -C board TOPDIR="$(TOPDIR)" depend )
$(Q) $(MKDEP) --dep-path chip --dep-path common "$(CC)" -- $(CFLAGS) -- $(DEPSRCS) >Make.dep
$(Q) touch $@
@@ -263,14 +194,11 @@ depend: .depend
clean:
$(Q) if exist board\Makefile ( $(MAKE) -C board TOPDIR="$(TOPDIR)" clean )
- $(call DELFILE, up_mem.h)
$(call DELFILE, asm_mem.h)
- $(call DELFILE, pass1.*)
$(call DELFILE, nuttx.*)
$(call DELFILE, libarch$(LIBEXT))
$(call CLEAN)
-
distclean: clean
$(Q) if exist board\Makefile ( $(MAKE) -C board TOPDIR="$(TOPDIR)" distclean )
$(call DELFILE, Make.dep)
diff --git a/nuttx/arch/z80/src/common/up_arch.h b/nuttx/arch/z80/src/common/up_arch.h
index 99087bb08..43c750e4e 100644
--- a/nuttx/arch/z80/src/common/up_arch.h
+++ b/nuttx/arch/z80/src/common/up_arch.h
@@ -33,8 +33,8 @@
*
************************************************************************************/
-#ifndef __UP_ARCH_H
-#define __UP_ARCH_H
+#ifndef __ARCH_Z80_SRC_COMMON_UP_ARCH_H
+#define __ARCH_Z80_SRC_COMMON_UP_ARCH_H
/************************************************************************************
* Included Files
@@ -49,4 +49,4 @@
* Definitions
************************************************************************************/
-#endif /* __UP_ARCH_H */
+#endif /* __ARCH_Z80_SRC_COMMON_UP_ARCH_H */
diff --git a/nuttx/arch/z80/src/common/up_internal.h b/nuttx/arch/z80/src/common/up_internal.h
index 960061a80..1989f99d0 100644
--- a/nuttx/arch/z80/src/common/up_internal.h
+++ b/nuttx/arch/z80/src/common/up_internal.h
@@ -33,8 +33,8 @@
*
****************************************************************************/
-#ifndef __UP_INTERNAL_H
-#define __UP_INTERNAL_H
+#ifndef __ARCH_Z80_SRC_COMMON_UP_INTERNAL_H
+#define __ARCH_Z80_SRC_COMMON_UP_INTERNAL_H
/****************************************************************************
* Conditional Compilation
@@ -209,4 +209,4 @@ EXTERN void up_stackdump(void);
#endif
#endif
-#endif /* __UP_INTERNAL_H */
+#endif /* __ARCH_Z80_SRC_COMMON_UP_INTERNAL_H */
diff --git a/nuttx/arch/z80/src/mkhpbase.bat b/nuttx/arch/z80/src/mkhpbase.bat
deleted file mode 100755
index 8792f73a4..000000000
--- a/nuttx/arch/z80/src/mkhpbase.bat
+++ /dev/null
@@ -1,45 +0,0 @@
-@echo off
-
-rem arch/z80/src/mkhpbase.bat
-rem
-rem Copyright (C) 2012 Gregory Nutt. All rights reserved.
-rem Author: Gregory Nutt <gnutt@nuttx.org>
-rem
-rem Redistribution and use in source and binary forms, with or without
-rem modification, are permitted provided that the following conditions
-rem are met:
-rem
-rem 1. Redistributions of source code must retain the above copyright
-rem notice, this list of conditions and the following disclaimer.
-rem 2. Redistributions in binary form must reproduce the above copyright
-rem notice, this list of conditions and the following disclaimer in
-rem the documentation and/or other materials provided with the
-rem distribution.
-rem 3. Neither the name NuttX nor the names of its contributors may be
-rem used to endorse or promote products derived from this software
-rem without specific prior written permission.
-rem
-rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-rem FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-rem COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-rem INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-rem BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-rem OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-rem AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-rem LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-rem ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-rem POSSIBILITY OF SUCH DAMAGE.
-rem
-
-rem
-rem This script supports dynamic sizing of HEAP when building with the SDCC
-rem toolchain. This script adds up the size of each section of the program.
-rem This does not account for the alignment of the _CODE area to 0x0100 (hence
-rem the fudge factor 196 is added).
-rem
-rem -- There must be a better way! ---
-rem
-
-echo (CONFIG_HEAP1_END - 8192)
diff --git a/nuttx/arch/z80/src/mkhpbase.sh b/nuttx/arch/z80/src/mkhpbase.sh
deleted file mode 100755
index 1d7acb7d5..000000000
--- a/nuttx/arch/z80/src/mkhpbase.sh
+++ /dev/null
@@ -1,109 +0,0 @@
-#/bin/sh
-############################################################################
-# arch/z80/src/mkhpbase.sh
-#
-# Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
-# Author: Gregory Nutt <gnutt@nuttx.org>
-#
-# 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 script supports dynamic sizing of HEAP when building with the SDCC
-# toolchain. This script adds up the size of each section of the program.
-# This does not account for the alignment of the _CODE area to 0x0100 (hence
-# the fudge factor 196 is added).
-#
-# -- There must be a better way! ---
-#
-#set -x
-
-MAPFILE=pass1.map
-
-# Verify that pass1.map exists
-
-if [ -e ${MAPFILE} ]; then
-
- # The map file exists, get a list of the sizes of each section
- # This works for SDCC 2.7.0
-
- list=`cat ${MAPFILE} | grep "bytes" | sed -e 's/[ \t][ \t]*/ /g' | cut -d' ' -f3`
-
- # If this is SDCC version 2.6.0, then the list will be empty
-
- if [ -z "${list}" ]; then
-
- # This works for SDCC 2.6.0
-
- list=`cat ${MAPFILE} | grep "SIZE" | sed -e 's/[ \t][ \t]*/ /g' | cut -d' ' -f3`
- fi
-
- # Did we successfully create the list of section sizes?
-
- if [ ! -z "${list}" ]; then
- unset result
- first=yes
-
- # Examine each size in the list
-
- for size in ${list}; do
-
- # Skip over zero-length sizes
-
- if [ "${size}" != "0000" ]; then
-
- # Each hex size must be prefixed with "0x". The
- # First size must also include a left parenthesis
-
- if [ -z "$first" ]; then
- result="${result} + 0x${size}"
- else
- result="(0x${size}"
- unset first
- fi
- fi
- done
-
- # Add a fudge factor to guarantee no overlap between the code and
- # the heap and close the expression with a left parenthesis
-
- echo "${result} + 196)"
- else
-
- # We could not parse the map file. Try to generate some meaningful error
-
- echo "#\"Makefile: Could not parse map file\""
- exit 1
- fi
-else
- # pass1.map does not yet exist. In this case, just output a valid, default heap size
-
- echo "(CONFIG_HEAP1_END - 8192)"
-fi
-
-
diff --git a/nuttx/arch/z80/src/z80/up_mem.h b/nuttx/arch/z80/src/z80/up_mem.h
new file mode 100644
index 000000000..9273d3f89
--- /dev/null
+++ b/nuttx/arch/z80/src/z80/up_mem.h
@@ -0,0 +1,75 @@
+/************************************************************************************
+ * common/sdcc.h
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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 nuttx.lnk__ARCH_Z80_SRC_COMMON_UP_MEM_H
+#define nuttx.lnk__ARCH_Z80_SRC_COMMON_UP_MEM_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+/************************************************************************************
+ * Pre-processor Definitions
+ ************************************************************************************/
+
+/* Locate the IDLE thread stack at the end of RAM. */
+
+#define CONFIG_STACK_END CONFIG_DRAM_SIZE
+#define CONFIG_STACK_BASE (CONFIG_STACK_END - CONFIG_IDLETHREAD_STACKSIZE)
+
+/* The heap then extends from the linker determined beginning of the heap (s__HEAP).
+ * to the bottom of the IDLE thread stack. NOTE: The symbol s__HEAP is not
+ * accessible from C because it does not begin with the _ character. g_heapbase
+ * is defined in z80_head.asm to provide that value to the C code.
+ */
+
+#define CONFIG_HEAP1_END CONFIG_STACK_BASE
+#define CONFIG_HEAP1_BASE g_heapbase
+
+/************************************************************************************
+ * Public variables
+ ************************************************************************************/
+
+/* This is the bottom of the heap as provided by the linker symbol s__HEAP. NOTE:
+ * The symbol s__HEAP is not accessible from C because it does not begin with the _
+ * character. g_heapbase is defined in z80_head.asm to provide that value to the C
+ * code.
+ */
+
+extern const uint16_t g_heapbase;
+
+#endif /* nuttx.lnk__ARCH_Z80_SRC_COMMON_UP_MEM_H */
diff --git a/nuttx/arch/z80/src/z80/z80_head.asm b/nuttx/arch/z80/src/z80/z80_head.asm
index 828a29d77..1bdc6061f 100644
--- a/nuttx/arch/z80/src/z80/z80_head.asm
+++ b/nuttx/arch/z80/src/z80/z80_head.asm
@@ -265,10 +265,13 @@ nointenable::
.area _HOME
.area _CODE
+ .area _INITIALIZER
.area _GSINIT
.area _GSFINAL
.area _DATA
+ .area _INITIALIZED
+ .area _BSEG
.area _BSS
.area _HEAP
@@ -278,6 +281,24 @@ nointenable::
.area _GSINIT
gsinit::
+ ld bc, #l__INITIALIZER
+ ld a, b
+ or a, c
+ jr Z, gsinit_next
+ ld de, #s__INITIALIZED
+ ld hl, #s__INITIALIZER
+ ldir
+gsinit_next:
+
.area _GSFINAL
ret
+;**************************************************************************
+; The start of the heap (SDCC only). Note that is actually resides in
+; the _CODE area (which may be FLASH or ROM)
+;**************************************************************************
+
+ .area _CODE
+_g_heapbase::
+ .dw #s__HEAP
+
diff --git a/nuttx/arch/z80/src/z80/z80_io.c b/nuttx/arch/z80/src/z80/z80_io.c
index bdd55bc6b..1db636d30 100644
--- a/nuttx/arch/z80/src/z80/z80_io.c
+++ b/nuttx/arch/z80/src/z80/z80_io.c
@@ -47,20 +47,6 @@
* Pre-processor Definitions
****************************************************************************/
-#undef ASM
-#undef ENDASM
-#undef NAKED
-
-#ifdef CONFIG_SDCC_OLD
-# define ASM _asm
-# define ENDASM _endasm
-# define NAKED
-#else
-# define ASM __asm
-# define ENDASM __endasm
-# define NAKED __naked
-#endif
-
/****************************************************************************
* Private Data
****************************************************************************/
@@ -83,11 +69,11 @@
void outp(char p, char c)
{
- ASM
+ __asm
ld c, 4(ix) ; port
ld a, 5(ix) ; value
out (c), a
- ENDASM;
+ __endasm;
}
@@ -99,10 +85,10 @@ void outp(char p, char c)
*
****************************************************************************/
-char inp(char p) NAKED
+char inp(char p) __naked
{
- ASM
+ __asm
ld c, 4(ix) ;port
in l, (c)
- ENDASM;
+ __endasm;
}
diff --git a/nuttx/arch/z80/src/z80/z80_irq.c b/nuttx/arch/z80/src/z80/z80_irq.c
index 87ea7063a..be5fba4a9 100644
--- a/nuttx/arch/z80/src/z80/z80_irq.c
+++ b/nuttx/arch/z80/src/z80/z80_irq.c
@@ -48,14 +48,6 @@
* Private Definitions
****************************************************************************/
-#ifdef CONFIG_SDCC_OLD
-# define ASM _asm
-# define ENDASM _endasm
-#else
-# define ASM __asm
-# define ENDASM __endasm
-#endif
-
/****************************************************************************
* Public Data
****************************************************************************/
@@ -88,13 +80,13 @@ volatile chipreg_t *current_regs;
irqstate_t irqsave(void) __naked
{
- ASM
+ __asm
ld a, i ; AF Parity bit holds interrupt state
di ; Interrupts are disabled
push af ; Return AF in HL
pop hl ;
ret ;
- ENDASM;
+ __endasm;
}
/****************************************************************************
@@ -107,7 +99,7 @@ irqstate_t irqsave(void) __naked
void irqrestore(irqstate_t flags) __naked
{
- ASM
+ __asm
di ; Assume disabled
pop hl ; HL = return address
pop af ; AF Parity bit holds interrupt state
@@ -117,5 +109,5 @@ statedisable:
push af ; Restore stack
push hl ;
ret ; and return
- ENDASM;
+ __endasm;
}
diff --git a/nuttx/configs/xtrs/README.txt b/nuttx/configs/xtrs/README.txt
index 154437f1b..02409de73 100644
--- a/nuttx/configs/xtrs/README.txt
+++ b/nuttx/configs/xtrs/README.txt
@@ -97,6 +97,8 @@ selected with:
CONFIG_Z80_TOOLCHAIN_SDCCL=y : SDCC for Linux, MAC OSX or Cygwin (see below)
CONFIG_Z80_TOOLCHAIN_SDCCW=y : SDCC for Win32
+SDCC versions 3.2.0 or higher are recommended.
+
Building the SDCC toolchain
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -128,62 +130,3 @@ and install SDCC:
sudo make install
-SDCC Update
-^^^^^^^^^^^
-
-I have had some problems building sdcc-2.6.0 on my current UBUNTU
-release (9.10). I had other problems building sdcc-2.9.0 on UBUNTU 9.10.
-I suspect that the newer gcc toolchains are causing problems for these
-older SDCC releases.
-
-A 20091106 snapshot did build with no major problems on UBUNTU 9.10, but
-has some compatibilty problems with the older SDCC compiler. For one, you
-will need to change the Z80 assember name and options in the Make.defs
-files as follows:
-
--AS = as-z80
-+AS = sdasz80
-
-- @$(AS) $(ASFLAGS) $2 $1
-+ $(AS) $(ASFLAGS) $1
-
-For another, I had other problems building with that 20091106 that look
-like compiler bugs. If you are using UBUNTU 9.10, you may have to either
-(1) downgrade your GCC compiler to a version 3.x compiler and use one of
-the older stable releases, or (2) wait for the next stable SDCC release
-after 2.9.0.
-
-See below: If you wish to continue using the older SDCC toolchain, you
-must now also add CONFIG_SDCC_OLD=y to your configuration file.
-
-Newer SDCC Versions
-^^^^^^^^^^^^^^^^^^^
-
-This is the text of bug 3468951 reported on the SourceForge website:
-
-"Some obsolete stuff in z80sim port," (submitted by Philipp Klaus Krause):
-
- The simz80 port needs a few updates to work well with current sdcc versions,
- and has some unecessary stuff:
-
- * The linker name for Make.defs should be sdldz80
- * The assembler name for Make.defs should be sdasz80
- * _asm and _endasm in z80_io.c and z80_irq.c should be replaced by __asm
- and __endasm
- * The --stack-auto --int-long-reent --float-reent options or Make.defs should
- be removed, as they have no effect on sdcc's z80 port
- * The current assembler AFAIK can handle long symbol names, so the
- sdcc-2.6.0-asz80-symlen.patch is unnecessary, and it and the corresponding
- section from the README can be removed.
-
-These changes *have* been incorporated but only partially verified. In order
-to get a successful compilation, I had to copy stdarg.h out of the SDCC source
-(at sdcc/device/include/stdarg.h) to include/nuttx/stdarg.h.
-
-There are also some library related issues when you get to the final build
-that I have not looked into yet.
-
-If you want to back out these change and continue to use the older toolchain
-in your build, simpy define the following in your configuration file:
-
- CONFIG_SDCC_OLD=y
diff --git a/nuttx/configs/xtrs/nsh/Make.defs b/nuttx/configs/xtrs/nsh/Make.defs
index db67b931c..d56a65dbe 100644
--- a/nuttx/configs/xtrs/nsh/Make.defs
+++ b/nuttx/configs/xtrs/nsh/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/xtrs/ostest/Make.defs b/nuttx/configs/xtrs/ostest/Make.defs
index 355501737..777491f62 100644
--- a/nuttx/configs/xtrs/ostest/Make.defs
+++ b/nuttx/configs/xtrs/ostest/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/xtrs/pashello/Make.defs b/nuttx/configs/xtrs/pashello/Make.defs
index 641b9426d..3e57e7861 100644
--- a/nuttx/configs/xtrs/pashello/Make.defs
+++ b/nuttx/configs/xtrs/pashello/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/xtrs/sdcc-2.6.0-asz80-symlen.patch b/nuttx/configs/xtrs/sdcc-2.6.0-asz80-symlen.patch
deleted file mode 100644
index d91c18d98..000000000
--- a/nuttx/configs/xtrs/sdcc-2.6.0-asz80-symlen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sdcc/as/z80/asm.h 2007-12-30 16:49:53.000000000 -0600
-+++ sdcc.orig/as/z80/asm.h 2007-12-30 16:49:14.000000000 -0600
-@@ -65,7 +65,7 @@
- #define RTTERM ')' /* Right expression delimeter */
-
- #ifdef SDK
--#define NCPS 80 /* characters per symbol */
-+#define NCPS 32 /* characters per symbol */
- #else /* SDK */
- #define NCPS 8 /* Chars. per symbol */
- #endif /* SDK */
diff --git a/nuttx/configs/z80sim/README.txt b/nuttx/configs/z80sim/README.txt
index c85e236ef..37db83533 100644
--- a/nuttx/configs/z80sim/README.txt
+++ b/nuttx/configs/z80sim/README.txt
@@ -42,10 +42,7 @@ Configuring NuttX
reconfiguration process.
2. The default setup for this configuration uses a windows native build.
- As of this writing, the native Windows build still does not work. This
- is due to issues in arch/z80/src/Makefile and in the Bash script
- arch/z80/src/mkhpbase.sh which, of course, cannot be used in a Windows
- CMD.exe shell. These configuration is broken for the time being.
+ As of this writing, the native Windows build still does not work.
This configuration was last verified sucessfully prior to the
the configure to Kconfig/mconf tool using SDCC 2.6.0 built to run
@@ -104,6 +101,8 @@ selected with:
CONFIG_Z80_TOOLCHAIN_SDCCL=y : SDCC for Linux, MAC OSX or Cygwin (see below)
CONFIG_Z80_TOOLCHAIN_SDCCW=y : SDCC for Win32
+SDCC versions 3.2.0 or higher are recommended.
+
Building the SDCC toolchain
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -120,12 +119,6 @@ compatible with this build. First start with the usual steps
cd sdcc
./configure
-But before making, we need to apply a patch to the SDCC 2.6.0 source
-so that the z80 assembler can handle long symbol names
-
- Apply sdcc-2.6.0-asz80-symlen.patch
- cd sdcc/device/lib
-
Then make the SDCC binaries
cd sdcc
@@ -135,62 +128,3 @@ and install SDCC:
sudo make install
-SDCC Update
-^^^^^^^^^^^
-
-I have had some problems building sdcc-2.6.0 on my current UBUNTU
-release (9.10). I had other problems building sdcc-2.9.0 on UBUNTU 9.10.
-I suspect that the newer gcc toolchains are causing problems for these
-older SDCC releases.
-
-A 20091106 snapshot did build with no major problems on UBUNTU 9.10, but
-has some compatibilty problems with the older SDCC compiler. For one, you
-will need to change the Z80 assember name and options in the Make.defs
-files as follows:
-
--AS = as-z80
-+AS = sdasz80
-
-- @$(AS) $(ASFLAGS) $2 $1
-+ $(AS) $(ASFLAGS) $1
-
-For another, I had other problems building with that 20091106 that look
-like compiler bugs. If you are using UBUNTU 9.10, you may have to either
-(1) downgrade your GCC compiler to a version 3.x compiler and use one of
-the older stable releases, or (2) wait for the next stable SDCC release
-after 2.9.0.
-
-See below: If you wish to continue using the older SDCC toolchain, you
-must now also add CONFIG_SDCC_OLD=y to your configuration file.
-
-Newer SDCC Versions
-^^^^^^^^^^^^^^^^^^^
-
-This is the text of bug 3468951 reported on the SourceForge website:
-
-"Some obsolete stuff in z80sim port," (submitted by Philipp Klaus Krause):
-
- The simz80 port needs a few updates to work well with current sdcc versions,
- and has some unecessary stuff:
-
- * The linker name for Make.defs should be sdldz80
- * The assembler name for Make.defs should be sdasz80
- * _asm and _endasm in z80_io.c and z80_irq.c should be replaced by __asm
- and __endasm
- * The --stack-auto --int-long-reent --float-reent options or Make.defs should
- be removed, as they have no effect on sdcc's z80 port
- * The current assembler AFAIK can handle long symbol names, so the
- sdcc-2.6.0-asz80-symlen.patch is unnecessary, and it and the corresponding
- section from the README can be removed.
-
-These changes *have* been incorporated but only partially verified. In order
-to get a successful compilation, I had to copy stdarg.h out of the SDCC source
-(at sdcc/device/include/stdarg.h) to include/nuttx/stdarg.h.
-
-There are also some library related issues when you get to the final build
-that I have not looked into yet.
-
-If you want to back out these change and continue to use the older toolchain
-in your build, simpy define the following in your configuration file:
-
- CONFIG_SDCC_OLD=y
diff --git a/nuttx/configs/z80sim/nsh/Make.defs b/nuttx/configs/z80sim/nsh/Make.defs
index 1edd5fdcf..4aa82ae71 100644
--- a/nuttx/configs/z80sim/nsh/Make.defs
+++ b/nuttx/configs/z80sim/nsh/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/z80sim/ostest/Make.defs b/nuttx/configs/z80sim/ostest/Make.defs
index 91d30a061..be0fc2470 100644
--- a/nuttx/configs/z80sim/ostest/Make.defs
+++ b/nuttx/configs/z80sim/ostest/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/z80sim/pashello/Make.defs b/nuttx/configs/z80sim/pashello/Make.defs
index 2dca56a0e..05ece7666 100644
--- a/nuttx/configs/z80sim/pashello/Make.defs
+++ b/nuttx/configs/z80sim/pashello/Make.defs
@@ -58,18 +58,10 @@ endif
CROSSDEV =
CC = sdcc
CPP = sdcpp
-
-ifeq ($(CONFIG_SDCC_OLD),y)
- LD = link-z80
- AS = as-z80
- AR = sdcclib -a
- ARCHCPUFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
-else
- LD = sdldz80
- AS = sdasz80
- AR = sdar -r
- ARCHCPUFLAGS = -mz80
-endif
+LD = sdldz80
+AS = sdasz80
+AR = sdar -r
+ARCHCPUFLAGS = -mz80
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = --debug
@@ -84,7 +76,7 @@ ARCHINCLUDES = -I. -I$(TOPDIR)$(DELIM)include
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-AFLAGS = -x -a -l -o -s
+AFLAGS = -x -a -l -o -s -g
SDCCLIB = z80.lib
diff --git a/nuttx/configs/z80sim/sdcc-2.6.0-asz80-symlen.patch b/nuttx/configs/z80sim/sdcc-2.6.0-asz80-symlen.patch
deleted file mode 100644
index d91c18d98..000000000
--- a/nuttx/configs/z80sim/sdcc-2.6.0-asz80-symlen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sdcc/as/z80/asm.h 2007-12-30 16:49:53.000000000 -0600
-+++ sdcc.orig/as/z80/asm.h 2007-12-30 16:49:14.000000000 -0600
-@@ -65,7 +65,7 @@
- #define RTTERM ')' /* Right expression delimeter */
-
- #ifdef SDK
--#define NCPS 80 /* characters per symbol */
-+#define NCPS 32 /* characters per symbol */
- #else /* SDK */
- #define NCPS 8 /* Chars. per symbol */
- #endif /* SDK */
diff --git a/nuttx/configs/z80sim/src/z80_lowputc.c b/nuttx/configs/z80sim/src/z80_lowputc.c
index 9b46b4880..9bfe266c1 100644
--- a/nuttx/configs/z80sim/src/z80_lowputc.c
+++ b/nuttx/configs/z80sim/src/z80_lowputc.c
@@ -76,15 +76,6 @@
void z80_lowputc(char ch) __naked
{
-#ifdef CONFIG_SDCC_OLD
- _asm
- ld hl, #2
- add hl, sp
- ld a, (hl)
- out (0xbe), a
- ret
- _endasm;
-#else
__asm__ (
"\tld hl, #2\n"
"\tadd hl, sp\n"
@@ -92,7 +83,6 @@ void z80_lowputc(char ch) __naked
"\tout (0xbe), a\n"
"\tret\n"
);
-#endif
}
/********************************************************************************
@@ -104,19 +94,10 @@ void z80_lowputc(char ch) __naked
char z80_lowgetc(void) __naked
{
-#ifdef CONFIG_SDCC_OLD
- _asm
- in a, (0xbe)
- ld l, a
- ld h, #0
- ret
- _endasm;
-#else
__asm__ (
"\tin a, (0xbe)\n"
"\tld l, a\n"
"\tld h, #0\n"
"\tret\n"
);
-#endif
}