From: Michael Walle Date: Wed, 17 Aug 2022 19:37:48 +0000 (+0200) Subject: time: move the CONFIG_SYS_TIMER_RATE handling to the compiler X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=616278bd2c563a6d12a2347ce5cfc3512f77ee42;p=u-boot.git time: move the CONFIG_SYS_TIMER_RATE handling to the compiler CONFIG_SYS_TIMER_RATE might be a dynamic value, i.e. a function call instead of a static value, thus it has to be evaluated at runtime. If it is a static value, the compiler should be able to optimize the unused branches out. This will be needed for kirkwoods dynamic CONFIG_SYS_TCLK setting. Cc: Pali Rohár Signed-off-by: Michael Walle Reviewed-by: Pali Rohár Reviewed-by: Stefan Roese --- diff --git a/lib/time.c b/lib/time.c index 96074b84af..bbf191f673 100644 --- a/lib/time.c +++ b/lib/time.c @@ -47,12 +47,15 @@ ulong timer_get_boot_us(void) { ulong count = timer_read_counter(); -#if CONFIG_SYS_TIMER_RATE == 1000000 - return count; -#elif CONFIG_SYS_TIMER_RATE > 1000000 - return lldiv(count, CONFIG_SYS_TIMER_RATE / 1000000); -#elif defined(CONFIG_SYS_TIMER_RATE) - return (unsigned long long)count * 1000000 / CONFIG_SYS_TIMER_RATE; +#ifdef CONFIG_SYS_TIMER_RATE + const ulong timer_rate = CONFIG_SYS_TIMER_RATE; + + if (timer_rate == 1000000) + return count; + else if (timer_rate > 1000000) + return lldiv(count, timer_rate / 1000000); + else + return (unsigned long long)count * 1000000 / timer_rate; #else /* Assume the counter is in microseconds */ return count;