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