dma_addr_t *dma_handle, unsigned int __nocast gfp) 
dma_addr_t *dma_handle, gfp_t gfp) 
void *dma_alloc_coherent(struct device *dev, size_t size,			   dma_addr_t *dma_handle, unsigned int __nocast gfp){	void *ret;	struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;	int order = get_order(size);	/* ignore region specifiers */	gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);	if (mem) {		int page = bitmap_find_free_region(mem->bitmap, mem->size,						     order);		if (page >= 0) {			*dma_handle = mem->device_base + (page << PAGE_SHIFT);			ret = mem->virt_base + (page << PAGE_SHIFT);			memset(ret, 0, size);			return ret;		}		if (mem->flags & DMA_MEMORY_EXCLUSIVE)			return NULL;	}	if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff))		gfp |= GFP_DMA;	ret = (void *)__get_free_pages(gfp, order);	if (ret != NULL) {		memset(ret, 0, size);		*dma_handle = virt_to_phys(ret);	}	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7/pci-dma.c/clean/arch/i386/kernel/pci-dma.c