#ifndef _ALLOC_PHYS_H_
#define _ALLOC_PHYS_H_
/*
 * phys_alloc is a very simple allocator which allows physical memory
 * to be partitioned into regions until all memory is allocated.
 *
 * Note: This is such a simple allocator that there is no way to free
 * a region. For more complicated memory management a single region
 * can be allocated, but then have its memory managed by a more
 * sophisticated allocator, e.g. a page allocator.
 *
 * Copyright (C) 2014, Red Hat Inc, Andrew Jones <drjones@redhat.com>
 *
 * This work is licensed under the terms of the GNU LGPL, version 2.
 */
#include "libcflat.h"

#define DEFAULT_MINIMUM_ALIGNMENT 32

/*
 * phys_alloc_init creates the initial free memory region of size @size
 * at @base. The minimum alignment is set to DEFAULT_MINIMUM_ALIGNMENT.
 */
extern void phys_alloc_init(phys_addr_t base, phys_addr_t size);

/*
 * phys_alloc_set_minimum_alignment sets the minimum alignment to
 * @align.
 */
extern void phys_alloc_set_minimum_alignment(phys_addr_t align);

/*
 * phys_alloc_show outputs all currently allocated regions with the
 * following format
 *   <start_addr>-<end_addr> [<USED|FREE>]
 */
extern void phys_alloc_show(void);

/*
 * phys_alloc_get_unused allocates all remaining memory from the region
 * passed to phys_alloc_init, returning the newly allocated memory's base
 * and top addresses. phys_alloc_get_unused will still return base and top
 * when no free memory is remaining, but base will equal top.
 */
extern void phys_alloc_get_unused(phys_addr_t *p_base, phys_addr_t *p_top);

/*
 * Search for memory that can only be used when the MMU is on, and reinitialize
 * the physical memory allocator using it.
 */
extern void find_highmem(void);

#endif /* _ALLOC_PHYS_H_ */
