summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-07-26 19:28:11 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-07-26 19:28:11 +0000
commitca7858bb8856f1afcc537f39763b7c951e5068d3 (patch)
tree3f01b3bb41ce9b2d7bc16c300391382918758caf /c/src
parentPort of RTEMS to the Texas Instruments C3x/C4x DSP families including (diff)
downloadrtems-ca7858bb8856f1afcc537f39763b7c951e5068d3.tar.bz2
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.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/c4x/c4xsim/tools/.cvsignore2
-rw-r--r--c/src/lib/libbsp/c4x/c4xsim/wrapup/.cvsignore2
-rw-r--r--c/src/lib/libbsp/c4x/shared/.cvsignore13
-rw-r--r--c/src/lib/libbsp/shared/main.c2
-rw-r--r--c/src/lib/libc/malloc.c4
-rw-r--r--c/src/libmisc/monitor/mon-monitor.c4
-rw-r--r--c/src/libnetworking/pppd/fsm.c2
-rw-r--r--c/src/libnetworking/pppd/fsm.h2
-rw-r--r--c/src/libnetworking/pppd/upap.c2
-rw-r--r--c/src/librpc/Makefile.am4
-rw-r--r--c/src/librpc/configure.in1
-rw-r--r--c/src/tests/sptests/spsize/size.c2
-rw-r--r--c/src/tests/tmtests/tm26/task1.c15
-rw-r--r--c/src/wrapup/Makefile.am4
14 files changed, 51 insertions, 8 deletions
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