Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.7-rc1 48 lines 940 B view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * linux/arch/unicore32/lib/delay.S 4 * 5 * Code specific to PKUnity SoC and UniCore ISA 6 * 7 * Copyright (C) 2001-2010 GUAN Xue-tao 8 */ 9#include <linux/linkage.h> 10#include <asm/assembler.h> 11#include <asm/param.h> 12 .text 13 14.LC0: .word loops_per_jiffy 15.LC1: .word (2199023*HZ)>>11 16 17/* 18 * r0 <= 2000 19 * lpj <= 0x01ffffff (max. 3355 bogomips) 20 * HZ <= 1000 21 */ 22 23ENTRY(__udelay) 24 ldw r2, .LC1 25 mul r0, r2, r0 26ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06 27 ldw r2, .LC0 28 ldw r2, [r2] @ max = 0x01ffffff 29 mov r0, r0 >> #14 @ max = 0x0001ffff 30 mov r2, r2 >> #10 @ max = 0x00007fff 31 mul r0, r2, r0 @ max = 2^32-1 32 mov.a r0, r0 >> #6 33 cmoveq pc, lr 34 35/* 36 * loops = r0 * HZ * loops_per_jiffy / 1000000 37 * 38 * Oh, if only we had a cycle counter... 39 */ 40 41@ Delay routine 42ENTRY(__delay) 43 sub.a r0, r0, #2 44 bua __delay 45 mov pc, lr 46ENDPROC(__udelay) 47ENDPROC(__const_udelay) 48ENDPROC(__delay)