cregit-Linux how code gets into the kernel

Release 4.14 arch/metag/lib/delay.c

Directory: arch/metag/lib
// SPDX-License-Identifier: GPL-2.0
/*
 *      Precise Delay Loops for Meta
 *
 *      Copyright (C) 1993 Linus Torvalds
 *      Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
 *      Copyright (C) 2007,2009 Imagination Technologies Ltd.
 *
 */

#include <linux/export.h>
#include <linux/sched.h>
#include <linux/delay.h>

#include <asm/core_reg.h>
#include <asm/processor.h>

/*
 * TXTACTCYC is only 24 bits, so on chips with fast clocks it will wrap
 * many times per-second. If it does wrap __delay will return prematurely,
 * but this is only likely with large delay values.
 *
 * We also can't implement read_current_timer() with TXTACTCYC due to
 * this wrapping behaviour.
 */

#define rdtimer(t) t = __core_reg_get(TXTACTCYC)


void __delay(unsigned long loops) { unsigned long bclock, now; rdtimer(bclock); do { asm("NOP"); rdtimer(now); } while ((now-bclock) < loops); }

Contributors

PersonTokensPropCommitsCommitProp
James Hogan40100.00%1100.00%
Total40100.00%1100.00%

EXPORT_SYMBOL(__delay);
inline void __const_udelay(unsigned long xloops) { u64 loops = (u64)xloops * (u64)loops_per_jiffy * HZ; __delay(loops >> 32); }

Contributors

PersonTokensPropCommitsCommitProp
James Hogan32100.00%1100.00%
Total32100.00%1100.00%

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

Contributors

PersonTokensPropCommitsCommitProp
James Hogan17100.00%1100.00%
Total17100.00%1100.00%

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

Contributors

PersonTokensPropCommitsCommitProp
James Hogan17100.00%1100.00%
Total17100.00%1100.00%

EXPORT_SYMBOL(__ndelay);

Overall Contributors

PersonTokensPropCommitsCommitProp
James Hogan15099.34%150.00%
Greg Kroah-Hartman10.66%150.00%
Total151100.00%2100.00%
Directory: arch/metag/lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.