Hello Sebastian,
On 2023-10-19 15:44, Sebastian Huber wrote:
On 19.10.23 12:22, Martin Åberg wrote:
On 2023-10-13 13:00, Sebastian Huber wrote >> LEON3_Timer_Regs is probed in
amba.c. There is a link time option to
set GPTIMER core index (leon3_timer_core_index). Instances could have
unique GPTIMER cores associated.
The preprocessor symbols LEON3_CLOCK_INDEX (clock driver) and
LEON3_COUNTER_GPTIMER_INDEX (timecounter) are used as subtimer index
of the GPTIMER core LEON3_Timer_Regs.
For CPU0 these are:
- LEON3_CLOCK_INDEX is 0 (equal to hardware processor index)
- LEON3_COUNTER_GPTIMER_INDEX is 1 (LEON3_CLOCK_INDEX+1)
For CPU1 these are:
- LEON3_CLOCK_INDEX is 1 (equal to hardware processor index)
- LEON3_COUNTER_GPTIMER_INDEX is 2 (LEON3_CLOCK_INDEX+1)
etc...
In the case when LEON3_Timer_Regs is different on CPU0 and CPU1, there
is no conflict but will leave low-numbered subtimers unused. (Behavior
not introduced by this patch.)
In the case when LEON3_Timer_Regs is equal on the CPU0 and CPU1
instances, it appears there is now a conflict between
CPU0:LEON3_COUNTER_GPTIMER_INDEX and CPU1:LEON3_CLOCK_INDEX.
Ok, I suggest to change the LEON3_CLOCK_INDEX definition to:
/**
* @brief This constant defines the index of the GPTIMER timer used by the
* clock driver.
*/
#if defined(RTEMS_MULTIPROCESSING)
#define LEON3_CLOCK_INDEX \
( leon3_timer_core_index != 0 ? 0 : 2 * LEON3_Cpu_Index )
#else
#define LEON3_CLOCK_INDEX 0
#endif
OK!
/**
* @brief This constant defines the index of the GPTIMER timer used by the
* CPU counter if the CPU counter uses the GPTIMER.
*/
#if defined(RTEMS_SMP)
#define LEON3_COUNTER_GPTIMER_INDEX ( LEON3_CLOCK_INDEX + 1 )
#else
#define LEON3_COUNTER_GPTIMER_INDEX LEON3_CLOCK_INDEX
#endif
The rtems_configuration_get_user_multiprocessing_table() is always !=
NULL if RTEMS_MULTIPROCESSING is defined.
With the suggested update of the LEON3_CLOCK_INDEX definition, the
following should be enough for all cases:
#define LEON3_COUNTER_GPTIMER_INDEX ( LEON3_CLOCK_INDEX + 1 )
--
Best regards,
Martin Åberg
Software Engineer
Frontgrade Gaisler
martin.ab...@gaisler.com
Frontgrade Gaisler AB, Kungsgatan 12, SE-411 19 GÖTEBORG, Sweden.
+46 (0) 31 775 8650, www.gaisler.com
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel