/*
 *  arch/s390/kernel/delay.c
 *    Precise Delay Loops for S390
 *
 *  S390 version
 *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
 *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
 *
 *  Derived from "arch/i386/lib/delay.c"
 *    Copyright (C) 1993 Linus Torvalds
 *    Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
 */

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

#ifdef CONFIG_SMP
#include <asm/smp.h>
#endif

void __delay(unsigned long loops)
{
        /*
         * To end the bloody studid and useless discussion about the
         * BogoMips number I took the liberty to define the __delay
         * function in a way that that resulting BogoMips number will
         * yield the megahertz number of the cpu. The important function
         * is udelay and that is done using the tod clock. -- martin.
         */
        __asm__ __volatile__(
                "0: brct %0,0b"
                : /* no outputs */ : "r" ((loops/2) + 1));
}

/*
 * Waits for 'usecs' microseconds using the tod clock, giving up the time slice
 * of the virtual PU inbetween to avoid congestion.
 */
void __udelay(unsigned long usecs)
{
        uint64_t start_cc, end_cc;

        if (usecs == 0)
                return;
        asm volatile ("STCK %0" : "=m" (start_cc));
        do {
		cpu_relax();
                asm volatile ("STCK %0" : "=m" (end_cc));
        } while (((end_cc - start_cc)/4096) < usecs);
}
