From 174318319bdeb31c7037dff0faab54c80b3d7ebb Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 6 Jan 2012 19:29:37 +0000 Subject: [PATCH] Incorporate Z80 bugfixes reported by Phillip Klaus Krause git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4270 42af7a65-404d-4744-a932-0658087f49c3 --- TODO | 19 +++++++++++++++++-- arch/arm/src/lpc17xx/lpc17_can.c | 2 +- configs/xtrs/README.txt | 31 +++++++++++++++++++++++++++++++ configs/z80sim/README.txt | 28 +++++++++++++++++++++++++++- include/arpa/inet.h | 8 ++++---- 5 files changed, 80 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 77daa2d12d..a0d7bf4105 100644 --- a/TODO +++ b/TODO @@ -15,7 +15,7 @@ nuttx/ (5) Binary loaders (binfmt/) (16) Network (net/, drivers/net) (2) USB (drivers/usbdev, drivers/usbhost) - (7) Libraries (lib/) + (8) Libraries (lib/) (10) File system/Generic drivers (fs/, drivers/) (1) Graphics subystem (graphics/) (1) Pascal add-on (pcode/) @@ -465,7 +465,7 @@ o Libraries (lib/) Title: FGETS IMPLEMENTATION Description: fgets implementation does not use C-buffered I/O, but rather talks to serial driver directly via read(). It includes VT-100 - specific editting commands. This gets should be renamed readlin() + specific editting commands. This gets should be renamed readline() and a more generic fgets() should be implemented. Status: Open Priority: Low (unless you are using mixed C-buffered I/O with fgets and @@ -519,6 +519,21 @@ o Libraries (lib/) Priority: Medium. This kind of operation is probably not very common in deeply embedded systems but is required by standards. + Title: DIVIDE BY ZERO + Description: This is bug 3468949 on the SourceForge website (submitted by + Philipp Klaus Krause): + "lib_strtod.c does contain divisions by zero in lines 70 and 96. + AFAIK, unlike for Java, division by zero is not a reliable way to + get infinity in C. AFAIK compilers are allowed e.g. give a compile- + time error, and some, such as sdcc, do. AFAIK, C implementations + are not even required to support infinity. In C99 the macro isinf() + could replace the first use of division by zero. Unfortunately, the + macro INFINITY from math.h probably can't replce the second division + by zero, since it will result in a compile-time diagnostic, if the + implementation does not support infinity." + Status: Open + Priority: + o File system / Generic drivers (fs/, drivers/) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/arch/arm/src/lpc17xx/lpc17_can.c b/arch/arm/src/lpc17xx/lpc17_can.c index 43c7399eb0..18fb1654d8 100755 --- a/arch/arm/src/lpc17xx/lpc17_can.c +++ b/arch/arm/src/lpc17xx/lpc17_can.c @@ -1022,7 +1022,7 @@ static int can_bittiming(struct up_dev_s *priv) uint32_t ts2; uint32_t sjw; - canllvdbg("CAN%d PCLK1: %d baud: %d\n", priv->port, + canllvdbg("CAN%d PCLK: %d baud: %d\n", priv->port, CAN_CLOCK_FREQUENCY(priv->divisor), priv->baud); /* Try to get 14 quanta in one bit_time. That is based on the idea that the ideal diff --git a/configs/xtrs/README.txt b/configs/xtrs/README.txt index 5137d1674d..a4067b3e43 100644 --- a/configs/xtrs/README.txt +++ b/configs/xtrs/README.txt @@ -6,6 +6,16 @@ Current status The xtrs port is not operational yet; some work still needs to be done. +Contents +^^^^^^^^ + + o Getting a TRS80 emulator and DOS disks + o Loading an executable into xtrs + o Configuring NuttX + o Building the SDCC toolchain + o SDCC Update + o Newer SDCC Versions + Getting a TRS80 emulator and DOS disks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -124,3 +134,24 @@ like compiler bugs. If you are using UBUNTU 9.10, you may have to either the older stable releases, or (2) wait for the next stable SDCC release after 2.9.0. +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 not yet been incorporated or verified. \ No newline at end of file diff --git a/configs/z80sim/README.txt b/configs/z80sim/README.txt index 2e345d3208..2a610899c4 100644 --- a/configs/z80sim/README.txt +++ b/configs/z80sim/README.txt @@ -8,6 +8,14 @@ http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/misc/sims/z80sim The SDCC toolchain is available from http://sdcc.sourceforge.net/. All testing has been performed using version 2.6.0 of the SDCC toolchain. +Contents +^^^^^^^^ + + o Configuring NuttX + o Building the SDCC toolchain + o SDCC Update + o Newer SDCC Versions + Configuring NuttX ^^^^^^^^^^^^^^^^^ @@ -99,6 +107,24 @@ like compiler bugs. If you are using UBUNTU 9.10, you may have to either the older stable releases, or (2) wait for the next stable SDCC release after 2.9.0. +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 not yet been incorporated or verified. \ No newline at end of file diff --git a/include/arpa/inet.h b/include/arpa/inet.h index 73b2f16fa5..0380c5f779 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -69,10 +69,10 @@ ((((unsigned short)(ns)) >> 8) & 0x00ff)) # define HTONL(nl) \ (unsigned long) \ - (((((unsigned long)(nl)) & 0x000000ffL) << 24) | \ - ((((unsigned long)(nl)) & 0x0000ff00L) << 8) | \ - ((((unsigned long)(nl)) & 0x00ff0000L) >> 8) | \ - ((((unsigned long)(nl)) & 0xff000000L) >> 24)) + (((((unsigned long)(nl)) & 0x000000ffUL) << 24) | \ + ((((unsigned long)(nl)) & 0x0000ff00UL) << 8) | \ + ((((unsigned long)(nl)) & 0x00ff0000UL) >> 8) | \ + ((((unsigned long)(nl)) & 0xff000000UL) >> 24)) #endif #define NTOHS(hs) HTONS(hs)