forked from Imagelibrary/rtems
2003-02-14 Joel Sherrill <joel@OARcorp.com>
AMD a29k is obsolete. * Makefile.am: Removed reference. * a29k/.cvsignore, a29k/ChangeLog, a29k/Makefile.am, a29k/configure.ac, a29k/clock/.cvsignore, a29k/clock/Makefile.am, a29k/clock/ckinit.c, a29k/clock/clock.S, a29k/clock/clock.h, a29k/timer/.cvsignore, a29k/timer/Makefile.am, a29k/timer/timer.c, a29k/timer/timerisr.c: Removed.
This commit is contained in:
@@ -1,3 +1,13 @@
|
|||||||
|
2003-02-14 Joel Sherrill <joel@OARcorp.com>
|
||||||
|
|
||||||
|
AMD a29k is obsolete.
|
||||||
|
* Makefile.am: Removed reference.
|
||||||
|
* a29k/.cvsignore, a29k/ChangeLog, a29k/Makefile.am, a29k/configure.ac,
|
||||||
|
a29k/clock/.cvsignore, a29k/clock/Makefile.am, a29k/clock/ckinit.c,
|
||||||
|
a29k/clock/clock.S, a29k/clock/clock.h, a29k/timer/.cvsignore,
|
||||||
|
a29k/timer/Makefile.am, a29k/timer/timer.c, a29k/timer/timerisr.c:
|
||||||
|
Removed.
|
||||||
|
|
||||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ shared/src/cache_manager.c
|
|||||||
SUBDIRS = @subdirs@
|
SUBDIRS = @subdirs@
|
||||||
|
|
||||||
DIST_SUBDIRS = \
|
DIST_SUBDIRS = \
|
||||||
a29k \
|
|
||||||
hppa1.1 \
|
hppa1.1 \
|
||||||
i386 \
|
i386 \
|
||||||
i960 \
|
i960 \
|
||||||
@@ -22,6 +21,7 @@ mips \
|
|||||||
mips64orion \
|
mips64orion \
|
||||||
powerpc \
|
powerpc \
|
||||||
sh \
|
sh \
|
||||||
|
shared \
|
||||||
sparc
|
sparc
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../automake/subdirs.am
|
include $(top_srcdir)/../../../../automake/subdirs.am
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
aclocal.m4
|
|
||||||
autom4te*.cache
|
|
||||||
config.cache
|
|
||||||
config.guess
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
missing
|
|
||||||
mkinstalldirs
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
|
||||||
|
|
||||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: AC_PREREQ(2.57).
|
|
||||||
|
|
||||||
2003-01-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* clock/Makefile.am: Eliminate *_O_FILES.
|
|
||||||
Don't include @RTEMS_BSP@.cfg.
|
|
||||||
* timer/Makefile.am: Ditto.
|
|
||||||
|
|
||||||
2002-12-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: Remove RTEMS_CHECK_BSP_CACHE.
|
|
||||||
|
|
||||||
2002-12-01 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac: Add RTEMS_PROG_CCAS.
|
|
||||||
|
|
||||||
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* .cvsignore: Reformat.
|
|
||||||
Add autom4te*cache.
|
|
||||||
Remove autom4te.cache.
|
|
||||||
|
|
||||||
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* clock/Makefile.am: Use .$(OBJEXT) instead of .o.
|
|
||||||
* timer/Makefile.am: Use .$(OBJEXT) instead of .o.
|
|
||||||
|
|
||||||
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* configure.ac:
|
|
||||||
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
|
|
||||||
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
|
|
||||||
* clock/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
* timer/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
||||||
|
|
||||||
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
|
|
||||||
* configure.in: Remove.
|
|
||||||
* configure.ac: New file, generated from configure.in by autoupdate.
|
|
||||||
|
|
||||||
2001-02-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de:
|
|
||||||
|
|
||||||
* clock/Makefile.am: Apply include_*HEADERS instead of H_FILES.
|
|
||||||
|
|
||||||
2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
|
|
||||||
|
|
||||||
2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
|
|
||||||
|
|
||||||
2000-10-26 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
|
|
||||||
Switch to GNU canonicalization.
|
|
||||||
|
|
||||||
2000-10-18 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* ChangeLog: Corrected comment.
|
|
||||||
|
|
||||||
2000-10-18 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* clock/ckinit.c: Removed commented out include of bsp.h.
|
|
||||||
* timer/timer.c: Removed commented out include of bsp.h.
|
|
||||||
|
|
||||||
2000-09-25 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* clock/ckinit.c: Removed include of <bsp.h>. Also switch to
|
|
||||||
macros to get configuration data.
|
|
||||||
* timer/timer.c: Removed include of <bsp.h>. Fixed comment
|
|
||||||
that said 4650 (a mips part).
|
|
||||||
|
|
||||||
2000-09-22 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* clock/clock.S: Commented out non-GNU assembly.
|
|
||||||
|
|
||||||
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* clock/Makefile.am, timer/Makefile.am: Include compile.am
|
|
||||||
|
|
||||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* ChangeLog: New file.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I ../../../../../aclocal
|
|
||||||
|
|
||||||
SUBDIRS = clock timer
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../automake/subdirs.am
|
|
||||||
include $(top_srcdir)/../../../../../automake/local.am
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
PGM = $(ARCH)/clock.rel
|
|
||||||
|
|
||||||
C_FILES = ckinit.c
|
|
||||||
OBJS = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
|
||||||
|
|
||||||
noinst_HEADERS = clock.h
|
|
||||||
|
|
||||||
S_FILES = clock.S
|
|
||||||
OBJS += $(S_FILES:%.S=$(ARCH)/%.$(OBJEXT))
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../automake/compile.am
|
|
||||||
include $(top_srcdir)/../../../../../automake/lib.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
$(PGM): $(OBJS)
|
|
||||||
$(make-rel)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(OBJS) $(PGM)
|
|
||||||
|
|
||||||
.PRECIOUS: $(PGM)
|
|
||||||
|
|
||||||
EXTRA_DIST = Makefile ckinit.c clock.S clock.h
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../automake/local.am
|
|
||||||
@@ -1,213 +0,0 @@
|
|||||||
/* ckinit.c
|
|
||||||
*
|
|
||||||
* This file provides a template for the clock device driver initialization.
|
|
||||||
*
|
|
||||||
* 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$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char _sccsid[] = "@(#)ckinit.c 03/15/96 1.1\n";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <rtems.h>
|
|
||||||
#include <rtems/libio.h>
|
|
||||||
|
|
||||||
#include "clock.h"
|
|
||||||
|
|
||||||
extern int CPU_CLOCK_RATE_MHZ; /* provided in bsp */
|
|
||||||
|
|
||||||
#define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) /* equivalent to CPU clock speed in MHz */
|
|
||||||
|
|
||||||
void Clock_exit( void );
|
|
||||||
rtems_isr Clock_isr( rtems_vector_number vector );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The interrupt vector number associated with the clock tick device
|
|
||||||
* driver.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CLOCK_VECTOR 14
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Clock_driver_ticks is a monotonically increasing counter of the
|
|
||||||
* number of clock ticks since the driver was initialized.
|
|
||||||
*/
|
|
||||||
|
|
||||||
volatile rtems_unsigned32 Clock_driver_ticks;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These are set by clock driver during its init
|
|
||||||
*/
|
|
||||||
|
|
||||||
rtems_device_major_number rtems_clock_major = ~0;
|
|
||||||
rtems_device_minor_number rtems_clock_minor;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The previous ISR on this clock tick interrupt vector.
|
|
||||||
*/
|
|
||||||
|
|
||||||
rtems_isr_entry Old_ticker;
|
|
||||||
|
|
||||||
void Clock_exit( void );
|
|
||||||
|
|
||||||
static unsigned32 a29k_timer_rate = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Isr Handler
|
|
||||||
*/
|
|
||||||
|
|
||||||
rtems_isr Clock_isr(
|
|
||||||
rtems_vector_number vector
|
|
||||||
)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* bump the number of clock driver ticks since initialization
|
|
||||||
*
|
|
||||||
* determine if it is time to announce the passing of tick as configured
|
|
||||||
* to RTEMS through the rtems_clock_tick directive
|
|
||||||
*
|
|
||||||
* perform any timer dependent tasks
|
|
||||||
*/
|
|
||||||
|
|
||||||
a29k_clear_timer();
|
|
||||||
|
|
||||||
Clock_driver_ticks += 1;
|
|
||||||
|
|
||||||
rtems_clock_tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* User callback shell (set from Clock_Control) */
|
|
||||||
static void (*user_callback)(void);
|
|
||||||
|
|
||||||
rtems_isr User_Clock_isr(
|
|
||||||
rtems_vector_number vector
|
|
||||||
)
|
|
||||||
{
|
|
||||||
/* refresh the internal CPU timer */
|
|
||||||
a29k_clear_timer();
|
|
||||||
|
|
||||||
if (user_callback)
|
|
||||||
user_callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Install_clock
|
|
||||||
*
|
|
||||||
* Install a clock tick handler and reprograms the chip. This
|
|
||||||
* is used to initially establish the clock tick.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void Install_clock(
|
|
||||||
rtems_isr_entry clock_isr
|
|
||||||
)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Initialize the clock tick device driver variables
|
|
||||||
*/
|
|
||||||
|
|
||||||
Clock_driver_ticks = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If ticks_per_timeslice is configured as non-zero, then the user
|
|
||||||
* wants a clock tick.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if ( rtems_configuration_get_ticks_per_timeslice() ) {
|
|
||||||
Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 );
|
|
||||||
/*
|
|
||||||
* Hardware specific initialize goes here
|
|
||||||
*/
|
|
||||||
|
|
||||||
a29k_timer_rate = rtems_configuration_get_microseconds_per_tick() * CLOCKS_PER_MICROSECOND;
|
|
||||||
a29k_init_timer( a29k_timer_rate );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Schedule the clock cleanup routine to execute if the application exits.
|
|
||||||
*/
|
|
||||||
|
|
||||||
atexit( Clock_exit );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Clean up before the application exits
|
|
||||||
*/
|
|
||||||
|
|
||||||
void Clock_exit( void )
|
|
||||||
{
|
|
||||||
if ( rtems_configuration_get_ticks_per_timeslice() ) {
|
|
||||||
|
|
||||||
/* a29k: turn off the timer interrupts */
|
|
||||||
a29k_disable_timer();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Clock_initialize
|
|
||||||
*
|
|
||||||
* Device driver entry point for clock tick driver initialization.
|
|
||||||
*/
|
|
||||||
|
|
||||||
rtems_device_driver Clock_initialize(
|
|
||||||
rtems_device_major_number major,
|
|
||||||
rtems_device_minor_number minor,
|
|
||||||
void *pargp
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Install_clock( Clock_isr );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* make major/minor avail to others such as shared memory driver
|
|
||||||
*/
|
|
||||||
|
|
||||||
rtems_clock_major = major;
|
|
||||||
rtems_clock_minor = minor;
|
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
rtems_device_driver Clock_control(
|
|
||||||
rtems_device_major_number major,
|
|
||||||
rtems_device_minor_number minor,
|
|
||||||
void *pargp
|
|
||||||
)
|
|
||||||
{
|
|
||||||
rtems_unsigned32 isrlevel;
|
|
||||||
rtems_libio_ioctl_args_t *args = pargp;
|
|
||||||
|
|
||||||
if (args == 0)
|
|
||||||
goto done;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is hokey, but until we get a defined interface
|
|
||||||
* to do this, it will just be this simple...
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (args->command == rtems_build_name('I', 'S', 'R', ' '))
|
|
||||||
{
|
|
||||||
Clock_isr(CLOCK_VECTOR);
|
|
||||||
}
|
|
||||||
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
|
|
||||||
{
|
|
||||||
rtems_interrupt_disable( isrlevel );
|
|
||||||
user_callback = (void (*)(void))args->buffer;
|
|
||||||
(void) set_vector( User_Clock_isr, CLOCK_VECTOR, 1 );
|
|
||||||
rtems_interrupt_enable( isrlevel );
|
|
||||||
}
|
|
||||||
|
|
||||||
done:
|
|
||||||
return RTEMS_SUCCESSFUL;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
;
|
|
||||||
#if 0
|
|
||||||
; .include "register.ah"
|
|
||||||
.include "amd.ah"
|
|
||||||
.include "pswmacro.ah"
|
|
||||||
|
|
||||||
.text
|
|
||||||
; .equ IN,0x2000000
|
|
||||||
.reg CLOCK,gr78
|
|
||||||
.reg SECS,gr79
|
|
||||||
.equ CPUCLK,16
|
|
||||||
.equ RATE,100
|
|
||||||
.reg it0,gr64
|
|
||||||
.reg it1,gr65
|
|
||||||
.reg v0,gr96
|
|
||||||
timer_clear_sup:
|
|
||||||
const it0,IN
|
|
||||||
consth it0,IN
|
|
||||||
mfsr it1,tmr
|
|
||||||
andn it1,it1,it0
|
|
||||||
mtsr tmr,it1
|
|
||||||
const it0,RATE
|
|
||||||
cplt it0,CLOCK,it0
|
|
||||||
jmpf it0,carry
|
|
||||||
add CLOCK,CLOCK,1
|
|
||||||
iret
|
|
||||||
carry:
|
|
||||||
const CLOCK,0
|
|
||||||
add SECS,SECS,1
|
|
||||||
iret
|
|
||||||
|
|
||||||
.equ TICKS,(CPUCLK*1000000/RATE)
|
|
||||||
; .equ IE,0x1000000
|
|
||||||
timer_init_sup:
|
|
||||||
const it0,TICKS
|
|
||||||
consth it0,TICKS
|
|
||||||
mtsr tmc,it0
|
|
||||||
const it0,(IE|TICKS)
|
|
||||||
consth it0,(IE|TICKS)
|
|
||||||
mtsr tmr,it0
|
|
||||||
const SECS,0
|
|
||||||
const CLOCK,0
|
|
||||||
iret
|
|
||||||
|
|
||||||
timer_get_sup:
|
|
||||||
add gr96,SECS,0
|
|
||||||
iret
|
|
||||||
|
|
||||||
timer_disable_sup:
|
|
||||||
mfsr it0,ops
|
|
||||||
const it1,TD
|
|
||||||
consth it1,TD
|
|
||||||
andn it0,it1,it0
|
|
||||||
mtsr ops,it0
|
|
||||||
iret
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.global _a29k_init_timer
|
|
||||||
_a29k_init_timer:
|
|
||||||
#if 0
|
|
||||||
push msp,lr0
|
|
||||||
const lr2,INIT_TIMER
|
|
||||||
consth lr2,INIT_TIMER
|
|
||||||
const lr3,timer_init_sup
|
|
||||||
consth lr3,timer_init_sup
|
|
||||||
const v0,__settrap
|
|
||||||
consth v0,__settrap
|
|
||||||
calli lr0,v0
|
|
||||||
nop
|
|
||||||
|
|
||||||
const lr2,CLEAR_TIMER
|
|
||||||
consth lr2,CLEAR_TIMER
|
|
||||||
const lr3,timer_clear_sup
|
|
||||||
consth lr3,timer_clear_sup
|
|
||||||
const v0,__settrap
|
|
||||||
consth v0,__settrap
|
|
||||||
calli lr0,v0
|
|
||||||
nop
|
|
||||||
|
|
||||||
const lr2,DISABLE_TIMER
|
|
||||||
consth lr2,DISABLE_TIMER
|
|
||||||
const lr3,timer_disable_sup
|
|
||||||
consth lr3,timer_disable_sup
|
|
||||||
const v0,__settrap
|
|
||||||
consth v0,__settrap
|
|
||||||
calli lr0,v0
|
|
||||||
nop
|
|
||||||
|
|
||||||
const lr2,GET_TIMER
|
|
||||||
consth lr2,GET_TIMER
|
|
||||||
const lr3,timer_get_sup
|
|
||||||
consth lr3,timer_get_sup
|
|
||||||
const v0,__settrap
|
|
||||||
consth v0,__settrap
|
|
||||||
calli lr0,v0
|
|
||||||
nop
|
|
||||||
|
|
||||||
asneq INIT_TIMER,gr1,gr1
|
|
||||||
pop lr0,msp
|
|
||||||
jmpi lr0
|
|
||||||
nop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.global _a29k_clear_timer
|
|
||||||
_a29k_clear_timer:
|
|
||||||
#if 0
|
|
||||||
; asneq CLEAR_TIMER,gr1,gr1
|
|
||||||
jmpi lr0
|
|
||||||
nop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.global _a29k_disable_timer
|
|
||||||
_a29k_disable_timer:
|
|
||||||
#if 0
|
|
||||||
asneq DISABLE_TIMER,gr1,gr1
|
|
||||||
jmpi lr0
|
|
||||||
nop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.global _a29k_get_timer
|
|
||||||
_a29k_get_timer:
|
|
||||||
#if 0
|
|
||||||
asneq GET_TIMER,gr1,gr1
|
|
||||||
jmpi lr0
|
|
||||||
nop
|
|
||||||
#endif
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
/*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void a29k_init_timer( unsigned32 timer_clock_interval );
|
|
||||||
extern void a29k_disable_timer(void);
|
|
||||||
extern void a29k_clear_timer(void);
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
## Process this file with autoconf to produce a configure script.
|
|
||||||
##
|
|
||||||
## $Id$
|
|
||||||
|
|
||||||
AC_PREREQ(2.57)
|
|
||||||
AC_INIT([rtems-c-src-lib-libcpu-a29k],[_RTEMS_VERSION],[rtems-bugs@OARcorp.com])
|
|
||||||
AC_CONFIG_SRCDIR([clock])
|
|
||||||
RTEMS_TOP(../../../../..)
|
|
||||||
AC_CONFIG_AUX_DIR(../../../../..)
|
|
||||||
|
|
||||||
RTEMS_CANONICAL_TARGET_CPU
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([no-define foreign 1.7.2])
|
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
RTEMS_ENABLE_BARE
|
|
||||||
RTEMS_ENV_RTEMSBSP
|
|
||||||
|
|
||||||
RTEMS_CHECK_CPU
|
|
||||||
RTEMS_CANONICAL_HOST
|
|
||||||
|
|
||||||
RTEMS_PROJECT_ROOT
|
|
||||||
|
|
||||||
RTEMS_PROG_CC_FOR_TARGET
|
|
||||||
RTEMS_CANONICALIZE_TOOLS
|
|
||||||
RTEMS_PROG_CCAS
|
|
||||||
|
|
||||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
|
||||||
|
|
||||||
# Explicitly list all Makefiles here
|
|
||||||
AC_CONFIG_FILES([Makefile
|
|
||||||
clock/Makefile
|
|
||||||
timer/Makefile])
|
|
||||||
AC_OUTPUT
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
##
|
|
||||||
## $Id$
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
PGM = $(ARCH)/timer.rel
|
|
||||||
|
|
||||||
# NOTE: timerisr is normally an assembly file!!!
|
|
||||||
|
|
||||||
C_FILES = timer.c timerisr.c
|
|
||||||
OBJS = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../automake/compile.am
|
|
||||||
include $(top_srcdir)/../../../../../automake/lib.am
|
|
||||||
|
|
||||||
#
|
|
||||||
# (OPTIONAL) Add local stuff here using +=
|
|
||||||
#
|
|
||||||
|
|
||||||
$(PGM): $(OBJS)
|
|
||||||
$(make-rel)
|
|
||||||
|
|
||||||
all-local: $(ARCH) $(OBJS) $(PGM)
|
|
||||||
|
|
||||||
.PRECIOUS: $(PGM)
|
|
||||||
|
|
||||||
EXTRA_DIST = Makefile timer.c timerisr.c
|
|
||||||
|
|
||||||
include $(top_srcdir)/../../../../../automake/local.am
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
/* timer.c
|
|
||||||
*
|
|
||||||
* This file manages the benchmark timer used by the RTEMS Timing Test
|
|
||||||
* Suite. Each measured time period is demarcated by calls to
|
|
||||||
* Timer_initialize() and Read_timer(). Read_timer() usually returns
|
|
||||||
* the number of microseconds since Timer_initialize() exitted.
|
|
||||||
*
|
|
||||||
* NOTE: 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$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char _sccsid[] = "@(#)timer.c 05/07/96 1.4\n";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <rtems.h>
|
|
||||||
|
|
||||||
#define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ )
|
|
||||||
#define TIMER_MAX_VALUE 0xffffffff
|
|
||||||
|
|
||||||
static unsigned32 read_timer( void )
|
|
||||||
{
|
|
||||||
return 0; /* do something with real hardware here */
|
|
||||||
}
|
|
||||||
|
|
||||||
static rtems_boolean Timer_driver_Find_average_overhead;
|
|
||||||
static unsigned32 Timer_initial_value = 0;
|
|
||||||
|
|
||||||
void Timer_initialize( void )
|
|
||||||
{
|
|
||||||
Timer_initial_value = read_timer();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Somehow start the timer
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Timer is always running */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The following controls the behavior of Read_timer().
|
|
||||||
*
|
|
||||||
* AVG_OVEREHAD is the overhead for starting and stopping the timer. It
|
|
||||||
* is usually deducted from the number returned.
|
|
||||||
*
|
|
||||||
* LEAST_VALID is the lowest number this routine should trust. Numbers
|
|
||||||
* below this are "noise" and zero is returned.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define AVG_OVERHEAD 8 /* It typically takes X.X microseconds */
|
|
||||||
/* (Y countdowns) to start/stop the timer. */
|
|
||||||
/* This value is in cycles. */
|
|
||||||
#define LEAST_VALID 1 /* Don't trust a clicks value lower than this */
|
|
||||||
|
|
||||||
int Read_timer( void )
|
|
||||||
{
|
|
||||||
unsigned64 clicks;
|
|
||||||
unsigned32 total;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Read the timer and see how many clicks it has been since we started.
|
|
||||||
*/
|
|
||||||
|
|
||||||
clicks = read_timer(); /* XXX: read some HW here */
|
|
||||||
if (clicks < Timer_initial_value)
|
|
||||||
{
|
|
||||||
clicks += TIMER_MAX_VALUE;
|
|
||||||
}
|
|
||||||
clicks -= Timer_initial_value;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Total is calculated by taking into account the number of timer overflow
|
|
||||||
* interrupts since the timer was initialized and clicks since the last
|
|
||||||
* interrupts.
|
|
||||||
*/
|
|
||||||
#if 0 /* leave total in number of cycles */
|
|
||||||
total = clicks / CLOCKS_PER_MICROSECOND;
|
|
||||||
#else
|
|
||||||
total = clicks;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( Timer_driver_Find_average_overhead == 1 )
|
|
||||||
return total; /* in # cycles units */
|
|
||||||
else {
|
|
||||||
if ( total < LEAST_VALID )
|
|
||||||
return 0; /* below timer resolution */
|
|
||||||
/*
|
|
||||||
* leave total in cycles
|
|
||||||
*/
|
|
||||||
return (total - AVG_OVERHEAD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Empty function call used in loops to measure basic cost of looping
|
|
||||||
* in Timing Test Suite.
|
|
||||||
*/
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/* timerisr.s
|
|
||||||
*
|
|
||||||
* If required this ISR is used to bump a count of interval "overflow"
|
|
||||||
* interrupts which have occurred since the timer was started. The
|
|
||||||
* number of overflows is taken into account in the Read_timer()
|
|
||||||
* routine if necessary.
|
|
||||||
*
|
|
||||||
* To reduce overhead this is best to be the "rawest" hardware interupt
|
|
||||||
* handler you can write. This should be the only interrupt which can
|
|
||||||
* occur during the measured time period.
|
|
||||||
*
|
|
||||||
* NOTE: This file is USUALLY in assembly and is LEAN AND MEAN.
|
|
||||||
* Any code in this isr is pure overhead which can perturb
|
|
||||||
* the accuracy of the Timing Test Suite.
|
|
||||||
*
|
|
||||||
* 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$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char _sccsid[] = "@(#)timerisr.c 03/15/96 1.1\n";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <rtems.h>
|
|
||||||
|
|
||||||
extern rtems_unsigned32 _Timer_interrupts;
|
|
||||||
|
|
||||||
void timerisr( void )
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* _Timer_interrupts += TIMER_BETWEEN_OVERFLOWS (usually in microseconds)
|
|
||||||
* return from interrupt
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user