diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-05-23 14:17:25 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-06-15 13:02:44 +0200 |
commit | 65f868cac6f7fd5c3ad02046574c19f8f4673255 (patch) | |
tree | 15103fb87ed2e7161c17006e2c077f35e3506a95 /cpukit | |
parent | Add RTEMS_SYSINIT_CPU_COUNTER (diff) | |
download | rtems-65f868cac6f7fd5c3ad02046574c19f8f4673255.tar.bz2 |
Add _CPU_Counter_frequency()
Add rtems_counter_frequency() API function. Use it to initialize the
counter value converter via the new system initialization step
(RTEMS_SYSINIT_CPU_COUNTER). This decouples the counter implementation
and the counter converter. It avoids an unnecessary pull in of the
64-bit integer division from libgcc.
Update #3456.
Diffstat (limited to '')
36 files changed, 103 insertions, 7 deletions
diff --git a/cpukit/include/rtems/counter.h b/cpukit/include/rtems/counter.h index 3b428402a8..e770c96eb0 100644 --- a/cpukit/include/rtems/counter.h +++ b/cpukit/include/rtems/counter.h @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2014, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -62,6 +62,16 @@ extern "C" { typedef CPU_Counter_ticks rtems_counter_ticks; /** + * @brief Returns the current counter frequency in Hz. + * + * @return The current counter frequency in Hz. + */ +static inline uint32_t rtems_counter_frequency( void ) +{ + return _CPU_Counter_frequency(); +} + +/** * @brief Reads the current counter values. * * @return The current counter values. diff --git a/cpukit/sapi/src/cpucounterconverter.c b/cpukit/sapi/src/cpucounterconverter.c index b896e4cc7f..12d55362df 100644 --- a/cpukit/sapi/src/cpucounterconverter.c +++ b/cpukit/sapi/src/cpucounterconverter.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2014, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -13,12 +13,13 @@ */ #include <rtems/counter.h> +#include <rtems/sysinit.h> RTEMS_STATIC_ASSERT(sizeof(rtems_counter_ticks) <= sizeof(uint32_t), type); -static uint64_t to_ns_scaler = UINT64_C(1) << 32; +static uint64_t to_ns_scaler; -static uint64_t from_ns_scaler = UINT64_C(1) << 32; +static uint64_t from_ns_scaler; uint64_t rtems_counter_ticks_to_nanoseconds( rtems_counter_ticks counter ) { @@ -37,3 +38,14 @@ void rtems_counter_initialize_converter( uint32_t frequency ) to_ns_scaler = ((ns_per_s << 32) + frequency - 1) / frequency; from_ns_scaler = ((UINT64_C(1) << 32) * frequency + ns_per_s - 1) / ns_per_s; } + +static void rtems_counter_sysinit( void ) +{ + rtems_counter_initialize_converter( rtems_counter_frequency() ); +} + +RTEMS_SYSINIT_ITEM( + rtems_counter_sysinit, + RTEMS_SYSINIT_CPU_COUNTER, + RTEMS_SYSINIT_ORDER_LAST +); diff --git a/cpukit/score/cpu/arm/include/rtems/score/cpu.h b/cpukit/score/cpu/arm/include/rtems/score/cpu.h index 728a43c528..7ea6980959 100644 --- a/cpukit/score/cpu/arm/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/include/rtems/score/cpu.h @@ -596,6 +596,8 @@ static inline uint16_t CPU_swap_u16( uint16_t value ) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/bfin/Makefile.am b/cpukit/score/cpu/bfin/Makefile.am index 3d7483a220..7febda59b6 100644 --- a/cpukit/score/cpu/bfin/Makefile.am +++ b/cpukit/score/cpu/bfin/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += bfin-exception-frame-print.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/bfin/include/rtems/score/cpu.h b/cpukit/score/cpu/bfin/include/rtems/score/cpu.h index d2c2cade08..a361e023ed 100644 --- a/cpukit/score/cpu/bfin/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/bfin/include/rtems/score/cpu.h @@ -982,6 +982,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/epiphany/Makefile.am b/cpukit/score/cpu/epiphany/Makefile.am index 659dd6f554..0c75bcdcd5 100644 --- a/cpukit/score/cpu/epiphany/Makefile.am +++ b/cpukit/score/cpu/epiphany/Makefile.am @@ -8,6 +8,7 @@ libscorecpu_a_SOURCES = cpu.c libscorecpu_a_SOURCES += epiphany-exception-handler.S libscorecpu_a_SOURCES += epiphany-context-switch.S libscorecpu_a_SOURCES += epiphany-context-initialize.c +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += setjmp.S libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h b/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h index 8979381259..84565d15d2 100644 --- a/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/epiphany/include/rtems/score/cpu.h @@ -854,6 +854,8 @@ static inline void _CPU_Context_validate( uintptr_t pattern ) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/i386/Makefile.am b/cpukit/score/cpu/i386/Makefile.am index fe7fa5582c..b03d8593c4 100644 --- a/cpukit/score/cpu/i386/Makefile.am +++ b/cpukit/score/cpu/i386/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/i386/include/rtems/score/cpu.h b/cpukit/score/cpu/i386/include/rtems/score/cpu.h index 42958c00f0..0986663be1 100644 --- a/cpukit/score/cpu/i386/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/i386/include/rtems/score/cpu.h @@ -697,6 +697,8 @@ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/lm32/Makefile.am b/cpukit/score/cpu/lm32/Makefile.am index 75bcba5793..795a6be283 100644 --- a/cpukit/score/cpu/lm32/Makefile.am +++ b/cpukit/score/cpu/lm32/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.S irq.c +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += lm32-exception-frame-print.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/lm32/include/rtems/score/cpu.h b/cpukit/score/cpu/lm32/include/rtems/score/cpu.h index f36e00e404..fe8107c51b 100644 --- a/cpukit/score/cpu/lm32/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/lm32/include/rtems/score/cpu.h @@ -1018,6 +1018,8 @@ static inline uint16_t CPU_swap_u16(uint16_t v) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/m32c/Makefile.am b/cpukit/score/cpu/m32c/Makefile.am index 22bec7fce0..6695d35c77 100644 --- a/cpukit/score/cpu/m32c/Makefile.am +++ b/cpukit/score/cpu/m32c/Makefile.am @@ -3,6 +3,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.c context_switch.S context_init.c \ varvects.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += m32c-exception-frame-print.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/m32c/include/rtems/score/cpu.h b/cpukit/score/cpu/m32c/include/rtems/score/cpu.h index ec0e71c286..c5486e80d6 100644 --- a/cpukit/score/cpu/m32c/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/m32c/include/rtems/score/cpu.h @@ -968,6 +968,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/m68k/Makefile.am b/cpukit/score/cpu/m68k/Makefile.am index 68fd3a253a..e02b4ab600 100644 --- a/cpukit/score/cpu/m68k/Makefile.am +++ b/cpukit/score/cpu/m68k/Makefile.am @@ -4,6 +4,7 @@ noinst_LIBRARIES = libscorecpu.a libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) libscorecpu_a_SOURCES = cpu.c cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += m68k-exception-frame-print.c libscorecpu_a_SOURCES += __m68k_read_tp.c diff --git a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h index 9b140d0da3..459ef8a9cd 100644 --- a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h @@ -679,6 +679,8 @@ void _CPU_Exception_frame_print( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/mips/Makefile.am b/cpukit/score/cpu/mips/Makefile.am index fe7fa5582c..b03d8593c4 100644 --- a/cpukit/score/cpu/mips/Makefile.am +++ b/cpukit/score/cpu/mips/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/mips/include/rtems/score/cpu.h b/cpukit/score/cpu/mips/include/rtems/score/cpu.h index acc4ef81ec..46d1eb28e8 100644 --- a/cpukit/score/cpu/mips/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/mips/include/rtems/score/cpu.h @@ -988,6 +988,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/moxie/Makefile.am b/cpukit/score/cpu/moxie/Makefile.am index 29c9a656c5..d5e8952693 100644 --- a/cpukit/score/cpu/moxie/Makefile.am +++ b/cpukit/score/cpu/moxie/Makefile.am @@ -6,6 +6,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c moxie-exception-frame-print.c cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/moxie/include/rtems/score/cpu.h b/cpukit/score/cpu/moxie/include/rtems/score/cpu.h index 7ab3e373b4..403b05f9fb 100644 --- a/cpukit/score/cpu/moxie/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/moxie/include/rtems/score/cpu.h @@ -835,6 +835,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/nios2/Makefile.am b/cpukit/score/cpu/nios2/Makefile.am index 3d6a35905c..a0ecab3345 100644 --- a/cpukit/score/cpu/nios2/Makefile.am +++ b/cpukit/score/cpu/nios2/Makefile.am @@ -5,6 +5,7 @@ CLEANFILES = noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += nios2-context-initialize.c libscorecpu_a_SOURCES += nios2-context-switch.S diff --git a/cpukit/score/cpu/nios2/include/rtems/score/cpu.h b/cpukit/score/cpu/nios2/include/rtems/score/cpu.h index c7fdb92d01..1d088ed058 100644 --- a/cpukit/score/cpu/nios2/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/nios2/include/rtems/score/cpu.h @@ -353,6 +353,8 @@ static inline uint32_t CPU_swap_u32( uint32_t value ) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/no_cpu/Makefile.am b/cpukit/score/cpu/no_cpu/Makefile.am index 556d3dea34..0d89f5af2b 100644 --- a/cpukit/score/cpu/no_cpu/Makefile.am +++ b/cpukit/score/cpu/no_cpu/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c cpu_asm.c +libscorecpu_a_SOURCES += cpucounterfrequency.c libscorecpu_a_SOURCES += cpucounterread.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/no_cpu/cpucounterfrequency.c b/cpukit/score/cpu/no_cpu/cpucounterfrequency.c new file mode 100644 index 0000000000..bbb8c127fe --- /dev/null +++ b/cpukit/score/cpu/no_cpu/cpucounterfrequency.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2018 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * 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/score/cpu.h> + +uint32_t _CPU_Counter_frequency( void ) +{ + return 1000000000; +} diff --git a/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h index 5902b4ef36..45edbaa3cf 100644 --- a/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h @@ -1329,6 +1329,13 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; /** + * @brief Returns the current CPU counter frequency in Hz. + * + * @return The current CPU counter frequency in Hz. + */ +uint32_t _CPU_Counter_frequency( void ); + +/** * @brief Returns the current CPU counter value. * * A CPU counter is some free-running counter. It ticks usually with a diff --git a/cpukit/score/cpu/or1k/Makefile.am b/cpukit/score/cpu/or1k/Makefile.am index ac83acf9b3..732f7c3d69 100644 --- a/cpukit/score/cpu/or1k/Makefile.am +++ b/cpukit/score/cpu/or1k/Makefile.am @@ -6,8 +6,9 @@ noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = libscorecpu_a_SOURCES += cpu.c -libscorecpu_a_SOURCES += or1k-context-switch.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += or1k-context-initialize.c +libscorecpu_a_SOURCES += or1k-context-switch.S libscorecpu_a_SOURCES += or1k-context-validate.S libscorecpu_a_SOURCES += or1k-context-volatile-clobber.S libscorecpu_a_SOURCES += or1k-exception-default.c diff --git a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h index 648a7a6b9c..1dedeb6629 100644 --- a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h @@ -665,8 +665,6 @@ void _CPU_Context_Initialize( #define CPU_MAXIMUM_PROCESSORS 32 #ifndef ASM -typedef uint32_t CPU_Counter_ticks; - typedef struct { uint32_t r[32]; @@ -856,6 +854,8 @@ static inline unsigned int CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h b/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h index 31e74aba95..db2479b210 100644 --- a/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h @@ -803,6 +803,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + static inline CPU_Counter_ticks _CPU_Counter_read( void ) { CPU_Counter_ticks value; diff --git a/cpukit/score/cpu/riscv/Makefile.am b/cpukit/score/cpu/riscv/Makefile.am index 3630c038a7..e7714686f2 100644 --- a/cpukit/score/cpu/riscv/Makefile.am +++ b/cpukit/score/cpu/riscv/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) libscorecpu_a_SOURCES = cpu.c +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += riscv-exception-handler.S libscorecpu_a_SOURCES += riscv-exception-default.c libscorecpu_a_SOURCES += riscv-exception-frame-print.c diff --git a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h index 6f286e0bd8..663dd090f2 100644 --- a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h @@ -474,6 +474,8 @@ static inline void _CPU_Context_validate( uintptr_t pattern ) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); #ifdef RTEMS_SMP diff --git a/cpukit/score/cpu/sh/Makefile.am b/cpukit/score/cpu/sh/Makefile.am index 6a19ce4cb8..37188443ff 100644 --- a/cpukit/score/cpu/sh/Makefile.am +++ b/cpukit/score/cpu/sh/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c context.c +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += sh-exception-frame-print.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/sh/include/rtems/score/cpu.h b/cpukit/score/cpu/sh/include/rtems/score/cpu.h index aeef5defdd..79453bc1ac 100644 --- a/cpukit/score/cpu/sh/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/sh/include/rtems/score/cpu.h @@ -721,6 +721,8 @@ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/sparc/include/rtems/score/cpu.h b/cpukit/score/cpu/sparc/include/rtems/score/cpu.h index be02dcf9d3..76c8e429e0 100644 --- a/cpukit/score/cpu/sparc/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/sparc/include/rtems/score/cpu.h @@ -1158,6 +1158,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + typedef CPU_Counter_ticks ( *SPARC_Counter_read )( void ); typedef CPU_Counter_ticks ( *SPARC_Counter_difference )( diff --git a/cpukit/score/cpu/sparc64/Makefile.am b/cpukit/score/cpu/sparc64/Makefile.am index 6cd23f0c95..711036e41a 100644 --- a/cpukit/score/cpu/sparc64/Makefile.am +++ b/cpukit/score/cpu/sparc64/Makefile.am @@ -5,6 +5,7 @@ libscorecpu_a_SOURCES = libscorecpu_a_SOURCES += context.S libscorecpu_a_SOURCES += cpu.c libscorecpu_a_SOURCES += interrupt.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += sparc64-exception-frame-print.c libscorecpu_a_SOURCES += sparc64-syscall.S diff --git a/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h b/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h index 9db7cc3134..f1412e0bbb 100644 --- a/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h @@ -1032,6 +1032,8 @@ static inline uint32_t CPU_swap_u32( typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( diff --git a/cpukit/score/cpu/v850/Makefile.am b/cpukit/score/cpu/v850/Makefile.am index 15867801a5..8db039c9f5 100644 --- a/cpukit/score/cpu/v850/Makefile.am +++ b/cpukit/score/cpu/v850/Makefile.am @@ -3,6 +3,7 @@ include $(top_srcdir)/automake/compile.am noinst_LIBRARIES = libscorecpu.a libscorecpu_a_SOURCES = cpu.c libscorecpu_a_SOURCES += cpu_asm.S +libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c libscorecpu_a_SOURCES += ../no_cpu/cpucounterread.c libscorecpu_a_SOURCES += v850-exception-frame-print.c libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/cpukit/score/cpu/v850/include/rtems/score/cpu.h b/cpukit/score/cpu/v850/include/rtems/score/cpu.h index 620d228146..5c65f8532f 100644 --- a/cpukit/score/cpu/v850/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/v850/include/rtems/score/cpu.h @@ -934,6 +934,8 @@ static inline uint16_t CPU_swap_u16( uint16_t value ) typedef uint32_t CPU_Counter_ticks; +uint32_t _CPU_Counter_frequency( void ); + CPU_Counter_ticks _CPU_Counter_read( void ); static inline CPU_Counter_ticks _CPU_Counter_difference( |