diff options
author | Etienne Carriere <etienne.carriere@st.com> | 2018-09-25 10:35:04 +0200 |
---|---|---|
committer | Jerome Forissier <jerome.forissier@linaro.org> | 2018-10-04 14:46:30 +0200 |
commit | 13306346d109dd8350b3a8a6b433da929ced1a7d (patch) | |
tree | e11ee2d37fda961a3b32a6c80e7c656dcde8a64f | |
parent | 706c2c70ced316aee8fd8727ceefffc9e69ebae0 (diff) |
core: correct time conversion in delay support
The previous code may overflow in 32bit architectures. This change
fixes the issue by forcing 64bit computation during frequency
to counter conversion.
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
-rw-r--r-- | core/arch/arm/kernel/delay.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/core/arch/arm/kernel/delay.c b/core/arch/arm/kernel/delay.c index 2ada6e90..2321b781 100644 --- a/core/arch/arm/kernel/delay.c +++ b/core/arch/arm/kernel/delay.c @@ -34,7 +34,7 @@ void udelay(uint32_t us) uint64_t start, target; start = read_cntpct(); - target = read_cntfrq() / 1000000ULL * us; + target = ((uint64_t)read_cntfrq() * us) / 1000000ULL; while (read_cntpct() - start <= target) ; |