/*
Copyright (C) 2001 Paul Davis
Code derived from various headers from the Linux kernel
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#ifndef __ardour_cycles_h__
* We only use the low 32 bits, and we'd simply better make sure
* that we reschedule before that wraps. Scheduling at least every
* four billion cycles just basically sounds like a good idea,
- * regardless of how fast the machine is.
+ * regardless of how fast the machine is.
*/
typedef uint64_t cycles_t;
static inline cycles_t get_cycles (void)
{
- uint32_t long ret;
+ cycles_t ret;
rdtscll(ret);
- return ret;
+ return ret & 0xffffffff;
}
#elif defined(__powerpc__)
* Standard way to access the cycle counter.
* Currently only used on SMP for scheduling.
*
- * Only the low 32 bits are available as a continuously counting entity.
+ * Only the low 32 bits are available as a continuously counting entity.
* But this only means we'll force a reschedule every 8 seconds or so,
* which isn't an evil thing.
*/
/* begin mach */
#elif defined(__APPLE__)
-#include <CoreAudio/CoreAudioTypes.h>
+
#include <CoreAudio/HostTime.h>
+
typedef UInt64 cycles_t;
static inline cycles_t get_cycles (void)
{