RTEMS 6.1-rc6
Loading...
Searching...
No Matches
sparc-counter.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
12/*
13 * Copyright (C) 2016, 2023 embedded brains GmbH & Co. KG
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef _BSP_SPARC_COUNTER_H
38#define _BSP_SPARC_COUNTER_H
39
40#include <rtems/score/cpu.h>
41
42#ifdef __cplusplus
43extern "C" {
44#endif /* __cplusplus */
45
46struct timecounter;
47
48void _SPARC_Counter_at_tick_clock( void );
49
50CPU_Counter_ticks _SPARC_Counter_read_default( void );
51
52CPU_Counter_ticks _SPARC_Counter_read_clock_isr_disabled( void );
53
54CPU_Counter_ticks _SPARC_Counter_read_clock( void );
55
56uint32_t _SPARC_Get_timecount_clock( struct timecounter * );
57
58typedef CPU_Counter_ticks ( *SPARC_Counter_read )( void );
59
60/*
61 * The SPARC processors supported by RTEMS have no built-in CPU counter
62 * support. We have to use some hardware counter module for this purpose, for
63 * example the GPTIMER instance used by the clock driver. The BSP must provide
64 * an implementation of the CPU counter read function. This allows the use of
65 * dynamic hardware enumeration.
66 */
67typedef struct {
68 SPARC_Counter_read read_isr_disabled;
69 SPARC_Counter_read read;
70 volatile const CPU_Counter_ticks *counter_register;
71 volatile const uint32_t *pending_register;
72 uint32_t pending_mask;
73 CPU_Counter_ticks accumulated;
74 CPU_Counter_ticks interval;
76
77extern SPARC_Counter _SPARC_Counter;
78
79#define SPARC_COUNTER_DEFINITION \
80 SPARC_Counter _SPARC_Counter = { \
81 .read_isr_disabled = _SPARC_Counter_read_default, \
82 .read = _SPARC_Counter_read_default \
83 }
84
85#ifdef __cplusplus
86}
87#endif /* __cplusplus */
88
89#endif /* _BSP_SPARC_COUNTER_H */
ssize_t read(int fd, void *buffer, size_t count)
Definition: read.c:46
Definition: sparc-counter.h:67
Definition: timetc.h:58