Thread (65 messages) 65 messages, 4 authors, 2018-10-25

Re: [PATCH V9 13/21] csky: Library functions

From: Guo Ren <hidden>
Date: 2018-10-18 03:12:07
Also in: linux-arch, lkml

On Wed, Oct 17, 2018 at 05:24:36PM +0200, Arnd Bergmann wrote:
On Tue, Oct 16, 2018 at 5:02 AM Guo Ren [off-list ref] wrote:
quoted
+++ b/arch/csky/lib/delay.c
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+
+void __delay(unsigned long loops)
+{
+       asm volatile (
+               "mov r0, r0\n"
+               "1:declt %0\n"
+               "bf     1b"
+               : "=r"(loops)
+               : "0"(loops));
+}
+EXPORT_SYMBOL(__delay);
+
+void __const_udelay(unsigned long xloops)
+{
+       unsigned long long loops;
+
+       loops = (unsigned long long)xloops * loops_per_jiffy * HZ;
+
+       __delay(loops >> 32);
+}
+EXPORT_SYMBOL(__const_udelay);
I can't find any indication we discussed this part before. Can you
explain (in the
changelog and in a reply) if there is a reliable high-resolution clocksource
available in the architecture? If you can read the elapsed time here instead of
using the loops_per_jiffy estimate, that would make this more robust, as
well as speed up the boot.

If you can't do that in general, that's fine, and you can add my
I'll add TODO list here, __delay should use get_cycles() and we didn't
implement __udelay() __ndelay() ... We'll improve it next.

Best Regards
 Guo Ren
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help