changeset 60:3836136e7743 ecos-sw-1999-12-17

Merge from eCos master repository on 1999-12-17-19:44:58-GMT
author jlarmour
date Fri, 17 Dec 1999 20:15:45 +0000
parents 19ba0f558903
children e44112c47676
files packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/src/arm.ld packages/hal/arm/edb7xxx/current/ChangeLog packages/hal/arm/edb7xxx/current/support/Makefile packages/hal/arm/edb7xxx/current/support/dl_edb7xxx.c packages/hal/arm/pid/current/ChangeLog packages/hal/arm/pid/current/misc/STUBS_config packages/hal/mips/arch/current/ChangeLog packages/hal/mips/arch/current/include/hal_intr.h packages/hal/mn10300/arch/current/ChangeLog packages/hal/mn10300/arch/current/include/hal_intr.h packages/kernel/current/ChangeLog packages/kernel/current/tests/tm_basic.cxx
diffstat 13 files changed, 115 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-16  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/arm.ld: Include all SRAM (*.sram*) sections.
+
 1999-12-08  Gary Thomas  <gthomas@cygnus.co.uk>
 
 	* src/arm.ld: Add ".sram" section support (used by platforms
--- a/packages/hal/arm/arch/current/src/arm.ld
+++ b/packages/hal/arm/arch/current/src/arm.ld
@@ -121,7 +121,7 @@ OUTPUT_FORMAT(elf32-bigarm)
 
 #define SECTION_sram(_region_, _vma_, _lma_) \
     .sram _vma_ : _lma_ \
-    { FORCE_OUTPUT; *(.sram) } \
+    { FORCE_OUTPUT; *(.sram*) } \
     > _region_
 
 #define SECTION_data(_region_,  _vma_, _lma_) \
--- a/packages/hal/arm/edb7xxx/current/ChangeLog
+++ b/packages/hal/arm/edb7xxx/current/ChangeLog
@@ -1,3 +1,11 @@
+1999-12-14  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* support/Makefile: Update filenames from earlier source file change,
+	and make other names generic
+
+	* support/dl_edb7xxx.c (main): Give the correct device name if
+	using the default.
+
 1999-11-29  Jonathan Larmour  <jlarmour@cygnus.co.uk>
 
 	* src/hal_diag.c: Fix typoe: CYGDGB_HAL_DIAG_DISABLE_GDB_PROTOCOL
--- a/packages/hal/arm/edb7xxx/current/support/Makefile
+++ b/packages/hal/arm/edb7xxx/current/support/Makefile
@@ -1,13 +1,13 @@
 #
-# eCos support tools for EP7211
+# eCos support tools for Cirrus Logic EDB7xxx eval boards
 #
 
-DL_FILES = dl_7211.o io.o
-ALL := dl_7211
+DL_FILES = dl_edb7xxx.o io.o
+ALL := dl_edb7xxx
 
 
 all: $(ALL)
 
-dl_7211: $(DL_FILES)
+dl_edb7xxx: $(DL_FILES)
 	$(CC) -o $@ $(DL_FILES)
 
--- a/packages/hal/arm/edb7xxx/current/support/dl_edb7xxx.c
+++ b/packages/hal/arm/edb7xxx/current/support/dl_edb7xxx.c
@@ -1,7 +1,7 @@
 //****************************************************************************
 //
 // DOWNLOAD.C - Automates the download of code into the flash on the
-//              CL-PS7111-DK-D2 board.
+//              Cirrus Logic EDB7XXX boards.
 //
 // Copyright (c) 1999 Cirrus Logic, Inc.
 //
@@ -97,14 +97,19 @@ main(int argc, char *argv[])
     if(argc > 3)
     {
         lPort = OpenPort(argv[3]);
+        if (lPort < 0)
+        {
+            fprintf(stderr, "Can't open port: %s\n", argv[3]);
+            return;
+        }
     } else 
     {
         lPort = OpenPort(DEFAULT_PORT);
-    }
-    if (lPort < 0) 
-    {
-        fprintf(stderr, "Can't open port: %s\n", argv[3]);
-        return;
+        if (lPort < 0)
+        {
+            fprintf(stderr, "Can't open port: %s\n", DEFAULT_PORT);
+            return;
+        }
     }
 
     //
--- a/packages/hal/arm/pid/current/ChangeLog
+++ b/packages/hal/arm/pid/current/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-15  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* misc/STUBS_config: updated patch due to hal.h changes
+
 1999-12-06  Gary Thomas  <gthomas@cygnus.co.uk>
 
 	* include/pkgconf/hal_arm_pid.h (HAL_PLATFORM_BOARD):
--- a/packages/hal/arm/pid/current/misc/STUBS_config
+++ b/packages/hal/arm/pid/current/misc/STUBS_config
@@ -37,18 +37,24 @@ fi
    --disable CYGPKG_DEVICES_WATCHDOG
 
 patch <<END_OF_PATCH -p0
---- pkgconf/hal.h.orig  Fri Oct 22 09:32:14 1999
-+++ pkgconf/hal.h       Mon Oct 25 09:15:33 1999
-@@ -110,7 +110,7 @@
+--- pkgconf/hal.h       1999/11/21 14:48:03     1.66
++++ pkgconf/hal.h       1999/12/15 21:48:53
+@@ -118,11 +118,11 @@
+          diagnostic I/O because of the environment.  This option
+          allows for an explicit override in these cases."
   }
  
   }}CFG_DATA */
 -#define CYGFUN_HAL_COMMON_KERNEL_SUPPORT
 +#undef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+ #undef  CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
  
