Commit 2d2adf64 authored by Ankur Arora's avatar Ankur Arora Committed by lishusen
Browse files

arm64/delay: add some constants to a separate header

virt inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IB7PU3


CVE: NA

----------------------------------------------------

Adds some constants and functions related to xloops, cycles computation
to a new header.

USECS_TO_CYCLES and xloops_to_cycles() are ignored to avoid conflict.

No functional change.

Signed-off-by: default avatarAnkur Arora <ankur.a.arora@oracle.com>
Signed-off-by: default avatarlishusen <lishusen2@huawei.com>
parent bcca84d3
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _ASM_DELAY_CONST_H
#define _ASM_DELAY_CONST_H

#include <asm/param.h>	/* For HZ */

/* 2**32 / 1000000 (rounded up) */
#define __usecs_to_xloops_mult	0x10C7UL

/* 2**32 / 1000000000 (rounded up) */
#define __nsecs_to_xloops_mult	0x5UL

extern unsigned long loops_per_jiffy;
static inline unsigned long xloops_to_cycles(unsigned long xloops)
{
	return (xloops * loops_per_jiffy * HZ) >> 32;
}

#define USECS_TO_CYCLES(time_usecs) \
	xloops_to_cycles((time_usecs) * __usecs_to_xloops_mult)

#define NSECS_TO_CYCLES(time_nsecs) \
	xloops_to_cycles((time_nsecs) * __nsecs_to_xloops_mult)

#endif	/* _ASM_DELAY_CONST_H */
+3 −10
Original line number Diff line number Diff line
@@ -12,17 +12,10 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/timex.h>
#include <asm/delay-const.h>

#include <clocksource/arm_arch_timer.h>

#define USECS_TO_CYCLES(time_usecs)			\
	xloops_to_cycles((time_usecs) * 0x10C7UL)

static inline unsigned long xloops_to_cycles(unsigned long xloops)
{
	return (xloops * loops_per_jiffy * HZ) >> 32;
}

void __delay(unsigned long cycles)
{
	cycles_t start = get_cycles();
@@ -58,12 +51,12 @@ EXPORT_SYMBOL(__const_udelay);

void __udelay(unsigned long usecs)
{
	__const_udelay(usecs * 0x10C7UL); /* 2**32 / 1000000 (rounded up) */
	__const_udelay(usecs * __usecs_to_xloops_mult);
}
EXPORT_SYMBOL(__udelay);

void __ndelay(unsigned long nsecs)
{
	__const_udelay(nsecs * 0x5UL); /* 2**32 / 1000000000 (rounded up) */
	__const_udelay(nsecs * __nsecs_to_xloops_mult);
}
EXPORT_SYMBOL(__ndelay);