void debug_break(void);
#pragma aux debug_break = "int 3";
+
+void halt(void);
+#pragma aux halt = "hlt";
+
+void memset16(void *ptr, int val, int count);
+#pragma aux memset16 = \
+ "rep stosw" \
+ parm[edi][eax][ecx];
#endif
#ifdef __GNUC__
#define debug_break() \
asm volatile ("int $3")
+
+#define halt() \
+ asm volatile("hlt")
+
+#define memset16(ptr, val, count) asm volatile ( \
+ "rep stosw\n\t" \
+ :: "D"(ptr), "a"(val), "c"(count))
#endif
#ifdef _MSC_VER
do { \
__asm { int 3 } \
} while(0)
+
+#define memset16(ptr, val, count) \
+ do { \
+ __asm { \
+ mov edi, ptr \
+ mov ecx, count \
+ mov eax, val \
+ rep stosw \
+ } \
+ } while(0)
#endif
#endif /* UTIL_H_ */