diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-26 12:20:45 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-26 15:12:49 +0200 |
commit | 2190bc61bf60379a0a3c94e08b851fab309628c3 (patch) | |
tree | 09743e998f2b44628be481e0cc8c400f5ddd8d59 /c/src/lib/libcpu/m68k/mcf5206/timer | |
parent | bsps/m68k: Move fpsp support to bsps (diff) | |
download | rtems-2190bc61bf60379a0a3c94e08b851fab309628c3.tar.bz2 |
bsps/mcf5206elite: Move libcpu content to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'c/src/lib/libcpu/m68k/mcf5206/timer')
-rw-r--r-- | c/src/lib/libcpu/m68k/mcf5206/timer/timer.c | 158 | ||||
-rw-r--r-- | c/src/lib/libcpu/m68k/mcf5206/timer/timerisr.S | 48 |
2 files changed, 0 insertions, 206 deletions
diff --git a/c/src/lib/libcpu/m68k/mcf5206/timer/timer.c b/c/src/lib/libcpu/m68k/mcf5206/timer/timer.c deleted file mode 100644 index dbeebc80e0..0000000000 --- a/c/src/lib/libcpu/m68k/mcf5206/timer/timer.c +++ /dev/null @@ -1,158 +0,0 @@ -/** - * @file - * @brief Timer Init - * - * This module initializes TIMER 2 for on the MCF5206E for benchmarks. - */ - -/* - * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia - * Author: Victor V. Vengerov <vvv@oktet.ru> - * - * Based on work: - * Author: - * David Fiddes, D.J@fiddes.surfaid.org - * http://www.calm.hw.ac.uk/davidf/coldfire/ - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#include <rtems.h> -#include <bsp.h> -#include <rtems/btimer.h> -#include "mcf5206/mcf5206e.h" - -#define TRR2_VAL 65530 - -uint32_t Timer_interrupts; - -bool benchmark_timer_find_average_overhead; - -/* External assembler interrupt handler routine */ -extern rtems_isr timerisr(rtems_vector_number vector); - - -/* benchmark_timer_initialize -- - * Initialize timer 2 for accurate time measurement. - * - * PARAMETERS: - * none - * - * RETURNS: - * none - */ -void -benchmark_timer_initialize(void) -{ - /* Catch timer2 interrupts */ - set_vector(timerisr, BSP_INTVEC_TIMER2, 0); - - /* Initialize interrupts for timer2 */ - *MCF5206E_ICR(MBAR, MCF5206E_INTR_TIMER_2) = - MCF5206E_ICR_AVEC | - ((BSP_INTLVL_TIMER2 << MCF5206E_ICR_IL_S) & MCF5206E_ICR_IL) | - ((BSP_INTPRIO_TIMER2 << MCF5206E_ICR_IP_S) & MCF5206E_ICR_IP); - - /* Enable interrupts from timer2 */ - *MCF5206E_IMR(MBAR) &= ~MCF5206E_INTR_BIT(MCF5206E_INTR_TIMER_2); - - /* Reset Timer */ - *MCF5206E_TMR(MBAR, 2) = MCF5206E_TMR_RST; - *MCF5206E_TMR(MBAR, 2) = MCF5206E_TMR_ICLK_STOP; - *MCF5206E_TMR(MBAR, 2) = MCF5206E_TMR_RST; - *MCF5206E_TCN(MBAR, 2) = 0; /* Zero timer counter */ - Timer_interrupts = 0; /* Clear timer ISR counter */ - *MCF5206E_TER(MBAR, 2) = MCF5206E_TER_REF | MCF5206E_TER_CAP; /*clr pend*/ - *MCF5206E_TRR(MBAR, 2) = TRR2_VAL - 1; - *MCF5206E_TMR(MBAR, 2) = - (((BSP_SYSTEM_FREQUENCY / 1000000) << MCF5206E_TMR_PS_S) & - MCF5206E_TMR_PS) | - MCF5206E_TMR_CE_NONE | MCF5206E_TMR_ORI | MCF5206E_TMR_FRR | - MCF5206E_TMR_RST; - *MCF5206E_TMR(MBAR, 2) |= MCF5206E_TMR_ICLK_MSCLK; -} - -/* - * The following controls the behavior of benchmark_timer_read(). - * - * FIND_AVG_OVERHEAD * instructs the routine to return the "raw" count. - * - * 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 0 /* It typically takes 2.0 microseconds */ - /* (Y countdowns) to start/stop the timer. */ - /* This value is in microseconds. */ -#define LEAST_VALID 1 /* Don't trust a clicks value lower than this */ - -/* benchmark_timer_read -- - * Read timer value in microsecond units since timer start. - * - * PARAMETERS: - * none - * - * RETURNS: - * number of microseconds since timer has been started - */ -benchmark_timer_t -benchmark_timer_read( void ) -{ - uint16_t clicks; - uint32_t total; - - /* - * Read the timer and see how many clicks it has been since counter - * rolled over. - */ - clicks = *MCF5206E_TCN(MBAR, 2); - - /* Stop Timer... */ - *MCF5206E_TMR(MBAR, 2) = MCF5206E_TMR_ICLK_STOP | - MCF5206E_TMR_RST; - - /* - * Total is calculated by taking into account the number of timer - * overflow interrupts since the timer was initialized and clicks - * since the last interrupts. - */ - - total = (Timer_interrupts * TRR2_VAL) + clicks; - - if ( benchmark_timer_find_average_overhead == 1 ) - return total; /* in XXX microsecond units */ - - if ( total < LEAST_VALID ) - return 0; /* below timer resolution */ - - /* - * Return the count in microseconds - */ - return (total - AVG_OVERHEAD); -} - -/* benchmark_timer_disable_subtracting_average_overhead -- - * This routine is invoked by the "Check Timer" (tmck) test in the - * RTEMS Timing Test Suite. It makes the benchmark_timer_read routine not - * subtract the overhead required to initialize and read the benchmark - * timer. - * - * PARAMETERS: - * find_flag - boolean flag, true if overhead must not be subtracted. - * - * RETURNS: - * none - */ -void -benchmark_timer_disable_subtracting_average_overhead(bool find_flag) -{ - benchmark_timer_find_average_overhead = find_flag; -} diff --git a/c/src/lib/libcpu/m68k/mcf5206/timer/timerisr.S b/c/src/lib/libcpu/m68k/mcf5206/timer/timerisr.S deleted file mode 100644 index bbcf6e2d6a..0000000000 --- a/c/src/lib/libcpu/m68k/mcf5206/timer/timerisr.S +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @file - * @brief Handle MCF5206 TIMER2 interrupts - * - * All code in this routine is pure overhead which can perturb the - * accuracy of RTEMS' timing test suite. - * - * See also: benchmark_timer_read() - * - * 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. - * - * An external counter, Timer_interrupts, is incremented. - */ - -/* - * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia - * Author: Victor V. Vengerov <vvv@oktet.ru> - * - * This file based on work: - * Author: - * David Fiddes, D.J@fiddes.surfaid.org - * http://www.calm.hw.ac.uk/davidf/coldfire/ - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#include <rtems/asm.h> -#include <bsp.h> -#include "mcf5206/mcf5206e.h" - -BEGIN_CODE - PUBLIC(timerisr) -SYM(timerisr): - move.l a0, a7@- - move.l #MCF5206E_TER(BSP_MEM_ADDR_IMM, 2), a0 - move.b # (MCF5206E_TER_REF + MCF5206E_TER_CAP), (a0) - addq.l #1,SYM(Timer_interrupts) | increment timer value - move.l a7@+, a0 - rte -END_CODE -END |