2023-06-05 07:37:25 +00:00
|
|
|
#if defined(__x86_64__) && !(__ASSEMBLER__ + __LINKER__ + 0)
|
2023-04-27 09:56:41 +00:00
|
|
|
#ifndef _MM_MALLOC_H_INCLUDED
|
|
|
|
#define _MM_MALLOC_H_INCLUDED
|
|
|
|
#include "libc/mem/mem.h"
|
|
|
|
#ifndef __cplusplus
|
2024-07-23 10:16:17 +00:00
|
|
|
extern int posix_memalign (void **, size_t, size_t);
|
2023-04-27 09:56:41 +00:00
|
|
|
#else
|
2024-08-31 03:12:26 +00:00
|
|
|
extern "C" int posix_memalign (void **, size_t, size_t);
|
2023-04-27 09:56:41 +00:00
|
|
|
#endif
|
2024-07-23 10:16:17 +00:00
|
|
|
static __inline void *
|
|
|
|
_mm_malloc (size_t __size, size_t __alignment)
|
|
|
|
{
|
2023-04-27 09:56:41 +00:00
|
|
|
void *__ptr;
|
2024-07-23 10:16:17 +00:00
|
|
|
if (__alignment == 1)
|
|
|
|
return malloc (__size);
|
|
|
|
if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
|
|
|
|
__alignment = sizeof (void *);
|
|
|
|
if (posix_memalign (&__ptr, __alignment, __size) == 0)
|
2023-04-27 09:56:41 +00:00
|
|
|
return __ptr;
|
|
|
|
else
|
|
|
|
return NULL;
|
|
|
|
}
|
2024-07-23 10:16:17 +00:00
|
|
|
static __inline void
|
|
|
|
_mm_free (void *__ptr)
|
|
|
|
{
|
|
|
|
free (__ptr);
|
2023-04-27 09:56:41 +00:00
|
|
|
}
|
2023-06-05 07:37:25 +00:00
|
|
|
#endif
|
|
|
|
#endif
|