changeset 28:18ee5a9c102e ecos-sw-1999-08-09

Merge from eCos master repository on 1999-08-09-17:04:48-BST
author jlarmour
date Mon, 09 Aug 1999 16:37:19 +0000
parents 2994722c9199
children 093762bd6ba9
files packages/hal/arm/aeb/current/ChangeLog packages/hal/arm/aeb/current/misc/Notes packages/hal/arm/aeb/current/misc/STUBS_config packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/src/hal_misc.c packages/hal/arm/arch/current/src/vectors.S packages/hal/common/current/ChangeLog packages/hal/common/current/src/generic-stub.c packages/io/serial/current/include/pkgconf/io_serial.h packages/kernel/current/ChangeLog packages/kernel/current/src/sync/mutex.cxx packages/kernel/current/tests/stress_threads.c packages/language/c/libc/current/ChangeLog packages/language/c/libc/current/tests/stdio/sprintf2.c
diffstat 14 files changed, 91 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/aeb/current/ChangeLog
+++ b/packages/hal/arm/aeb/current/ChangeLog
@@ -1,3 +1,8 @@
+1999-08-08  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* misc/Notes: 
+	* misc/STUBS_config: Update patch for new hal.h.
+
 1999-05-25  Gary Thomas  <gthomas@cygnus.co.uk>
 
 	* misc/gdb_module.c: Fix up symbols for new ABI.
--- a/packages/hal/arm/aeb/current/misc/Notes
+++ b/packages/hal/arm/aeb/current/misc/Notes
@@ -193,6 +193,7 @@ 2. Edit <hal/hal.h> to enable GDB:
 
    you can use the following patch:
 
+patch -p0 <<END_OF_PATCH
 --- pkgconf/hal.h~      Wed Mar 10 13:08:58 1999
 +++ pkgconf/hal.h       Thu Mar 11 15:53:16 1999
 @@ -356,9 +356,9 @@
@@ -208,6 +209,8 @@ 2. Edit <hal/hal.h> to enable GDB:
  /*
   * NOTE:
 
+END_OF_PATCH
+
 
 3. make misc
 
--- a/packages/hal/arm/aeb/current/misc/STUBS_config
+++ b/packages/hal/arm/aeb/current/misc/STUBS_config
@@ -11,20 +11,21 @@ tcl $1/pkgconf.tcl                      
    --disable CYGPKG_IO_SERIAL --disable CYGPKG_DEVICES_WALLCLOCK       \
    --disable CYGPKG_DEVICES_WATCHDOG
 
-patch -p0 <<END_OF_PATCH
---- pkgconf/hal.h~      Wed Mar 10 13:08:58 1999
-+++ pkgconf/hal.h       Thu Mar 11 15:53:16 1999
-@@ -356,9 +356,9 @@
+patch <<END_OF_PATCH -p0
+--- pkgconf/hal.h~      Thu Jul  8 08:26:44 1999
++++ pkgconf/hal.h       Wed Jul 28 10:51:07 1999
+@@ -369,10 +369,10 @@
  
     }}CFG_DATA */
  
 -#undef   CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 +#define  CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
  #undef   CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+-#define  CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
 -#define  CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
