root/src/system/libroot/os/arch/ppc/system_time_asm.S
/*
** Copyright 2003, Axel D�fler, axeld@pinc-software.de. All rights reserved.
** Distributed under the terms of the MIT License.
*/

#define FUNCTION(x) .global x; .type x,@function; x

.text

/* int64 __ppc_get_time_base(void)
 * r3/r4
 */
FUNCTION(__ppc_get_time_base):
                /* get TB (time base) register */
carry:  mftbu   %r3
                mftb    %r4
                mftbu   %r5                     // read the upper half again
                cmpw    %r3, %r5        // and check if the values have changed
                bne             carry           // try again, if they had
                blr