From ca7858bb8856f1afcc537f39763b7c951e5068d3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 26 Jul 2000 19:28:11 +0000 Subject: Port of RTEMS to the Texas Instruments C3x/C4x DSP families including a BSP (c4xsim) supporting the simulator included with gdb. This port was done by Joel Sherrill and Jennifer Averett of OAR Corporation. Also included with this port is a space/time optimization to eliminate FP context switch management on CPUs without hardware or software FP. An issue with this port was that sizeof(unsigned32) = sizeof(unsigned8) on this CPU. This required addressing alignment checks and assumptions as well as fixing code that assumed sizeof(unsigned32) == 4. --- c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore | 2 ++ c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore | 2 ++ c/src/lib/libbsp/c4x/shared/.cvsignore | 13 +++++++++++++ c/src/lib/libbsp/shared/main.c | 2 +- c/src/lib/libc/malloc.c | 4 ++-- c/src/libmisc/monitor/mon-monitor.c | 4 ++++ c/src/libnetworking/pppd/fsm.c | 2 +- c/src/libnetworking/pppd/fsm.h | 2 +- c/src/libnetworking/pppd/upap.c | 2 +- c/src/librpc/Makefile.am | 4 ++++ c/src/librpc/configure.in | 1 + c/src/tests/sptests/spsize/size.c | 2 ++ c/src/tests/tmtests/tm26/task1.c | 15 +++++++++++++++ c/src/wrapup/Makefile.am | 4 ++-- cpukit/libcsupport/src/malloc.c | 4 ++-- cpukit/libmisc/monitor/mon-monitor.c | 4 ++++ cpukit/librpc/Makefile.am | 4 ++++ cpukit/pppd/fsm.c | 2 +- cpukit/pppd/fsm.h | 2 +- cpukit/pppd/upap.c | 2 +- cpukit/score/src/thread.c | 2 ++ cpukit/score/src/threadclose.c | 4 +++- cpukit/score/src/threaddispatch.c | 2 +- cpukit/score/src/threadinitialize.c | 2 ++ cpukit/score/src/threadloadenv.c | 2 ++ make/custom/c4xsim.cfg | 3 ++- testsuites/sptests/spsize/size.c | 2 ++ testsuites/tmtests/tm26/task1.c | 15 +++++++++++++++ 28 files changed, 93 insertions(+), 16 deletions(-) create mode 100644 c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore create mode 100644 c/src/lib/libbsp/c4x/shared/.cvsignore diff --git a/c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore b/c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore index 282522db03..10bb4996d3 100644 --- a/c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore +++ b/c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore @@ -1,2 +1,4 @@ Makefile Makefile.in +configure +aclocal.m4 diff --git a/c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore b/c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/c/src/lib/libbsp/c4x/shared/.cvsignore b/c/src/lib/libbsp/c4x/shared/.cvsignore new file mode 100644 index 0000000000..525275c115 --- /dev/null +++ b/c/src/lib/libbsp/c4x/shared/.cvsignore @@ -0,0 +1,13 @@ +Makefile +Makefile.in +aclocal.m4 +config.cache +config.guess +config.log +config.status +config.sub +configure +depcomp +install-sh +missing +mkinstalldirs diff --git a/c/src/lib/libbsp/shared/main.c b/c/src/lib/libbsp/shared/main.c index eb2c475ab5..9f5beea859 100644 --- a/c/src/lib/libbsp/shared/main.c +++ b/c/src/lib/libbsp/shared/main.c @@ -20,7 +20,7 @@ char *rtems_progname; -rtems_interrupt_level bsp_isr_level; +extern rtems_interrupt_level bsp_isr_level; int main(int argc, char **argv) { diff --git a/c/src/lib/libc/malloc.c b/c/src/lib/libc/malloc.c index 0396b051be..d3121f90b4 100644 --- a/c/src/lib/libc/malloc.c +++ b/c/src/lib/libc/malloc.c @@ -82,9 +82,9 @@ void RTEMS_Malloc_Initialize( /* DOES NOT RETURN!!! */ } - if (u32_address & (CPU_ALIGNMENT-1)) { + if (u32_address & (CPU_HEAP_ALIGNMENT-1)) { old_address = u32_address; - u32_address = (u32_address + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1); + u32_address = (u32_address + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1); /* * adjust the length by whatever we aligned by diff --git a/c/src/libmisc/monitor/mon-monitor.c b/c/src/libmisc/monitor/mon-monitor.c index a531fc003c..ef86decda9 100644 --- a/c/src/libmisc/monitor/mon-monitor.c +++ b/c/src/libmisc/monitor/mon-monitor.c @@ -525,7 +525,11 @@ rtems_monitor_task( debugee = _Thread_Executing; rp = &debugee->Registers; +#if (CPU_HARDWARE_FP == TRUE) || (CPU_SOFTWARE_FP == TRUE) fp = (rtems_context_fp *) debugee->fp_context; /* possibly 0 */ +#else + fp = 0; +#endif if (0 == rtems_monitor_command_read(command_buffer, &argc, argv)) continue; diff --git a/c/src/libnetworking/pppd/fsm.c b/c/src/libnetworking/pppd/fsm.c index aeb4564b98..09b67486e5 100644 --- a/c/src/libnetworking/pppd/fsm.c +++ b/c/src/libnetworking/pppd/fsm.c @@ -36,7 +36,7 @@ #include "fsm.h" static void fsm_timeout __P((void *)); -static void fsm_rconfreq __P((fsm *, int, u_char *, int)); +static void fsm_rconfreq __P((fsm *, u_char, u_char *, int)); static void fsm_rconfack __P((fsm *, int, u_char *, int)); static void fsm_rconfnakrej __P((fsm *, int, int, u_char *, int)); static void fsm_rtermreq __P((fsm *, int, u_char *, int)); diff --git a/c/src/libnetworking/pppd/fsm.h b/c/src/libnetworking/pppd/fsm.h index f289429fdc..c04050a369 100644 --- a/c/src/libnetworking/pppd/fsm.h +++ b/c/src/libnetworking/pppd/fsm.h @@ -135,7 +135,7 @@ void fsm_open __P((fsm *)); void fsm_close __P((fsm *, char *)); void fsm_input __P((fsm *, u_char *, int)); void fsm_protreject __P((fsm *)); -void fsm_sdata __P((fsm *, int, int, u_char *, int)); +void fsm_sdata __P((fsm *, u_char, u_char, u_char *, int)); /* diff --git a/c/src/libnetworking/pppd/upap.c b/c/src/libnetworking/pppd/upap.c index f2cdb921c5..78b3b2f5f7 100644 --- a/c/src/libnetworking/pppd/upap.c +++ b/c/src/libnetworking/pppd/upap.c @@ -72,7 +72,7 @@ static void upap_rauthreq __P((upap_state *, u_char *, int, int)); static void upap_rauthack __P((upap_state *, u_char *, int, int)); static void upap_rauthnak __P((upap_state *, u_char *, int, int)); static void upap_sauthreq __P((upap_state *)); -static void upap_sresp __P((upap_state *, int, int, char *, int)); +static void upap_sresp __P((upap_state *, u_char, u_char, char *, int)); /* diff --git a/c/src/librpc/Makefile.am b/c/src/librpc/Makefile.am index d9429399ec..2377188d12 100644 --- a/c/src/librpc/Makefile.am +++ b/c/src/librpc/Makefile.am @@ -5,7 +5,11 @@ AUTOMAKE_OPTIONS = foreign 1.4 ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal +if rpc_not_supported +SUBDIRS = +else SUBDIRS = include src +endif EXTRA_DIST = README_RTEMS diff --git a/c/src/librpc/configure.in b/c/src/librpc/configure.in index 5edbe4076a..9d35281f0e 100644 --- a/c/src/librpc/configure.in +++ b/c/src/librpc/configure.in @@ -26,6 +26,7 @@ RTEMS_CANONICALIZE_TOOLS RTEMS_CHECK_NETWORKING(RTEMS_BSP) AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes") +AM_CONDITIONAL(rpc_not_supported, test "$RTEMS_CPU" = "c4x") RTEMS_PROJECT_ROOT diff --git a/c/src/tests/sptests/spsize/size.c b/c/src/tests/sptests/spsize/size.c index c7cae3bce0..3ceddcf699 100644 --- a/c/src/tests/sptests/spsize/size.c +++ b/c/src/tests/sptests/spsize/size.c @@ -356,7 +356,9 @@ uninitialized = (sizeof _Thread_Ready_chain) + (sizeof _Thread_Executing) + (sizeof _Thread_Heir) + +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) (sizeof _Thread_Allocated_fp) + +#endif (sizeof _Thread_Internal_information) + (sizeof _Thread_Idle) + diff --git a/c/src/tests/tmtests/tm26/task1.c b/c/src/tests/tmtests/tm26/task1.c index 248ffae296..b660b36b21 100644 --- a/c/src/tests/tmtests/tm26/task1.c +++ b/c/src/tests/tmtests/tm26/task1.c @@ -281,7 +281,9 @@ rtems_task Low_task( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); } @@ -306,8 +308,10 @@ rtems_task Floating_point_task_1( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_2 */ @@ -327,8 +331,10 @@ rtems_task Floating_point_task_1( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_2 */ } @@ -356,8 +362,10 @@ rtems_task Floating_point_task_2( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_1 */ @@ -493,6 +501,7 @@ void complete_test( void ) 0 ); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) put_time( "fp context switch: restore 1st FP task", context_switch_restore_1st_fp_time, @@ -524,6 +533,12 @@ void complete_test( void ) 0, 0 ); +#else + puts( "fp context switch: restore 1st FP task - NA" ); + puts( "fp context switch: save idle, restore initialized - NA" ); + puts( "fp context switch: save idle, restore idle - NA" ); + puts( "fp context switch: save initialized, restore initialized - NA" ); +#endif put_time( "_Thread_Resume", diff --git a/c/src/wrapup/Makefile.am b/c/src/wrapup/Makefile.am index 4c6d14a014..c42e086c2e 100644 --- a/c/src/wrapup/Makefile.am +++ b/c/src/wrapup/Makefile.am @@ -13,8 +13,8 @@ LIB = $(PROJECT_RELEASE)/lib/librtemsall${LIB_VARIANT}.a if HAS_NETWORKING LIBNETWORKING = $(PROJECT_RELEASE)/lib/libnetworking$(LIB_VARIANT).a \ - $(PROJECT_RELEASE)/lib/librpc$(LIB_VARIANT).a \ - $(PROJECT_RELEASE)/lib/libxdr$(LIB_VARIANT).a + $(wildcard $(PROJECT_RELEASE)/lib/librpc$(LIB_VARIANT).a) \ + $(wildcard $(PROJECT_RELEASE)/lib/libxdr$(LIB_VARIANT).a) endif if HAS_RDBG diff --git a/cpukit/libcsupport/src/malloc.c b/cpukit/libcsupport/src/malloc.c index 0396b051be..d3121f90b4 100644 --- a/cpukit/libcsupport/src/malloc.c +++ b/cpukit/libcsupport/src/malloc.c @@ -82,9 +82,9 @@ void RTEMS_Malloc_Initialize( /* DOES NOT RETURN!!! */ } - if (u32_address & (CPU_ALIGNMENT-1)) { + if (u32_address & (CPU_HEAP_ALIGNMENT-1)) { old_address = u32_address; - u32_address = (u32_address + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1); + u32_address = (u32_address + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1); /* * adjust the length by whatever we aligned by diff --git a/cpukit/libmisc/monitor/mon-monitor.c b/cpukit/libmisc/monitor/mon-monitor.c index a531fc003c..ef86decda9 100644 --- a/cpukit/libmisc/monitor/mon-monitor.c +++ b/cpukit/libmisc/monitor/mon-monitor.c @@ -525,7 +525,11 @@ rtems_monitor_task( debugee = _Thread_Executing; rp = &debugee->Registers; +#if (CPU_HARDWARE_FP == TRUE) || (CPU_SOFTWARE_FP == TRUE) fp = (rtems_context_fp *) debugee->fp_context; /* possibly 0 */ +#else + fp = 0; +#endif if (0 == rtems_monitor_command_read(command_buffer, &argc, argv)) continue; diff --git a/cpukit/librpc/Makefile.am b/cpukit/librpc/Makefile.am index d9429399ec..2377188d12 100644 --- a/cpukit/librpc/Makefile.am +++ b/cpukit/librpc/Makefile.am @@ -5,7 +5,11 @@ AUTOMAKE_OPTIONS = foreign 1.4 ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal +if rpc_not_supported +SUBDIRS = +else SUBDIRS = include src +endif EXTRA_DIST = README_RTEMS diff --git a/cpukit/pppd/fsm.c b/cpukit/pppd/fsm.c index aeb4564b98..09b67486e5 100644 --- a/cpukit/pppd/fsm.c +++ b/cpukit/pppd/fsm.c @@ -36,7 +36,7 @@ #include "fsm.h" static void fsm_timeout __P((void *)); -static void fsm_rconfreq __P((fsm *, int, u_char *, int)); +static void fsm_rconfreq __P((fsm *, u_char, u_char *, int)); static void fsm_rconfack __P((fsm *, int, u_char *, int)); static void fsm_rconfnakrej __P((fsm *, int, int, u_char *, int)); static void fsm_rtermreq __P((fsm *, int, u_char *, int)); diff --git a/cpukit/pppd/fsm.h b/cpukit/pppd/fsm.h index f289429fdc..c04050a369 100644 --- a/cpukit/pppd/fsm.h +++ b/cpukit/pppd/fsm.h @@ -135,7 +135,7 @@ void fsm_open __P((fsm *)); void fsm_close __P((fsm *, char *)); void fsm_input __P((fsm *, u_char *, int)); void fsm_protreject __P((fsm *)); -void fsm_sdata __P((fsm *, int, int, u_char *, int)); +void fsm_sdata __P((fsm *, u_char, u_char, u_char *, int)); /* diff --git a/cpukit/pppd/upap.c b/cpukit/pppd/upap.c index f2cdb921c5..78b3b2f5f7 100644 --- a/cpukit/pppd/upap.c +++ b/cpukit/pppd/upap.c @@ -72,7 +72,7 @@ static void upap_rauthreq __P((upap_state *, u_char *, int, int)); static void upap_rauthack __P((upap_state *, u_char *, int, int)); static void upap_rauthnak __P((upap_state *, u_char *, int, int)); static void upap_sauthreq __P((upap_state *)); -static void upap_sresp __P((upap_state *, int, int, char *, int)); +static void upap_sresp __P((upap_state *, u_char, u_char, char *, int)); /* diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c index 9cb197e5bc..c71f025d39 100644 --- a/cpukit/score/src/thread.c +++ b/cpukit/score/src/thread.c @@ -63,7 +63,9 @@ void _Thread_Handler_initialization( _Context_Switch_necessary = FALSE; _Thread_Executing = NULL; _Thread_Heir = NULL; +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) _Thread_Allocated_fp = NULL; +#endif _Thread_Do_post_task_switch_extension = 0; diff --git a/cpukit/score/src/threadclose.c b/cpukit/score/src/threadclose.c index 4f2c9a6de5..882672d47e 100644 --- a/cpukit/score/src/threadclose.c +++ b/cpukit/score/src/threadclose.c @@ -53,6 +53,7 @@ void _Thread_Close( _User_extensions_Thread_delete( the_thread ); +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) _Thread_Deallocate_fp(); @@ -60,7 +61,8 @@ void _Thread_Close( the_thread->fp_context = NULL; if ( the_thread->Start.fp_context ) - (void) _Workspace_Free( the_thread->Start.fp_context ); + (void) _Workspace_Free( the_thread->Start.fp_context ); +#endif _Thread_Stack_Free( the_thread ); diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c index 311947cfa9..66a8996a12 100644 --- a/cpukit/score/src/threaddispatch.c +++ b/cpukit/score/src/threaddispatch.c @@ -92,7 +92,7 @@ void _Thread_Dispatch( void ) * operations. */ -#if ( CPU_HARDWARE_FP == TRUE ) +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (heir->fp_context != NULL) && !_Thread_Is_allocated_fp( heir ) ) { if ( _Thread_Allocated_fp != NULL ) diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index 0d5154c400..fe4e9fa2b5 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -95,6 +95,7 @@ boolean _Thread_Initialize( * Allocate the floating point area for this thread */ +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); @@ -109,6 +110,7 @@ boolean _Thread_Initialize( the_thread->fp_context = fp_area; the_thread->Start.fp_context = fp_area; +#endif /* * Allocate the extensions area for this thread diff --git a/cpukit/score/src/threadloadenv.c b/cpukit/score/src/threadloadenv.c index c3493eeccd..af1233f709 100644 --- a/cpukit/score/src/threadloadenv.c +++ b/cpukit/score/src/threadloadenv.c @@ -45,11 +45,13 @@ void _Thread_Load_environment( { boolean is_fp = FALSE; +#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( the_thread->Start.fp_context ) { the_thread->fp_context = the_thread->Start.fp_context; _Context_Initialize_fp( &the_thread->fp_context ); is_fp = TRUE; } +#endif the_thread->do_post_task_switch_extension = FALSE; the_thread->is_preemptible = the_thread->Start.is_preemptible; diff --git a/make/custom/c4xsim.cfg b/make/custom/c4xsim.cfg index 6f2c10be50..2fe0f08b1c 100644 --- a/make/custom/c4xsim.cfg +++ b/make/custom/c4xsim.cfg @@ -50,7 +50,8 @@ START_BASE= # will be able to override parts of the compilers specs and link using gcc. define make-exe - $(CC) $(CPPFLAGS) $(CFLAGS) -o $(basename $@).exe \ + $(LINK.c) $(AM_CFLAGS) $(AM_LDFLAGS) \ + $(LDLIBS) -o $@ \ $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $@ > $(basename $@).num $(SIZE) $@ diff --git a/testsuites/sptests/spsize/size.c b/testsuites/sptests/spsize/size.c index c7cae3bce0..3ceddcf699 100644 --- a/testsuites/sptests/spsize/size.c +++ b/testsuites/sptests/spsize/size.c @@ -356,7 +356,9 @@ uninitialized = (sizeof _Thread_Ready_chain) + (sizeof _Thread_Executing) + (sizeof _Thread_Heir) + +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) (sizeof _Thread_Allocated_fp) + +#endif (sizeof _Thread_Internal_information) + (sizeof _Thread_Idle) + diff --git a/testsuites/tmtests/tm26/task1.c b/testsuites/tmtests/tm26/task1.c index 248ffae296..b660b36b21 100644 --- a/testsuites/tmtests/tm26/task1.c +++ b/testsuites/tmtests/tm26/task1.c @@ -281,7 +281,9 @@ rtems_task Low_task( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); } @@ -306,8 +308,10 @@ rtems_task Floating_point_task_1( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_2 */ @@ -327,8 +331,10 @@ rtems_task Floating_point_task_1( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_2 */ } @@ -356,8 +362,10 @@ rtems_task Floating_point_task_2( _Thread_Disable_dispatch(); Timer_initialize(); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) _Context_Save_fp( &executing->fp_context ); _Context_Restore_fp( &_Thread_Executing->fp_context ); +#endif _Context_Switch( &executing->Registers, &_Thread_Executing->Registers ); /* switch to Floating_point_task_1 */ @@ -493,6 +501,7 @@ void complete_test( void ) 0 ); +#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1) put_time( "fp context switch: restore 1st FP task", context_switch_restore_1st_fp_time, @@ -524,6 +533,12 @@ void complete_test( void ) 0, 0 ); +#else + puts( "fp context switch: restore 1st FP task - NA" ); + puts( "fp context switch: save idle, restore initialized - NA" ); + puts( "fp context switch: save idle, restore idle - NA" ); + puts( "fp context switch: save initialized, restore initialized - NA" ); +#endif put_time( "_Thread_Resume", -- cgit v1.2.3