From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Christophe PLAGNIOL-VILLARD Date: Tue, 20 May 2008 23:11:04 +0200 Subject: [U-Boot-Users] [PATCH 2/4] Add lmb_free In-Reply-To: <1211315046-8460-2-git-send-email-afleming@freescale.com> References: <1211315046-8460-1-git-send-email-afleming@freescale.com> <1211315046-8460-2-git-send-email-afleming@freescale.com> Message-ID: <20080520211104.GC18756@game.jcrosoft.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 15:24 Tue 20 May , Andy Fleming wrote: > lmb_free allows us to unreserve some memory so we can use lmb_alloc_base or > lmb_reserve to temporarily reserve some memory. > > Signed-off-by: Andy Fleming > --- > lib_generic/lmb.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 49 insertions(+), 0 deletions(-) > > diff --git a/lib_generic/lmb.c b/lib_generic/lmb.c > index 3b8c805..a34e2d3 100644 > --- a/lib_generic/lmb.c > +++ b/lib_generic/lmb.c > @@ -180,6 +180,55 @@ long lmb_add(struct lmb *lmb, ulong base, ulong size) > return lmb_add_region(_rgn, base, size); > } > > +long lmb_free(struct lmb *lmb, u64 base, u64 size) > +{ > + struct lmb_region *rgn = &(lmb->reserved); > + u64 rgnbegin, rgnend; > + u64 end = base + size; > + int i; > + > + rgnbegin = rgnend = 0; /* supress gcc warnings */ > + > + /* Find the region where (base, size) belongs to */ > + for (i=0; i < rgn->cnt; i++) { please i = 0 > + rgnbegin = rgn->region[i].base; > + rgnend = rgnbegin + rgn->region[i].size; > + > + if ((rgnbegin <= base) && (end <= rgnend)) > + break; Best Regards, J.