++#undef   CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
 +#undef   CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
  
  /*
   * NOTE:
-
 END_OF_PATCH
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,30 @@
+1999-08-06  Jesper Skov  <jskov@cygnus.co.uk>
+        CR 101032
+        * src/vectors.S (handle_IRQ_or_FIQ): Moved setup of register_frame
+        argument to just before the interrupt_end call.
+
+1999-07-28  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vectors.S (_eCos_id): Remove bogus version string.
+
+1999-07-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_misc.c (hal_default_isr): Call the special platform HAL
+	routine to see whether there is a ^C lurking in the serial device
+	through a macro, if it's defined.  Problem is that
+	CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT *is* defined for platforms that
+	do not support it.
+
+1999-07-23  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_misc.c (hal_default_isr): If we are including
+	CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT, then poll a special platform
+	HAL routine to see whether there is a ^C lurking in the serial
+	device.  This has to be done from the default ISR so that others
+	(which must know about ^Cs is they are still to be handled) can
+	install over the top.  Not all platforms support this, so enabling
+	CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT will not necessarily work.
+
 1999-07-21  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* src/vectors.S (vectors): Re-organize startup a little to support
--- a/packages/hal/arm/arch/current/src/hal_misc.c
+++ b/packages/hal/arm/arch/current/src/hal_misc.c
@@ -175,6 +175,18 @@ externC cyg_uint32
 hal_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
 {
     CYG_TRACE1(true, "Interrupt: %d", vector);
+
+#ifndef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#ifdef CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
+#ifdef CYGDBG_HAL_CTRLC_ISR
+    // then see if it is an incoming character interrupt and break
+    // into the stub ROM if the char is a ^C.
+    if ( CYGDBG_HAL_CTRLC_ISR( vector, data ) )
+        return 1; // interrupt handled
+#endif
+#endif
+#endif
+
     diag_printf("Spurious Interrupt!!! - vector: %d, data: %x\n", vector, 
                 data);
     CYG_FAIL("Spurious Interrupt!!!");
--- a/packages/hal/arm/arch/current/src/vectors.S
+++ b/packages/hal/arm/arch/current/src/vectors.S
@@ -568,7 +568,6 @@ 10:
 	ldr	r1,[r1,v1,lsl #2]	// handler data
 	ldr	r2,.hal_interrupt_handlers
 	ldr	v3,[r2,v1,lsl #2]	// handler (indexed by vector #)
-	mov	r2,v6			// register frame
 
 	mov	lr,pc			// invoke handler (call indirect
 	mov	pc,v3                   // thru v3)
@@ -590,6 +589,7 @@ 10:
 
 	ldr	r1,.hal_interrupt_objects
 	ldr	r1,[r1,v1,lsl #2]
+	mov	r2,v6		// register frame
 	bl	interrupt_end   // post any bottom layer handler
                                 // threads and call scheduler
 #endif
@@ -706,7 +706,7 @@ PTR(__interrupt_stack)
 //
 // Identification - useful to find out when a system was configured
 _eCos_id:
-	.asciz	"eCos v1.2.1: " __DATE__
+	.asciz	"eCos : " __DATE__
 
 
 // -------------------------------------------------------------------------
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,8 @@
+1999-08-06  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/generic-stub.c (__process_packet): FLush and clear caches
+	after call to __single_step.
+
 1999-07-05  Jesper Skov  <jskov@cygnus.co.uk>
 
 	* tests/intr.c: Don't use kernel's RTC definitions.
--- a/packages/hal/common/current/src/generic-stub.c
+++ b/packages/hal/common/current/src/generic-stub.c
@@ -1086,6 +1086,14 @@ int
             lock_thread_scheduler (1);  /* 1 == continue */
           }
 
+#ifdef __ECOS__
+      /* Need to flush the data and instruction cache here, as we may have
+         deposited a breakpoint in __single_step. */
+
+        __data_cache (CACHE_FLUSH) ;
+        __instruction_cache (CACHE_FLUSH) ;
+#endif
+
         return -1;
       }
 
--- a/packages/io/serial/current/include/pkgconf/io_serial.h
+++ b/packages/io/serial/current/include/pkgconf/io_serial.h
@@ -384,6 +384,7 @@
 
 
 
+
 /* ----------------------------------------------------------------------------
    {{CFG_DATA
    cdl_component CYGPKG_IO_SERIAL_POWERPC_COGENT {
--- a/packages/kernel/current/ChangeLog
+++ b/packages/kernel/current/ChangeLog
@@ -1,3 +1,16 @@
+1999-07-29  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/sync/mutex.cxx (lock): Removed assertion again. Not possible
+	to determine if a violation wil cause a deadlock.
+
+1999-07-27  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* src/sync/mutex.cxx (lock): Added simple assertion check for
+	deadlocks.
+
+	* tests/stress_threads.c: Only allow printf from main thread to
+	prevent deadlocks.
+
 1999-07-14  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* tests/kcache1.c (entry0): Also perform timing tests with
--- a/packages/kernel/current/src/sync/mutex.cxx
+++ b/packages/kernel/current/src/sync/mutex.cxx
@@ -146,7 +146,7 @@ Cyg_Mutex::lock(void)
 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE
 
         owner->inherit_priority(self);
-    
+
 #endif
 
         CYG_INSTRUMENT_MUTEX(WAIT, this, 0);
--- a/packages/kernel/current/tests/stress_threads.c
+++ b/packages/kernel/current/tests/stress_threads.c
@@ -292,8 +292,6 @@ void main_program(cyg_addrword_t data)
     setup_death_alarm(0, &deathH, &death_alarm, &is_dead);
 #endif /* DEATH_TIME_LIMIT */
 
