2009-10-06 13:11:04     __delay unit of measurement

Document created by Aaronwu Employee on Aug 19, 2013
Version 1Show Document
  • View in full screen mode

2009-10-06 13:11:04     __delay unit of measurement

Pawel Pastuszak (CANADA)

Message: 80904   


In the following function __delay what is the measurement unit or was is the lowest values example nanoseconds?




What i looking is to do an delay in nano seconds i need to calculate 250ns of a delay.




static inline void __delay(unsigned long loops)


    if (ANOMALY_05000312) {

        /* Interrupted loads to loop registers -> bad */

        unsigned long tmp;

        __asm__ __volatile__(

            "[--SP] = LC0;"

            "[--SP] = LT0;"

            "[--SP] = LB0;"

            "LSETUP (1f,1f) LC0 = %1;"

            "1: NOP;"

            /* We take advantage of the fact that LC0 is 0 at

             * the end of the loop.  Otherwise we'd need some

             * NOPs after the CLI here.


            "CLI %0;"

            "LB0 = [SP++];"

            "LT0 = [SP++];"

            "LC0 = [SP++];"

            "STI %0;"

            : "=d" (tmp)

            : "a" (loops)


    } else

        __asm__ __volatile__ (

            "LSETUP(1f, 1f) LC0 = %0;"

            "1: NOP;"


            : "a" (loops)

            : "LT0", "LB0", "LC0"






2009-10-06 13:22:35     Re: __delay unit of measurement

Mike Frysinger (UNITED STATES)

Message: 80907   


there is no "scale".  __delay() does what it's told -- it loops for the specified number of nops.  read the udelay() function if you want to figure out how to scale it.