blob: 447ded62b6b9aec949b81d21595c99adee4be63e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
diff --git a/cmake.config.h.in b/cmake.config.h.in
index 1f4c505..fd763cc 100644
--- a/cmake.config.h.in
+++ b/cmake.config.h.in
@@ -112,6 +112,10 @@
you don't. */
#cmakedefine01 HAVE_DECL_POSIX_MEMALIGN
+/* Define to 1 if you have the declaration of `_aligned_malloc', and to 0 if you
+ don't. */
+#cmakedefine01 HAVE_DECL_ALIGNED_MALLOC
+
/* Define to 1 if you have the declaration of `sinl', and to 0 if you don't.
*/
#cmakedefine01 HAVE_DECL_SINL
@@ -184,6 +188,9 @@
/* Define to 1 if you have the `memalign' function. */
#cmakedefine HAVE_MEMALIGN 1
+/* Define to 1 if you have the `_aligned_malloc' function. */
+#cmakedefine HAVE_ALIGNED_MALLOC 1
+
/* Define to 1 if you have the `memmove' function. */
#cmakedefine HAVE_MEMMOVE 1
diff --git a/kernel/kalloc.c b/kernel/kalloc.c
index e42f6f3..ffc2257 100644
--- a/kernel/kalloc.c
+++ b/kernel/kalloc.c
@@ -103,7 +103,7 @@ void *X(kernel_malloc)(size_t n)
# undef real_free
# define real_free _mm_free
-# elif defined(_MSC_VER)
+# elif defined(_MSC_VER) || defined (HAVE_ALIGNED_MALLOC)
/* MS Visual C++ 6.0 with a "Processor Pack" supports SIMD
and _aligned_malloc/free (uses malloc.h) */
p = (void *) _aligned_malloc(n, MIN_ALIGNMENT);
|