Index: c/src/lib/libbsp/i386/i386ex/timer/timer.c
===================================================================
--- c/src/lib/libbsp/i386/i386ex/timer/timer.c	(revision 752cd8fb98f1c65b9f482bdbebeef0bd14d98856)
+++ c/src/lib/libbsp/i386/i386ex/timer/timer.c	(revision 752cd8fb98f1c65b9f482bdbebeef0bd14d98856)
@@ -0,0 +1,99 @@
+/*  Timer_init()
+ *
+ *  This routine initializes the timer on the FORCE CPU-386 board.
+ *
+ *  Input parameters:  NONE
+ *
+ *  Output parameters:  NONE
+ *
+ *  NOTE: This routine will not work if the optimizer is enabled
+ *        for some compilers.  The multiple writes to the Z8036
+ *        may be optimized away.
+ *
+ *        It is important that the timer start/stop overhead be
+ *        determined when porting or modifying this code.
+ *
+ *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ *  On-Line Applications Research Corporation (OAR).
+ *  All rights assigned to U.S. Government, 1994.
+ *
+ *  This material may be reproduced by or for the U.S. Government pursuant
+ *  to the copyright license under the clause at DFARS 252.227-7013.  This
+ *  notice must appear in all copies of this file and its derivatives.
+ *
+ *  $Id$
+ */
+
+
+#include <rtems.h>
+#include <bsp.h>
+
+int Ttimer_val;
+rtems_boolean Timer_driver_Find_average_overhead;
+
+rtems_isr timerisr();
+
+#define TMR0	  0xF040
+#define TMR1	  0xF041
+#define TMR2	  0xF042
+#define TMRCON	  0xF043
+#define TMRCFG    0xF834
+
+void Timer_initialize()
+{
+
+  (void) set_vector( timerisr, 0x2a, 0 );   /* install ISR ( IR2 ) was 0x38*/
+
+  Ttimer_val = 0;                           /* clear timer ISR count */
+
+  outport_byte  ( TMRCON , 0xb0 ); /* select tmr2, stay in mode 0 */
+  outport_byte  ( TMR1   , 0xd2 ); /* set to 250 usec interval */
+  outport_byte	( TMR1   , 0x00 );
+  outport_byte  ( TMRCON , 0x64 ); /* change to mode 2 ( starts timer ) */ 
+                                   /* interrupts ARE enabled */
+/*  outport_byte( IERA, 0x41 );             enable interrupt */
+
+}
+
+#define AVG_OVERHEAD      3  /* It typically takes 3.0 microseconds */
+                             /* (3 ticks) to start/stop the timer. */
+#define LEAST_VALID       4  /* Don't trust a value lower than this */
+
+int Read_timer()
+{
+  register rtems_unsigned32 clicks;
+  register rtems_unsigned32 total;
+
+/*  outport_byte( TBCR, 0x00 );  stop the timer -- not needed on intel */
+
+  outport_byte ( TMRCON, 0x40 );   /* latch the count */
+  inport_byte  ( TMR1,   clicks ); /* read the count */ 
+
+  total = Ttimer_val + 250 - clicks;
+
+/*  outport_byte( TBCR, 0x00 );   initial value */
+/*  outport_byte( IERA, 0x40 );   disable interrupt */
+
+  /* ??? Is "do not restore old vector" causing problems? */
+
+  if ( Timer_driver_Find_average_overhead == 1 )
+    return total;          /* in one microsecond units */
+
+  else {
+    if ( total < LEAST_VALID )
+      return 0;            /* below timer resolution */
+    return (total - AVG_OVERHEAD);
+  }
+}
+
+rtems_status_code Empty_function( void )
+{
+  return RTEMS_SUCCESSFUL;
+}
+
+void Set_find_average_overhead(
+  rtems_boolean find_flag
+)
+{
+  Timer_driver_Find_average_overhead = find_flag;
+}
Index: c/src/lib/libbsp/i386/i386ex/timer/timerisr.s
===================================================================
--- c/src/lib/libbsp/i386/i386ex/timer/timerisr.s	(revision 752cd8fb98f1c65b9f482bdbebeef0bd14d98856)
+++ c/src/lib/libbsp/i386/i386ex/timer/timerisr.s	(revision 752cd8fb98f1c65b9f482bdbebeef0bd14d98856)
@@ -0,0 +1,34 @@
+/*  timer_isr()
+ *
+ *  This routine provides the ISR for the Z8036 timer on the MVME136
+ *  board.   The timer is set up to generate an interrupt at maximum
+ *  intervals.
+ *
+ *  Input parameters:  NONE
+ *
+ *  Output parameters:  NONE
+ *
+ *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ *  On-Line Applications Research Corporation (OAR).
+ *  All rights assigned to U.S. Government, 1994.
+ *
+ *  This material may be reproduced by or for the U.S. Government pursuant
+ *  to the copyright license under the clause at DFARS 252.227-7013.  This
+ *  notice must appear in all copies of this file and its derivatives.
+ *
+ *  $Id$
+ */
+
+#include "asm.h"
+
+        BEGIN_CODE
+
+        EXTERN (Ttimer_val)
+
+        PUBLIC (timerisr)
+SYM (timerisr):
+        addl    $250, SYM (Ttimer_val)   # another 250 microseconds
+        iret
+
+END_CODE
+END
