summaryrefslogtreecommitdiffstats
path: root/arch/ppc/mm/mem_pieces.h
blob: e2b700dc7f18473233d43899c26e2868d53a0f35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 *    Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
 *      Changes to accommodate Power Macintoshes.
 *    Cort Dougan <cort@cs.nmt.edu>
 *      Rewrites.
 *    Grant Erickson <grant@lcse.umn.edu>
 *      General rework and split from mm/init.c.
 *
 *    Module name: mem_pieces.h
 *
 *    Description:
 *      Routines and data structures for manipulating and representing
 *      phyiscal memory extents (i.e. address/length pairs).
 *
 */

#ifndef __MEM_PIECES_H__
#define	__MEM_PIECES_H__

#include <asm/prom.h>

#ifdef __cplusplus
extern "C" {
#endif


/* Type Definitions */

#define	MEM_PIECES_MAX	32

struct mem_pieces {
    int n_regions;
    struct reg_property regions[MEM_PIECES_MAX];
};

/* Function Prototypes */

extern void	*mem_pieces_find(unsigned int size, unsigned int align);
extern void	 mem_pieces_remove(struct mem_pieces *mp, unsigned int start,
				   unsigned int size, int must_exist);
extern void	 mem_pieces_coalesce(struct mem_pieces *mp);
extern void	 mem_pieces_sort(struct mem_pieces *mp);

#ifdef __cplusplus
}
#endif

#endif /* __MEM_PIECES_H__ */