1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * (C) Copyright 2000, 2001
4 * Erik Theisen, Wave 7 Optics, etheisen@mindspring.com.
6 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
9 #include <ppc_asm.tmpl>
14 * unsigned long long get_ticks(void);
16 * read timebase as "long long"
28 * Delay for a number of ticks
33 mflr r0 /* save link register */
34 stw r0, 20(r1) /* Use r0 or GDB will be unhappy */
35 stw r14, 12(r1) /* save used registers */
37 mr r14, r3 /* save tick count */
38 bl get_ticks /* Get start time */
40 /* Calculate end time */
41 addc r14, r4, r14 /* Compute end time lower */
42 addze r15, r3 /* and end time upper */
44 #if defined(CONFIG_WATCHDOG) || defined(CONFIG_HW_WATCHDOG)
45 bl schedule /* Trigger watchdog, if needed */
47 1: bl get_ticks /* Get current time */
48 subfc r4, r4, r14 /* Subtract current time from end time */
50 bge 1b /* Loop until time expired */
52 lwz r15, 8(r1) /* restore saved registers */