|  | 
 | #include <common.h> | 
 | #include <linux/compat.h> | 
 |  | 
 | struct p_current cur = { | 
 | 	.pid = 1, | 
 | }; | 
 | __maybe_unused struct p_current *current = &cur; | 
 |  | 
 | unsigned long copy_from_user(void *dest, const void *src, | 
 | 		     unsigned long count) | 
 | { | 
 | 	memcpy((void *)dest, (void *)src, count); | 
 | 	return 0; | 
 | } | 
 |  | 
 | void *kmalloc(size_t size, int flags) | 
 | { | 
 | 	void *p; | 
 |  | 
 | 	p = memalign(ARCH_DMA_MINALIGN, size); | 
 | 	if (flags & __GFP_ZERO) | 
 | 		memset(p, 0, size); | 
 |  | 
 | 	return p; | 
 | } | 
 |  | 
 | struct kmem_cache *get_mem(int element_sz) | 
 | { | 
 | 	struct kmem_cache *ret; | 
 |  | 
 | 	ret = memalign(ARCH_DMA_MINALIGN, sizeof(struct kmem_cache)); | 
 | 	ret->sz = element_sz; | 
 |  | 
 | 	return ret; | 
 | } | 
 |  | 
 | void *kmem_cache_alloc(struct kmem_cache *obj, int flag) | 
 | { | 
 | 	return memalign(ARCH_DMA_MINALIGN, obj->sz); | 
 | } |