-    printf("# Starting main\n");
-
     for (;;) {
         int handler_id = -1;
         int handler_pri = 0;
@@ -353,8 +351,6 @@ void client_program(cyg_addrword_t data)
 {
     int delay;
 
-    printf("# Starting client-%d\n", (int) data);
-
     system_clockH = cyg_real_time_clock();
     cyg_clock_to_counter(system_clockH, &counterH);
 
@@ -364,11 +360,9 @@ void client_program(cyg_addrword_t data)
         /* now send a request to the server */
         cyg_mutex_lock(&client_request_lock); {
             ++client_makes_request;
-/*        printf("client_makes_request        %d\n", client_makes_request); */
         } cyg_mutex_unlock(&client_request_lock);
 
         cyg_thread_delay(10+delay);
-/*      cyg_thread_delay(0); */
     }
 }
 
@@ -379,8 +373,6 @@ void listener_program(cyg_addrword_t dat
 /*   int message = (int) data; */
     int handler_slot;
 
-    printf("# Beginning execution; thread data is %d\n", (int) data);
-
     for (;;) {
         int make_request = 0;
         cyg_mutex_lock(&client_request_lock); {
@@ -393,8 +385,6 @@ void listener_program(cyg_addrword_t dat
         if (make_request) {
             int prio;
             char* name;
-            /* printf("just got a request from a client (count = %d)\n", */
-            /*        client_makes_request); */
 
             handler_slot = get_handler_slot(listenerH[(int) data]);
             prio = P_BASE_HANDLER+handler_slot;
@@ -424,7 +414,6 @@ void handler_program(cyg_addrword_t data
     perform_stressful_tasks();
 
     cyg_thread_delay(4 + (int) (0.5*log(1.0 + fabs((rand() % 1000000)))));
-/*    cyg_thread_delay(0); */
 
     ++statistics.thread_exits;
     {
@@ -603,8 +592,6 @@ void sc_thread_create(
     cyg_thread          *thread                /* put thread here           */
     )
 {
-/*printf("Creating a thread -- priority is %lu\n", (unsigned long) sched_info);*/
-/*    fflush(stdout); */
     ++statistics.thread_creations;
     cyg_thread_create(sched_info, entry, entry_data, name,
                       stack_base, stack_size, handle, thread);
--- a/packages/language/c/libc/current/ChangeLog
+++ b/packages/language/c/libc/current/ChangeLog
@@ -1,3 +1,9 @@
+1999-08-06  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* tests/stdio/sprintf2.c (test): Don't rely on 2.345 being exactly
+	representable in binary as a difference of 1 ulp will make it round
+	the wrong way.
+
 1999-07-16  Jonathan Larmour  <jlarmour@cygnus.co.uk>
 
 	* src/stdio/input/fgetc.cxx: 
--- a/packages/language/c/libc/current/tests/stdio/sprintf2.c
+++ b/packages/language/c/libc/current/tests/stdio/sprintf2.c
@@ -159,8 +159,8 @@ test( CYG_ADDRWORD data )
 
     // Check 3
     ret = sprintf(y, "|%5f|%10s|%03d|%c|%+-5.2G|%010.3G|",
-                  2.0, "times", 6, '=', 12.0, -2.345e-6 );
-    my_strcpy(z, "|2.000000|     times|006|=|+12  |-02.34E-06|");
+                  2.0, "times", 6, '=', 12.0, -2.3451e-6 );
+    my_strcpy(z, "|2.000000|     times|006|=|+12  |-02.35E-06|");
 
     CYG_TEST_PASS_FAIL(my_strcmp(y,z) == 0,
                        "|%5f|%10s|%03d|%c|%+-5.2G|%010.3G| test");