free_pages((unsigned long) bridge->gatt_table_real, page_order); 
free_gatt_pages(bridge->gatt_table_real, page_order); 
int agp_generic_free_gatt_table(struct agp_bridge_data *bridge){	int page_order;	char *table, *table_end;	void *temp;	struct page *page;	temp = bridge->current_size;	switch (bridge->driver->size_type) {	case U8_APER_SIZE:		page_order = A_SIZE_8(temp)->page_order;		break;	case U16_APER_SIZE:		page_order = A_SIZE_16(temp)->page_order;		break;	case U32_APER_SIZE:		page_order = A_SIZE_32(temp)->page_order;		break;	case FIXED_APER_SIZE:		page_order = A_SIZE_FIX(temp)->page_order;		break;	case LVL2_APER_SIZE:		/* The generic routines can't deal with 2 level gatt's */		return -EINVAL;		break;	default:		page_order = 0;		break;	}	/* Do not worry about freeing memory, because if this is	 * called, then all agp memory is deallocated and removed	 * from the table. */	iounmap(bridge->gatt_table);	table = (char *) bridge->gatt_table_real;	table_end = table + ((PAGE_SIZE * (1 << page_order)) - 1);	for (page = virt_to_page(table); page <= virt_to_page(table_end); page++)		ClearPageReserved(page);	free_pages((unsigned long) bridge->gatt_table_real, page_order);	agp_gatt_table = NULL;	bridge->gatt_table = NULL;	bridge->gatt_table_real = NULL;	bridge->gatt_bus_addr = 0;	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/07eee78ea8ba2d0b7b20551c35a3e7dd158d50bb/generic.c/clean/drivers/char/agp/generic.c