projects
/
dosdemo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- fixed watcom build
[dosdemo]
/
src
/
util.h
diff --git
a/src/util.h
b/src/util.h
index
f8ae175
..
76dd044
100644
(file)
--- a/
src/util.h
+++ b/
src/util.h
@@
-24,42
+24,59
@@
static INLINE int32_t cround64(double val)
return *(int32_t*)&val;
}
return *(int32_t*)&val;
}
-uint32_t perf_start_count, perf_interval_count;
+extern uint32_t perf_start_count, perf_interval_count;
#ifdef __WATCOMC__
void perf_start(void);
#pragma aux perf_start = \
#ifdef __WATCOMC__
void perf_start(void);
#pragma aux perf_start = \
+ "xor eax, eax" \
+ "cpuid" \
"rdtsc" \
"mov [perf_start_count], eax" \
"rdtsc" \
"mov [perf_start_count], eax" \
- modify[eax edx];
+ modify[eax ebx ecx edx];
void perf_end(void);
#pragma aux perf_end = \
void perf_end(void);
#pragma aux perf_end = \
+ "xor eax, eax" \
+ "cpuid" \
"rdtsc" \
"sub eax, [perf_start_count]" \
"mov [perf_interval_count], eax" \
"rdtsc" \
"sub eax, [perf_start_count]" \
"mov [perf_interval_count], eax" \
- modify [eax edx];
+ modify [eax ebx ecx edx];
+
+void debug_break(void);
+#pragma aux debug_break = "int 3";
#endif
#ifdef __GNUC__
#define perf_start() asm volatile ( \
#endif
#ifdef __GNUC__
#define perf_start() asm volatile ( \
+ "xor %%eax, %%eax\n" \
+ "cpuid\n" \
"rdtsc\n" \
"mov %%eax, %0\n" \
"rdtsc\n" \
"mov %%eax, %0\n" \
- : "=m"(perf_start_count) :: "%eax", "%edx")
+ : "=m"(perf_start_count) \
+ :: "%eax", "%ebx", "%ecx", "%edx")
#define perf_end() asm volatile ( \
#define perf_end() asm volatile ( \
+ "xor %%eax, %%eax\n" \
+ "cpuid\n" \
"rdtsc\n" \
"sub %1, %%eax\n" \
"mov %%eax, %0\n" \
: "=m"(perf_interval_count) \
: "m"(perf_start_count) \
"rdtsc\n" \
"sub %1, %%eax\n" \
"mov %%eax, %0\n" \
: "=m"(perf_interval_count) \
: "m"(perf_start_count) \
- : "%eax", "%edx")
+ : "%eax", "%ebx", "%ecx", "%edx")
+
+#define debug_break() \
+ asm volatile ("int $3")
#endif
#ifdef _MSC_VER
#define perf_start() \
do { \
__asm { \
#endif
#ifdef _MSC_VER
#define perf_start() \
do { \
__asm { \
+ xor eax, eax \
+ cpuid \
rdtsc \
mov [perf_start_count], eax \
} \
rdtsc \
mov [perf_start_count], eax \
} \
@@
-68,11
+85,18
@@
void perf_end(void);
#define perf_end() \
do { \
__asm { \
#define perf_end() \
do { \
__asm { \
+ xor eax, eax \
+ cpuid \
rdtsc \
sub eax, [perf_start_count] \
mov [perf_interval_count], eax \
} \
} while(0)
rdtsc \
sub eax, [perf_start_count] \
mov [perf_interval_count], eax \
} \
} while(0)
+
+#define debug_break() \
+ do { \
+ __asm { int 3 } \
+ } while(0)
#endif
#endif /* UTIL_H_ */
#endif
#endif /* UTIL_H_ */