summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/cycles.h
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2008-09-22 20:44:46 +0000
committerSampo Savolainen <v2@iki.fi>2008-09-22 20:44:46 +0000
commit234d56a8c4da8b3bad47f6f75aa53d1067b1aad9 (patch)
tree95859306d5c1f72c8062b87544611e25048c2dfb /libs/ardour/ardour/cycles.h
parent9aad7b5727377a65b75c8c8c0afa4a5f3e483eed (diff)
Fixed overflow issue. Code originally meant to truncate the 64 bit integer did not work as assembler doesn't "cast" variables like C does. get_cycles() was passing the memory address of a 32 bit unsigned int to the x86 call which required 64 bits of storage space. The extra 32 bits corrupted whatever was on the stack next to the variable.
git-svn-id: svn://localhost/ardour2/branches/3.0@3793 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/cycles.h')
-rw-r--r--libs/ardour/ardour/cycles.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/ardour/ardour/cycles.h b/libs/ardour/ardour/cycles.h
index 0d1ac154dd..2199a2eb9c 100644
--- a/libs/ardour/ardour/cycles.h
+++ b/libs/ardour/ardour/cycles.h
@@ -48,10 +48,10 @@ extern cycles_t cacheflush_time;
static inline cycles_t get_cycles (void)
{
- uint32_t long ret;
+ cycles_t ret;
rdtscll(ret);
- return ret;
+ return ret & 0xffffffff;
}
#elif defined(__powerpc__)