if (addr != PROM_ERROR) 
if (addr != PROM_ERROR && addr != 0) 
static unsigned long __init alloc_down(unsigned long size, unsigned long align,				       int highmem){	unsigned long base, addr = 0;	prom_debug("alloc_down(%x, %x, %s)\n", size, align,		   highmem ? RELOC("(high)") : RELOC("(low)"));	if (RELOC(ram_top) == 0)		prom_panic("alloc_down() called with mem not initialized\n");	if (highmem) {		/* Carve out storage for the TCE table. */		addr = _ALIGN_DOWN(RELOC(alloc_top_high) - size, align);		if (addr <= RELOC(alloc_bottom))			return 0;		/* Will we bump into the RMO ? If yes, check out that we		 * didn't overlap existing allocations there, if we did,		 * we are dead, we must be the first in town !		 */		if (addr < RELOC(rmo_top)) {			/* Good, we are first */			if (RELOC(alloc_top) == RELOC(rmo_top))				RELOC(alloc_top) = RELOC(rmo_top) = addr;			else				return 0;		}		RELOC(alloc_top_high) = addr;		goto bail;	}	base = _ALIGN_DOWN(RELOC(alloc_top) - size, align);	for (; base > RELOC(alloc_bottom);	     base = _ALIGN_DOWN(base - 0x100000, align))  {		prom_debug("    trying: 0x%x\n\r", base);		addr = (unsigned long)prom_claim(base, size, 0);		if (addr != PROM_ERROR)			break;		addr = 0;	}	if (addr == 0)		return 0;	RELOC(alloc_top) = addr; bail:	prom_debug(" -> %x\n", addr);	prom_debug("  alloc_bottom : %x\n", RELOC(alloc_bottom));	prom_debug("  alloc_top    : %x\n", RELOC(alloc_top));	prom_debug("  alloc_top_hi : %x\n", RELOC(alloc_top_high));	prom_debug("  rmo_top      : %x\n", RELOC(rmo_top));	prom_debug("  ram_top      : %x\n", RELOC(ram_top));	return addr;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c49888203d7a316cb947bb8a1cf2ae191f28bcd3/prom_init.c/buggy/arch/powerpc/kernel/prom_init.c