extern uint32_t perf_start_count, perf_interval_count;
#ifdef __WATCOMC__
+#ifdef USE_MMX
void memcpy64(void *dest, void *src, int count);
#pragma aux memcpy64 = \
"cploop:" \
"dec ecx" \
"jnz cploop" \
"emms" \
- parm[ebx][edx][ecx];
+ parm[ebx][edx][ecx] \
+ modify[8087];
+#else
+#define memcpy64(dest, src, count) memcpy(dest, src, (count) << 3)
+#endif
void perf_start(void);
#pragma aux perf_start = \
#endif
#ifdef __GNUC__
+#ifdef USE_MMX
#define memcpy64(dest, src, count) asm volatile ( \
"0:\n\t" \
"movq (%1), %%mm0\n\t" \
"dec %2\n\t" \
"jnz 0b\n\t" \
"emms\n\t" \
- :: "r"(dest), "r"(src), "r"(count))
+ :: "r"(dest), "r"(src), "r"(count) \
+ : "%mm0")
+#else
+#define memcpy64(dest, src, count) memcpy(dest, src, (count) << 3)
+#endif
#define perf_start() asm volatile ( \
"xor %%eax, %%eax\n" \