1 /* 2 * Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au> 3 * Changes to accomodate 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 23 extern "C" { 24 #endif 25 26 27 /* Type Definitions */ 28 29 #define MEM_PIECES_MAX 32 30 31 struct mem_pieces { 32 int n_regions; 33 struct reg_property regions[MEM_PIECES_MAX]; 34 }; 35 36 /* Function Prototypes */ 37 38 extern void *mem_pieces_find(unsigned int size, unsigned int align); 39 extern void mem_pieces_remove(struct mem_pieces *mp, unsigned int start, 40 unsigned int size, int must_exist); 41 extern void mem_pieces_append(struct mem_pieces *mp, unsigned int start, 42 unsigned int size); 43 extern void mem_pieces_coalesce(struct mem_pieces *mp); 44 extern void mem_pieces_sort(struct mem_pieces *mp); 45 46 #ifdef __cplusplus 47 } 48 #endif 49 50 #endif /* __MEM_PIECES_H__ */ 51