More z8 compilation changes
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@671 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
parent
925e7904eb
commit
6544f6e6ea
45
nuttx/TODO
45
nuttx/TODO
|
@ -20,8 +20,8 @@ NuttX TODO List (Last updated January 6, 2008)
|
|||
(1) ARM/DM320 (arch/arm/src/dm320/)
|
||||
(2) ARM/LPC214x (arch/arm/src/lpc214x/)
|
||||
(4) pjrc-8052 / MCS51 (arch/pjrc-8051/)
|
||||
(3) z80/z8 (arch/z80/)
|
||||
(7) z16 (arch/z16/)
|
||||
(4) z80/z8 (arch/z80/)
|
||||
(6) z16 (arch/z16/)
|
||||
|
||||
o Task/Scheduler (sched/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -350,8 +350,8 @@ o pjrc-8052 / MCS51 (arch/pjrc-8051/)
|
|||
Status: Open
|
||||
Priority: Low -- only because there as so many other issues with 8051
|
||||
|
||||
o z80 (arch/z80)
|
||||
^^^^^^^^^^^^^^^
|
||||
o z80/z8 (arch/z80)
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Description: The SDCC version the same problems with interger overflow during
|
||||
compilation as described for pjrc-8051. At typical cause is code like
|
||||
|
@ -372,6 +372,12 @@ o z80 (arch/z80)
|
|||
Status: Open
|
||||
Priority: Low, thought to be cosmetic. I think this is a consequence of
|
||||
replacing vs. inserting the library.
|
||||
|
||||
Description: The ZDS-II compiler (version 4.10.1) fails with an internal error
|
||||
while compiler mm/mm_initialize. This has been reported as
|
||||
incident 81509.
|
||||
Status: Open
|
||||
Priority: High
|
||||
|
||||
o z16 (arch/z16)
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
@ -407,15 +413,16 @@ o z16 (arch/z16)
|
|||
81400). You can see the status of the bug report (and lots more
|
||||
technical detail) here:
|
||||
http://support.zilog.com/support/incident/incident_support.asp?iIncidentId=81400&iSiteId=1&chLanguageCode=ENG
|
||||
|
||||
Summary of ZiLOG analysis: "This is a ZNEO compiler problem. ... [a] workaround
|
||||
is to replace:
|
||||
if ( !timerid || (clockid != 0) )
|
||||
By:
|
||||
if ((clockid != 0) || !timerid)"
|
||||
|
||||
Status: Open
|
||||
Priority: Medium-High
|
||||
|
||||
Description: The Pascal add-on does not work with the Z16F port. This is
|
||||
because the Z16F is big-endian (see duplicate problem report under
|
||||
"Pascal Add-On").
|
||||
Status: Open
|
||||
Priority: Medium
|
||||
|
||||
Description: The pascal add-on does not work with the z16f (that is
|
||||
configuration z16f2800100zcog/pashello). This appears to be
|
||||
another ZDS-II error: when executing the instruction
|
||||
|
@ -425,6 +432,24 @@ o z16 (arch/z16)
|
|||
information. The cause of the failure appears to be that
|
||||
the referenced switch data is bad.
|
||||
This is submited as ZiLOG support incident 81459.
|
||||
|
||||
Summary of ZiLOG analysis: "This is a ZNEO run time library problem.
|
||||
One workaround is to replace the line 58 in uwcase.asm
|
||||
|
||||
From:
|
||||
ADD R9,#4 ; Skip handler
|
||||
To:
|
||||
ADD R9,#2 ; Skip handler
|
||||
|
||||
And add uwcase.asm to the project.
|
||||
|
||||
If the customer does not want to modify uwcase.asm then the other
|
||||
workaround is to add a dummy case and make it same as default:
|
||||
|
||||
case 0x8000:
|
||||
default:
|
||||
|
||||
This will make sure that uwcase is not called but ulcase is called."
|
||||
Status: Open
|
||||
Priority: Medium
|
||||
|
||||
|
|
|
@ -77,4 +77,3 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#endif /* __ARCH_ARCH_H */
|
||||
|
||||
|
|
|
@ -89,11 +89,6 @@
|
|||
* void irqrestore(irqstate_t flags);
|
||||
*/
|
||||
|
||||
#ifdef __ZILOG__
|
||||
# define irqsave() TDI()
|
||||
# define irqrestore(f) RI(f)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
@ -117,7 +112,7 @@ struct xcptcontext
|
|||
*/
|
||||
|
||||
#ifndef CONFIG_DISABLE_SIGNALS
|
||||
void *sigdeliver; /* Actual type is sig_deliver_t */
|
||||
CODE void *sigdeliver; /* Actual type is sig_deliver_t */
|
||||
|
||||
/* The following retains that state during signal execution */
|
||||
|
||||
|
@ -147,6 +142,9 @@ extern "C" {
|
|||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
EXTERN irqstate_t irqsave(void);
|
||||
EXTERN void irqrestore(irqstate_t flags);
|
||||
|
||||
#undef EXTERN
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -85,12 +85,12 @@ 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 "# define CONFIG_HEAP1_BASE ((uint16)&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 "# define CONFIG_HEAP1_END ((uint16)&far_heaptop)" >>up_mem.h
|
||||
@echo "#endif" >>up_mem.h
|
||||
@echo "" >>up_mem.h
|
||||
@echo "#endif /* __UP_MEM_H */" >>up_mem.h
|
||||
|
|
|
@ -109,7 +109,11 @@ static void _up_assert(int errorcode) /* __attribute__ ((noreturn)) */
|
|||
* Name: up_assert
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
void up_assert(const ubyte *filename, int lineno)
|
||||
#else
|
||||
void up_assert(void)
|
||||
#endif
|
||||
{
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
_TCB *rtcb = (_TCB*)g_readytorun.head;
|
||||
|
@ -117,12 +121,20 @@ void up_assert(const ubyte *filename, int lineno)
|
|||
|
||||
up_ledon(LED_ASSERTION);
|
||||
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
lldbg("Assertion failed at file:%s line: %d task: %s\n",
|
||||
filename, lineno, rtcb->name);
|
||||
#else
|
||||
lldbg("Assertion failed at file:%s line: %d\n",
|
||||
filename, lineno);
|
||||
#endif
|
||||
#else
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
lldbg("Assertion failed: task: %s\n", rtcb->name);
|
||||
#else
|
||||
lldbg("Assertion failed\n");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
up_stackdump();
|
||||
|
@ -134,7 +146,11 @@ void up_assert(const ubyte *filename, int lineno)
|
|||
* Name: up_assert_code
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
void up_assert_code(const ubyte *filename, int lineno, int errorcode)
|
||||
#else
|
||||
void up_assert_code(int errorcode)
|
||||
#endif
|
||||
{
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
_TCB *rtcb = (_TCB*)g_readytorun.head;
|
||||
|
@ -142,12 +158,20 @@ void up_assert_code(const ubyte *filename, int lineno, int errorcode)
|
|||
|
||||
up_ledon(LED_ASSERTION);
|
||||
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
lldbg("Assertion failed at file:%s line: %d task: %s error code: %d\n",
|
||||
filename, lineno, rtcb->name, errorcode);
|
||||
#else
|
||||
lldbg("Assertion failed at file:%s line: %d error code: %d\n",
|
||||
filename, lineno, errorcode);
|
||||
#endif
|
||||
#else
|
||||
#if CONFIG_TASK_NAME_SIZE > 0
|
||||
lldbg("Assertion failed: task: %s error code: %d\n", rtcb->name, errorcode);
|
||||
#else
|
||||
lldbg("Assertion failed: error code: %d\n", errorcode);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
up_stackdump();
|
||||
|
|
|
@ -81,8 +81,8 @@
|
|||
void up_sigdeliver(void)
|
||||
{
|
||||
#ifndef CONFIG_DISABLE_SIGNALS
|
||||
_TCB *rtcb = (_TCB*)g_readytorun.head;
|
||||
uint32 regs[XCPTCONTEXT_REGS];
|
||||
FAR _TCB *rtcb = (_TCB*)g_readytorun.head;
|
||||
uint16 regs[XCPTCONTEXT_REGS];
|
||||
sig_deliver_t sigdeliver;
|
||||
|
||||
/* Save the errno. This must be preserved throughout the signal handling
|
||||
|
|
|
@ -33,17 +33,17 @@
|
|||
#
|
||||
############################################################################
|
||||
|
||||
HEAD_ASRC = z8_head.asm
|
||||
HEAD_ASRC = #z8_head.asm
|
||||
|
||||
CMN_ASRCS =
|
||||
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_reprioritizertr.c up_copystate.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
|
||||
|
||||
CHIP_ASRCS = z8_saveusercontext.asm z8_restoreusercontext.asm
|
||||
CHIP_CSRCS =
|
||||
CHIP_ASRCS = #z8_saveusercontext.asm z8_restoreusercontext.asm
|
||||
CHIP_CSRCS = #z8_initialstate.c z8_irq.c
|
||||
|
||||
|
|
|
@ -39,10 +39,10 @@ CMN_ASRCS =
|
|||
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_reprioritizertr.c up_copystate.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
|
||||
|
||||
CHIP_ASRCS = z80_saveusercontext.asm z80_restoreusercontext.asm
|
||||
CHIP_CSRCS = z80_initialstate.c
|
||||
CHIP_CSRCS = z80_initialstate.c z80_irq.c
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* common/up_irq.c
|
||||
* arch/z80/src/z80/z80_irq.c
|
||||
*
|
||||
* Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
@ -41,6 +41,7 @@
|
|||
************************************************************/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
/************************************************************
|
||||
* Definitions
|
||||
|
@ -53,7 +54,7 @@
|
|||
#undef ASSERTCODE
|
||||
#undef DEBUGASSERT
|
||||
|
||||
#if defined(__GNUC__) || defined(SDCC)
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
|
||||
# define ASSERT(f) \
|
||||
{ if (!(f)) up_assert((const ubyte *)__FILE__, (int)__LINE__); }
|
||||
|
@ -105,7 +106,7 @@ extern "C" {
|
|||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) || defined(SDCC)
|
||||
#ifdef CONFIG_HAVE_FILENAME
|
||||
EXTERN void up_assert(const ubyte *filename, int linenum);
|
||||
EXTERN void up_assert_code(const ubyte *filename, int linenum,
|
||||
int error_code);
|
||||
|
|
|
@ -375,16 +375,6 @@ EXTERN void up_allocate_heap(FAR void **heap_start, size_t *heap_size);
|
|||
|
||||
EXTERN boolean up_interrupt_context(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_disable_irq
|
||||
*
|
||||
* Description:
|
||||
* Disable the IRQ specified by 'irq'
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
EXTERN void up_disable_irq(int irq);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_enable_irq
|
||||
*
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
/* Intriniscs */
|
||||
|
||||
# define CONFIG_HAVE_FUNCTIONNAME 1 /* Has __FUNCTION__ */
|
||||
# define CONFIG_HAVE_FILENAME 1 /* Has __FILE__ */
|
||||
|
||||
/* Attributes
|
||||
*
|
||||
|
@ -135,6 +136,7 @@
|
|||
/* Intriniscs */
|
||||
|
||||
# define CONFIG_HAVE_FUNCTIONNAME 1 /* Has __FUNCTION__ */
|
||||
# define CONFIG_HAVE_FILENAME 1 /* Has __FILE__ */
|
||||
|
||||
/* Pragmas
|
||||
*
|
||||
|
@ -240,6 +242,7 @@
|
|||
/* Intriniscs */
|
||||
|
||||
# define CONFIG_HAVE_FUNCTIONNAME 1 /* Has __FUNCTION__ */
|
||||
# define CONFIG_HAVE_FILENAME 1 /* Has __FILE__ */
|
||||
|
||||
/* Attributes
|
||||
*
|
||||
|
@ -313,6 +316,7 @@
|
|||
# undef CONFIG_CPP_HAVE_VARARGS
|
||||
# undef CONFIG_CPP_HAVE_WARNING
|
||||
# undef CONFIG_HAVE_FUNCTIONNAME
|
||||
# undef CONFIG_HAVE_FILENAME
|
||||
# undef CONFIG_HAVE_WEAKFUNCTIONS
|
||||
# define weak_alias(name, aliasname)
|
||||
# define weak_function
|
||||
|
|
Loading…
Reference in New Issue