diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-07 19:02:57 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-07 19:02:57 +0000 |
commit | bf0e0bb95ec767c971d01d70f1ba027ef585ce14 (patch) | |
tree | 59900051a4e3fa3ae3024115f7532c2eeda7aefd /nuttx/configs/z80sim | |
parent | 3c5cba9b94c3f5365034f044e18a58d425508c87 (diff) | |
download | px4-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/configs/z80sim')
-rw-r--r-- | nuttx/configs/z80sim/README.txt | 72 | ||||
-rw-r--r-- | nuttx/configs/z80sim/nsh/Make.defs | 18 | ||||
-rw-r--r-- | nuttx/configs/z80sim/ostest/Make.defs | 18 | ||||
-rw-r--r-- | nuttx/configs/z80sim/pashello/Make.defs | 18 | ||||
-rw-r--r-- | nuttx/configs/z80sim/sdcc-2.6.0-asz80-symlen.patch | 11 | ||||
-rw-r--r-- | nuttx/configs/z80sim/src/z80_lowputc.c | 19 |
6 files changed, 18 insertions, 138 deletions
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 } |