aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@st.com>2018-09-25 10:35:04 +0200
committerJerome Forissier <jerome.forissier@linaro.org>2018-10-04 14:46:30 +0200
commit13306346d109dd8350b3a8a6b433da929ced1a7d (patch)
treee11ee2d37fda961a3b32a6c80e7c656dcde8a64f
parent706c2c70ced316aee8fd8727ceefffc9e69ebae0 (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.c2
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)
;