1/*
2 *    Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
3 *      Changes to accommodate Power Macintoshes.
4 *    Cort Dougan <cort@cs.nmt.edu>
5 *      Rewrites.
6 *    Grant Erickson <grant@lcse.umn.edu>
7 *      General rework and split from mm/init.c.
8 *
9 *    Module name: mem_pieces.h
10 *
11 *    Description:
12 *      Routines and data structures for manipulating and representing
13 *      phyiscal memory extents (i.e. address/length pairs).
14 *
15 */
16
17#ifndef __MEM_PIECES_H__
18#define	__MEM_PIECES_H__
19
20#include <asm/prom.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26
27/* Type Definitions */
28
29#define	MEM_PIECES_MAX	32
30
31struct mem_pieces {
32    int n_regions;
33    struct reg_property regions[MEM_PIECES_MAX];
34};
35
36/* Function Prototypes */
37
38extern void	*mem_pieces_find(unsigned int size, unsigned int align);
39extern void	 mem_pieces_remove(struct mem_pieces *mp, unsigned int start,
40				   unsigned int size, int must_exist);
41extern void	 mem_pieces_coalesce(struct mem_pieces *mp);
42extern void	 mem_pieces_sort(struct mem_pieces *mp);
43
44#ifdef __cplusplus
45}
46#endif
47
48#endif /* __MEM_PIECES_H__ */
49