diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-03 19:50:48 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-09-06 14:19:13 +0200 |
commit | c6c3a9e5d9758b1b199fe0fe0e118c704e83f68b (patch) | |
tree | 1c1c7c907680a043207d1a9f0526466791f5e46a | |
parent | 784cb3bc198d9f6b635d301e4d75d74f8e360da9 (diff) |
bsp/leon3: Add LEON3_PROBE_ASR_22_23_UP_COUNTER
-rw-r--r-- | bsps/sparc/leon3/clock/ckinit.c | 5 | ||||
-rw-r--r-- | bsps/sparc/leon3/start/cpucounter.c | 5 | ||||
-rw-r--r-- | spec/build/bsps/sparc/leon3/grp.yml | 2 | ||||
-rw-r--r-- | spec/build/bsps/sparc/leon3/optasrupcntprobe.yml | 20 |
4 files changed, 32 insertions, 0 deletions
diff --git a/bsps/sparc/leon3/clock/ckinit.c b/bsps/sparc/leon3/clock/ckinit.c index f7d1cc3c5e..1750fc1972 100644 --- a/bsps/sparc/leon3/clock/ckinit.c +++ b/bsps/sparc/leon3/clock/ckinit.c @@ -164,6 +164,8 @@ static void bsp_clock_handler_install(rtems_interrupt_handler isr) #define Clock_driver_support_set_interrupt_affinity(online_processors) \ bsp_interrupt_set_affinity(clkirq, online_processors) +#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) || \ + defined(LEON3_PROBE_ASR_22_23_UP_COUNTER) static void leon3_clock_use_up_counter(struct timecounter *tc) { tc->tc_get_timecount = _SPARC_Get_timecount_asr23; @@ -179,6 +181,7 @@ static void leon3_clock_use_up_counter(struct timecounter *tc) rtems_timecounter_install(tc); } +#endif #if defined(LEON3_IRQAMP_PROBE_TIMESTAMP) static void leon3_clock_use_irqamp_timestamp( @@ -276,11 +279,13 @@ static void leon3_clock_initialize(void) #if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) leon3_clock_use_up_counter(tc); #else /* LEON3_HAS_ASR_22_23_UP_COUNTER */ +#if defined(LEON3_PROBE_ASR_22_23_UP_COUNTER) if (leon3_up_counter_is_available()) { /* Use the LEON4 up-counter if available */ leon3_clock_use_up_counter(tc); return; } +#endif #if defined(LEON3_IRQAMP_PROBE_TIMESTAMP) irqmp_ts = irqamp_get_timestamp_registers(LEON3_IrqCtrl_Regs); diff --git a/bsps/sparc/leon3/start/cpucounter.c b/bsps/sparc/leon3/start/cpucounter.c index b02fcecab8..8381cf85a1 100644 --- a/bsps/sparc/leon3/start/cpucounter.c +++ b/bsps/sparc/leon3/start/cpucounter.c @@ -26,6 +26,8 @@ uint32_t _CPU_Counter_frequency(void) return leon3_counter_frequency; } +#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) || \ + defined(LEON3_PROBE_ASR_22_23_UP_COUNTER) static void leon3_counter_use_up_counter(SPARC_Counter *counter) { counter->read_isr_disabled = _SPARC_Counter_read_asr23; @@ -33,6 +35,7 @@ static void leon3_counter_use_up_counter(SPARC_Counter *counter) leon3_counter_frequency = leon3_up_counter_frequency(); } +#endif #if defined(LEON3_IRQAMP_PROBE_TIMESTAMP) static void leon3_counter_use_irqamp_timestamp( @@ -98,11 +101,13 @@ static void leon3_counter_initialize(void) #if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) leon3_counter_use_up_counter(counter); #else /* LEON3_HAS_ASR_22_23_UP_COUNTER */ +#if defined(LEON3_PROBE_ASR_22_23_UP_COUNTER) if (leon3_up_counter_is_available()) { /* Use the LEON4 up-counter if available */ leon3_counter_use_up_counter(counter); return; } +#endif #if defined(LEON3_IRQAMP_PROBE_TIMESTAMP) irqmp_ts = irqamp_get_timestamp_registers(LEON3_IrqCtrl_Regs); diff --git a/spec/build/bsps/sparc/leon3/grp.yml b/spec/build/bsps/sparc/leon3/grp.yml index 7464f1eedb..3da507d9a6 100644 --- a/spec/build/bsps/sparc/leon3/grp.yml +++ b/spec/build/bsps/sparc/leon3/grp.yml @@ -36,6 +36,8 @@ links: - role: build-dependency uid: optasrupcnt - role: build-dependency + uid: optasrupcntprobe +- role: build-dependency uid: optgptimerbase - role: build-dependency uid: optirqampbase diff --git a/spec/build/bsps/sparc/leon3/optasrupcntprobe.yml b/spec/build/bsps/sparc/leon3/optasrupcntprobe.yml new file mode 100644 index 0000000000..46f40ee238 --- /dev/null +++ b/spec/build/bsps/sparc/leon3/optasrupcntprobe.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +actions: +- get-boolean: null +- define-condition: null +build-type: option +default: true +default-by-variant: +- value: false + variants: + - sparc/gr712rc + - sparc/gr740 +enabled-by: true +links: [] +name: LEON3_PROBE_ASR_22_23_UP_COUNTER +description: | + If this option is set to true, then it will be probed if the %asr22 and + %asr23 up-counter is available. +type: build |