diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-04-22 17:13:18 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-04-22 17:13:18 +0200 |
commit | 6693cfb26acf9d5b53d090be309956456f546239 (patch) | |
tree | 5cd3fbfa38bf14d20d0f7ed6bd5329e59d27b00c /AK/StdLibExtras.h | |
parent | 1d02c7b6f171884c3ec971ff5e56a9d19fa29a24 (diff) | |
download | serenity-6693cfb26acf9d5b53d090be309956456f546239.zip |
Kernel: Don't use MMX memcpy() in the kernel.
I just discovered the hard way that clobbering FPU/MMX/SSE registers in the
kernel makes things very confusing for userspace (and other kernel threads.)
Let's banish all of those things from the kernel to keep things simple.
Diffstat (limited to 'AK/StdLibExtras.h')
-rw-r--r-- | AK/StdLibExtras.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/AK/StdLibExtras.h b/AK/StdLibExtras.h index 04c9ce72d0..6a282b98ab 100644 --- a/AK/StdLibExtras.h +++ b/AK/StdLibExtras.h @@ -11,14 +11,18 @@ #include <AK/Types.h> +#ifndef KERNEL extern "C" void* mmx_memcpy(void* to, const void* from, size_t); +#endif [[gnu::always_inline]] inline void fast_dword_copy(dword* dest, const dword* src, size_t count) { +#ifndef KERNEL if (count >= 256) { mmx_memcpy(dest, src, count * sizeof(count)); return; } +#endif asm volatile( "rep movsl\n" : "=S"(src), "=D"(dest), "=c"(count) |