1*4ed6552fSKumar Gala #ifndef _LINUX_LMB_H 2*4ed6552fSKumar Gala #define _LINUX_LMB_H 3*4ed6552fSKumar Gala #ifdef __KERNEL__ 4*4ed6552fSKumar Gala 5*4ed6552fSKumar Gala #include <asm/types.h> 6*4ed6552fSKumar Gala /* 7*4ed6552fSKumar Gala * Logical memory blocks. 8*4ed6552fSKumar Gala * 9*4ed6552fSKumar Gala * Copyright (C) 2001 Peter Bergner, IBM Corp. 10*4ed6552fSKumar Gala * 11*4ed6552fSKumar Gala * This program is free software; you can redistribute it and/or 12*4ed6552fSKumar Gala * modify it under the terms of the GNU General Public License 13*4ed6552fSKumar Gala * as published by the Free Software Foundation; either version 14*4ed6552fSKumar Gala * 2 of the License, or (at your option) any later version. 15*4ed6552fSKumar Gala */ 16*4ed6552fSKumar Gala 17*4ed6552fSKumar Gala #define MAX_LMB_REGIONS 8 18*4ed6552fSKumar Gala 19*4ed6552fSKumar Gala struct lmb_property { 20*4ed6552fSKumar Gala ulong base; 21*4ed6552fSKumar Gala ulong size; 22*4ed6552fSKumar Gala }; 23*4ed6552fSKumar Gala 24*4ed6552fSKumar Gala struct lmb_region { 25*4ed6552fSKumar Gala unsigned long cnt; 26*4ed6552fSKumar Gala ulong size; 27*4ed6552fSKumar Gala struct lmb_property region[MAX_LMB_REGIONS+1]; 28*4ed6552fSKumar Gala }; 29*4ed6552fSKumar Gala 30*4ed6552fSKumar Gala struct lmb { 31*4ed6552fSKumar Gala struct lmb_region memory; 32*4ed6552fSKumar Gala struct lmb_region reserved; 33*4ed6552fSKumar Gala }; 34*4ed6552fSKumar Gala 35*4ed6552fSKumar Gala extern struct lmb lmb; 36*4ed6552fSKumar Gala 37*4ed6552fSKumar Gala extern void lmb_init(struct lmb *lmb); 38*4ed6552fSKumar Gala extern long lmb_add(struct lmb *lmb, ulong base, ulong size); 39*4ed6552fSKumar Gala extern long lmb_reserve(struct lmb *lmb, ulong base, ulong size); 40*4ed6552fSKumar Gala extern ulong lmb_alloc(struct lmb *lmb, ulong size, ulong align); 41*4ed6552fSKumar Gala extern ulong lmb_alloc_base(struct lmb *lmb, ulong size, ulong align, ulong max_addr); 42*4ed6552fSKumar Gala extern ulong __lmb_alloc_base(struct lmb *lmb, ulong size, ulong align, ulong max_addr); 43*4ed6552fSKumar Gala extern int lmb_is_reserved(struct lmb *lmb, ulong addr); 44*4ed6552fSKumar Gala 45*4ed6552fSKumar Gala extern void lmb_dump_all(struct lmb *lmb); 46*4ed6552fSKumar Gala 47*4ed6552fSKumar Gala static inline ulong 48*4ed6552fSKumar Gala lmb_size_bytes(struct lmb_region *type, unsigned long region_nr) 49*4ed6552fSKumar Gala { 50*4ed6552fSKumar Gala return type->region[region_nr].size; 51*4ed6552fSKumar Gala } 52*4ed6552fSKumar Gala #endif /* __KERNEL__ */ 53*4ed6552fSKumar Gala 54*4ed6552fSKumar Gala #endif /* _LINUX_LMB_H */ 55