drivers: net: fsl_enetc: use XFI, USXGMII interface type macros
[oweals/u-boot.git] / lib / linux_compat.c
index a936a7eac21437fd4ac0d24d32b71e418345ac03..3f440deaa0d8a5d5a7d181772750786be29ba7e4 100644 (file)
@@ -1,5 +1,6 @@
 
 #include <common.h>
+#include <memalign.h>
 #include <linux/compat.h>
 
 struct p_current cur = {
@@ -18,8 +19,8 @@ void *kmalloc(size_t size, int flags)
 {
        void *p;
 
-       p = memalign(ARCH_DMA_MINALIGN, size);
-       if (flags & __GFP_ZERO)
+       p = malloc_cache_aligned(size);
+       if (p && flags & __GFP_ZERO)
                memset(p, 0, size);
 
        return p;
@@ -37,5 +38,24 @@ struct kmem_cache *get_mem(int element_sz)
 
 void *kmem_cache_alloc(struct kmem_cache *obj, int flag)
 {
-       return memalign(ARCH_DMA_MINALIGN, obj->sz);
+       return malloc_cache_aligned(obj->sz);
+}
+
+/**
+ * kmemdup - duplicate region of memory
+ *
+ * @src: memory region to duplicate
+ * @len: memory region length
+ * @gfp: GFP mask to use
+ *
+ * Return: newly allocated copy of @src or %NULL in case of error
+ */
+void *kmemdup(const void *src, size_t len, gfp_t gfp)
+{
+       void *p;
+
+       p = kmalloc(len, gfp);
+       if (p)
+               memcpy(p, src, len);
+       return p;
 }