/*
** 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