summaryrefslogtreecommitdiff
path: root/src/include/cpu/x86/mem.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/cpu/x86/mem.h')
-rw-r--r--src/include/cpu/x86/mem.h16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/include/cpu/x86/mem.h b/src/include/cpu/x86/mem.h
index 4849ed289a..532fc79e0a 100644
--- a/src/include/cpu/x86/mem.h
+++ b/src/include/cpu/x86/mem.h
@@ -4,15 +4,13 @@
/* Optimized generic x86 assembly for clearing memory */
static inline void clear_memory(void *addr, unsigned long size)
{
- asm volatile(
- "1: \n\t"
- "movl %0, (%1)\n\t"
- "addl $4, %1\n\t"
- "subl $4, %2\n\t"
- "jnz 1b\n\t"
- : /* No outputs */
- : "a" (0), "D" (addr), "c" (size)
- );
+ asm volatile(
+ "cld \n\t"
+ "rep stosl\n\t"
+ : /* No outputs */
+ : "a" (0), "D" (addr), "c" (size>>2)
+ );
+
}
#endif /* CPU_X86_MEM_H */