/[svn]/linuxsampler/trunk/src/common/RTMath.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/common/RTMath.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 327 by schoenebeck, Mon Dec 13 00:46:42 2004 UTC revision 328 by schoenebeck, Sat Dec 25 21:58:58 2004 UTC
# Line 25  Line 25 
25  float  RTMathBase::CentsToFreqTable[MAX_PITCH * 1200 * 2 + 1]; // +-1200 cents per octave  float  RTMathBase::CentsToFreqTable[MAX_PITCH * 1200 * 2 + 1]; // +-1200 cents per octave
26  float* RTMathBase::pCentsToFreqTable(InitCentsToFreqTable());  float* RTMathBase::pCentsToFreqTable(InitCentsToFreqTable());
27    
28    /*
29     * Creates a real time stamp for the current moment. Out of efficiency this
30     * is implemented in inline assembly for each CPU independently; we currently
31     * don't use a generic solution for CPUs that are not yet covered by the
32     * assembly code, instead an error message is prompted on compile time, forcing
33     * the user to contact us.
34     */
35    RTMathBase::time_stamp_t RTMathBase::CreateTimeStamp() {
36        #if defined(__i386__) || defined(__x86_64__)
37        uint64_t t;
38        __asm__ __volatile__ ("rdtsc" : "=A" (t));
39        return t >> 8;
40        #elif defined(__ia64__)
41        time_stamp_t t;
42        __asm__ __volatile__ ("mov %0=ar.itc" : "=r"(t));
43        return t;
44        #elif defined(__powerpc__)
45        time_stamp_t t;
46        __asm__ __volatile__ (
47            "98:    mftb %0\n"
48            "99:\n"
49            ".section __ftr_fixup,\"a\"\n"
50            "       .long %1\n"
51            "       .long 0\n"
52            "       .long 98b\n"
53            "       .long 99b\n"
54            ".previous"
55            : "=r" (t) : "i" (0x00000100)
56        );
57        return t;
58        #elif defined(__alpha__)
59        time_stamp_t t;
60        __asm__ __volatile__ ("rpcc %0" : "=r"(t));
61        return t;
62        #else // we don't want to use a slow generic solution
63        #  error "Sorry, LinuxSampler lacks time stamp code for your system."
64        #  error "Please report this error and the CPU you are using to the LinuxSampler developers mailing list!"
65        #endif
66    }
67    
68  /**  /**
69   * Will automatically be called once to initialize the 'Cents to frequency   * Will automatically be called once to initialize the 'Cents to frequency
70   * ratio' table.   * ratio' table.

Legend:
Removed from v.327  
changed lines
  Added in v.328

  ViewVC Help
Powered by ViewVC