if ((dir == DMA_FROM_DEVICE) || (dir == DMA_BIDIRECTIONAL)) { 
if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) { unsigned long ptr;  
unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,		enum dma_data_direction dir){	struct dmabounce_device_info *device_info = find_dmabounce_dev(dev);	struct safe_buffer *buf = NULL;	/*	 * Trying to unmap an invalid mapping	 */	if (dma_addr == ~0) {		dev_err(dev, "Trying to unmap invalid mapping\n");		return;	}	if (device_info)		buf = find_safe_buffer(device_info, dma_addr);	if (buf) {		BUG_ON(buf->size != size);		dev_dbg(dev,			"%s: unsafe buffer %p (phy=%p) mapped to %p (phy=%p)\n",			__func__, buf->ptr, (void *) virt_to_dma(dev, buf->ptr),			buf->safe, (void *) buf->safe_dma_addr);		DO_STATS ( device_info->bounce_count++ );		if ((dir == DMA_FROM_DEVICE) ||		    (dir == DMA_BIDIRECTIONAL)) {			dev_dbg(dev,				"%s: copy back safe %p to unsafe %p size %d\n",				__func__, buf->safe, buf->ptr, size);			memcpy(buf->ptr, buf->safe, size);		}		free_safe_buffer(device_info, buf);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5abc100e882a979f8f5be8184938305b3fb2df2b/dmabounce.c/clean/arch/arm/common/dmabounce.c