- /* {{CFG_DATA
-    
-@@ -382,10 +382,10 @@
+ #ifdef CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
+ #if !defined(CYGPKG_HAL_ARM)
+ #err GDB protocol cannot be explicitly disabled for this platform.
+@@ -424,14 +424,14 @@
+          to support multi-threaded source level debugging."
+  }
  
     }}CFG_DATA */
  
@@ -62,6 +68,8 @@ patch <<END_OF_PATCH -p0
  
  /*
   * NOTE:
+  *
+  * Right now there is no easy way to express the ROM monitor options
 END_OF_PATCH
 
 make
--- a/packages/hal/mips/arch/current/ChangeLog
+++ b/packages/hal/mips/arch/current/ChangeLog
@@ -1,3 +1,9 @@
+1999-12-15  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* include/hal_intr.h (CYGNUM_HAL_EXCEPTION_COUNT): Ensure you can
+	handle FPU exceptions if present
+	Reported in case 102817
+
 1999-11-04  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* src/vectors.S: Added code in reset vector to reset the config0
--- a/packages/hal/mips/arch/current/include/hal_intr.h
+++ b/packages/hal/mips/arch/current/include/hal_intr.h
@@ -122,8 +122,8 @@
 
 // Min/Max exception numbers and how many there are
 #define CYGNUM_HAL_EXCEPTION_MIN                1
-#define CYGNUM_HAL_EXCEPTION_MAX               13
-#define CYGNUM_HAL_EXCEPTION_COUNT             13
+#define CYGNUM_HAL_EXCEPTION_MAX                CYGNUM_HAL_VSR_MAX
+#define CYGNUM_HAL_EXCEPTION_COUNT              CYGNUM_HAL_VSR_MAX
 
 
 #ifndef CYGHWR_HAL_INTERRUPT_VECTORS_DEFINED
--- a/packages/hal/mn10300/arch/current/ChangeLog
+++ b/packages/hal/mn10300/arch/current/ChangeLog
@@ -1,3 +1,9 @@
+1999-11-09  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* include/hal_intr.h (HAL_RESTORE_INTERRUPTS): Ensure we restore the
+	old state exactly, including "restoring" by disabling interrupts
+	Requested by Matsushita in case 102544
+
 1999-09-10  Jonathan Larmour  <jlarmour@cygnus.co.uk>
 
 	* include/hal_cache.h: Change CYG_HAL_MN10300_SIM to
--- a/packages/hal/mn10300/arch/current/include/hal_intr.h
+++ b/packages/hal/mn10300/arch/current/include/hal_intr.h
@@ -129,6 +129,7 @@ externC void hal_interrupt_stack_call_pe
 #define HAL_RESTORE_INTERRUPTS(_old_)   \
         asm volatile (                  \
             "mov        psw,d1;"        \
+            "and        0xF7FF,d1;"     \
             "or         %0,d1;"         \
             "mov        d1,psw;"        \
             :                           \
--- a/packages/kernel/current/ChangeLog
+++ b/packages/kernel/current/ChangeLog
@@ -1,3 +1,8 @@
+1999-12-13  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* tests/tm_basic.cxx (run_alarm_tests): Add new measurement of
+	latency between alarm firing and thread resume
+
 1999-11-30  Hugo Tyson  <hmt@cygnus.co.uk>
 
 	* src/common/kapi.cxx (cyg_scheduler_lock, cyg_scheduler_unlock):
--- a/packages/kernel/current/tests/tm_basic.cxx
+++ b/packages/kernel/current/tests/tm_basic.cxx
@@ -1150,6 +1150,17 @@ alarm_cb2(cyg_handle_t alarm, cyg_addrwo
     }
 }
 
+static void
+alarm_cb3(cyg_handle_t alarm, cyg_addrword_t indx)
+{
+    if (alarm_cnt == nscheds) {
+        cyg_semaphore_post(&synchro);
+    } else {
+        sched_ft[alarm_cnt].start = 0;
+        cyg_thread_resume((cyg_handle_t)indx);
+    }
+}
+
 // Null thread, used to keep scheduler busy
 void
 alarm_test(cyg_uint32 id)
@@ -1159,6 +1170,17 @@ alarm_test(cyg_uint32 id)
     }
 }
 
+// Thread that suspends itself at the first opportunity
+void
+alarm_test2(cyg_uint32 id)
+{
+    cyg_handle_t me = cyg_thread_self();
+    while (true) {
+        HAL_CLOCK_READ(&sched_ft[alarm_cnt++].end);
+        cyg_thread_suspend(me);
+    }
+}
+
 void
 run_alarm_tests(void)
 {
@@ -1360,6 +1382,33 @@ run_alarm_tests(void)
         cyg_thread_suspend(threads[i]);
         cyg_thread_delete(threads[i]);
     }
+
+    // Set my priority higher than any I plan to create
+    cyg_thread_set_priority(cyg_thread_self(), 2);
+    cyg_thread_create(10,              // Priority - just a number
+                      alarm_test2,     // entry
+                      i,               // index
+                      thread_name("thread", 0),     // Name
+                      &stacks[0][0],   // Stack
+                      STACK_SIZE,      // Size
+                      &threads[0],     // Handle
+                      &test_threads[0] // Thread data structure
+        );
+    wait_for_tick(); // Wait until the next clock tick to minimize aberations
+    cyg_clock_to_counter(cyg_real_time_clock(), &rtc_handle);
+    cyg_alarm_create(rtc_handle, alarm_cb3, threads[0], &alarms[0],
+                     &test_alarms[0]);
+    init_val = 5;  step_val = 5;  alarm_cnt = 0;
+    cyg_alarm_initialize(alarms[0], init_val, step_val);
+    cyg_semaphore_init(&synchro, 0);
+    cyg_alarm_enable(alarms[0]);
+    cyg_semaphore_wait(&synchro);
+    cyg_alarm_disable(alarms[0]);
+    cyg_alarm_delete(alarms[0]);
+    show_times(sched_ft, nscheds, "Alarm -> thread resume latency");
+    cyg_thread_suspend(threads[0]);
+    cyg_thread_delete(threads[0]);
+    
     end_of_test_group();
 }