diff packages/hal/common/current/tests/intr.c @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents 3111d98ba7b3
children ece80412419a
line wrap: on
line diff
--- a/packages/hal/common/current/tests/intr.c
+++ b/packages/hal/common/current/tests/intr.c
@@ -22,7 +22,7 @@
 // September 30, 1998.
 // 
 // The Initial Developer of the Original Code is Cygnus.  Portions created
-// by Cygnus are Copyright (C) 1998 Cygnus Solutions.  All Rights Reserved.
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
 // -------------------------------------------
 //
 //####COPYRIGHTEND####
@@ -41,6 +41,14 @@
 
 #include <cyg/hal/hal_intr.h>
 
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>             // Need to look for the RTC config.
+
+// These are redefined below.
+#undef CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION
+#undef CYGNUM_KERNEL_COUNTERS_RTC_PERIOD
+#endif
+
 // -------------------------------------------------------------------------
 
 #if defined(CYG_HAL_MN10300_STDEVAL1)
@@ -62,7 +70,6 @@
 #define CYGNUM_KERNEL_COUNTERS_RTC_PERIOD       15625
 
 #endif
-
 #if defined(CYG_HAL_MIPS_SIM)
 
 #define CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION   {1000000000, 1000}
@@ -70,12 +77,23 @@
 
 #endif
 
-#if defined(CYG_HAL_POWERPC_MP860)
+#if defined(CYG_HAL_POWERPC_COGENT)
 
 #define CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION   {1000000000, 100}
 #define CYGNUM_KERNEL_COUNTERS_RTC_PERIOD       20625
 
 #endif
+#if defined(CYGPKG_HAL_POWERPC_SIM)
+
+#define CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION   {1000000000, 100}
+#define CYGNUM_KERNEL_COUNTERS_RTC_PERIOD       999
+
+#endif
+
+#if defined(CYG_HAL_I386_LINUX)
+#define CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION   {1000000000, 100}
+#define CYGNUM_KERNEL_COUNTERS_RTC_PERIOD       10000
+#endif
 
 #ifndef CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION
 
@@ -97,7 +115,8 @@ volatile cyg_count32 ticks = 0;
 cyg_uint32 isr( cyg_uint32 vector, CYG_ADDRWORD data )
 {
     CYG_TEST_CHECK( ISR_DATA == data , "Bad data passed to ISR");
-    CYG_TEST_CHECK( CYG_VECTOR_RTC == vector , "Bad vector passed to ISR");
+    CYG_TEST_CHECK( CYGNUM_HAL_INTERRUPT_RTC == vector ,
+                    "Bad vector passed to ISR");
 
     HAL_CLOCK_RESET( vector, CYGNUM_KERNEL_COUNTERS_RTC_PERIOD );
 
@@ -113,14 +132,12 @@ cyg_uint32 isr( cyg_uint32 vector, CYG_A
 void intr_main( void )
 {
     CYG_INTERRUPT_STATE oldints;
-    
-    CYG_TEST_INIT();
 
-    HAL_INTERRUPT_ATTACH( CYG_VECTOR_RTC, isr, ISR_DATA, 0 );
+    HAL_INTERRUPT_ATTACH( CYGNUM_HAL_INTERRUPT_RTC, isr, ISR_DATA, 0 );
 
     HAL_CLOCK_INITIALIZE( CYGNUM_KERNEL_COUNTERS_RTC_PERIOD );
 
-    HAL_INTERRUPT_UNMASK( CYG_VECTOR_RTC );
+    HAL_INTERRUPT_UNMASK( CYGNUM_HAL_INTERRUPT_RTC );
 
     HAL_ENABLE_INTERRUPTS();
 
@@ -132,6 +149,7 @@ void intr_main( void )
     HAL_DISABLE_INTERRUPTS(oldints);
 
     CYG_TEST_PASS_FINISH("HAL interrupt test");
+
 }
 
 
@@ -140,7 +158,19 @@ void intr_main( void )
 externC void
 cyg_start( void )
 {
+    CYG_TEST_INIT();
+
+    // Attaching the ISR will not succeed if the kernel real-time
+    // clock has been configured in.
+#ifndef CYGVAR_KERNEL_COUNTERS_CLOCK
+
     intr_main();
+
+#else
+
+    CYG_TEST_PASS_FINISH("N/A: Cannot override kernel real-time clock.");
+
+#endif
 }