File:  [Qemu by Fabrice Bellard] / qemu / roms / openbios / arch / ppc / timebase.S
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:19:39 2018 UTC (8 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, HEAD
qemu 1.0.1

#include "asm/asmdefs.h"
#include "asm/processor.h"

/*
 * unsigned long long _get_ticks(void);
 */
_GLOBAL(_get_ticks):
1:      mftbu   r3
        mftb    r4
        mftbu   r5
        cmpw    0,r3,r5
        bne     1b
        blr

/*
 * Delay for a number of ticks
 */
_GLOBAL(_wait_ticks):
        mflr    r8              /* save link register */
        mr      r7, r3          /* save tick count */
        bl      BRANCH_LABEL(_get_ticks)       /* Get start time */

        /* Calculate end time */
        addc    r7, r4, r7      /* Compute end time lower */
        addze   r6, r3          /*     and end time upper */

1:      bl      BRANCH_LABEL(_get_ticks)       /* Get current time */
        subfc   r4, r4, r7      /* Subtract current time from end time */
        subfe.  r3, r3, r6
        bge     1b              /* Loop until time expired */

        mtlr    r8              /* restore link register */
        blr

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.