// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
/* Copyright 2013-2019 IBM Corp. */

#ifndef __MEM_REGION_MALLOC_H
#define __MEM_REGION_MALLOC_H

#include <compiler.h>

#define __loc2(line)    #line
#define __loc(line)	__loc2(line)
#define __location__	__FILE__ ":" __loc(__LINE__)

void *__malloc(size_t size, const char *location) __warn_unused_result;
void *__zalloc(size_t size, const char *location) __warn_unused_result;
void *__realloc(void *ptr, size_t size, const char *location) __warn_unused_result;
void __free(void *ptr, const char *location);
void *__memalign(size_t boundary, size_t size, const char *location) __warn_unused_result;

#define malloc(size) __malloc(size, __location__)
#define zalloc(size) __zalloc(size, __location__)
#define calloc(nmemb, size) __zalloc(((nmemb) * (size)), __location__)
#define realloc(ptr, size) __realloc(ptr, size, __location__)
#define free(ptr) __free(ptr, __location__)
#define memalign(boundary, size) __memalign(boundary, size, __location__)

void *__local_alloc(unsigned int chip, size_t size, size_t align,
		    const char *location) __warn_unused_result;
#define local_alloc(chip_id, size, align)	\
	__local_alloc((chip_id), (size), (align), __location__)

void __local_free(void *mem, const char *location);
#define local_free(mem)				\
	__local_free((mem), __location__)

#endif /* __MEM_REGION_MALLOC_H */
