URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/rtems/c/src/lib/libbsp/powerpc/psim/timer
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/timer.c
0,0 → 1,85
/* timer.c |
* |
* This file implements a benchmark timer using the General Purpose Timer on |
* the MEC. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* The license and distribution terms for this file may be |
* found in found in the file LICENSE in this distribution or at |
* http://www.OARcorp.com/rtems/license.html. |
* |
* Ported to ERC32 implementation of the SPARC by On-Line Applications |
* Research Corporation (OAR) under contract to the European Space |
* Agency (ESA). |
* |
* ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995. |
* European Space Agency. |
* |
* $Id: timer.c,v 1.2 2001-09-27 12:01:02 chris Exp $ |
*/ |
|
#include <assert.h> |
|
#include <bsp.h> |
|
rtems_unsigned64 Timer_driver_Start_time; |
|
rtems_boolean Timer_driver_Find_average_overhead; |
|
void Timer_initialize() |
{ |
/* |
* Timer runs long and accurate enough not to require an interrupt. |
*/ |
|
|
Timer_driver_Start_time = PPC_Get_timebase_register(); |
|
|
} |
|
#define AVG_OVERHEAD 24 /* It typically takes 24 instructions */ |
/* to start/stop the timer. */ |
#define LEAST_VALID 1 /* Don't trust a value lower than this */ |
/* psim can count instructions. :) */ |
|
int Read_timer() |
{ |
rtems_unsigned64 clicks; |
rtems_unsigned64 total64; |
rtems_unsigned32 total; |
|
/* approximately CLOCK_SPEED clicks per microsecond */ |
|
clicks = PPC_Get_timebase_register(); |
|
assert( clicks > Timer_driver_Start_time ); |
|
total64 = clicks - Timer_driver_Start_time; |
|
assert( total64 <= 0xffffffff ); /* fits into a unsigned32 */ |
|
total = (rtems_unsigned32) total64; |
|
if ( Timer_driver_Find_average_overhead == 1 ) |
return total; /* in one microsecond units */ |
|
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; |
} |
/Makefile.am
0,0 → 1,32
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:01:02 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
PGM = $(ARCH)/timer.rel |
|
C_FILES = timer.c |
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o) |
|
OBJS = $(C_O_FILES) |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(top_srcdir)/../../../../../../automake/lib.am |
|
# |
# (OPTIONAL) Add local stuff here using += |
# |
|
$(PGM): $(OBJS) |
$(make-rel) |
|
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile |
|
all-local: $(ARCH) $(OBJS) $(PGM) |
|
.PRECIOUS: $(PGM) |
|
EXTRA_DIST = timer.c |
|
include $(top_srcdir)/../../../../../../automake/local.am |