value = virt_to_gart(page) | pati | present | index; 
value = virt_to_gart((unsigned long *)page) | pati | present | index; 
static int efficeon_create_gatt_table(struct agp_bridge_data *bridge){	int index;	const int pati    = EFFICEON_PATI;	const int present = EFFICEON_PRESENT;	const int clflush_chunk = ((cpuid_ebx(1) >> 8) & 0xff) << 3;	int num_entries, l1_pages;		num_entries = A_SIZE_LVL2(agp_bridge->current_size)->num_entries;	printk(KERN_DEBUG PFX "efficeon_create_gatt_table(%d)\n", num_entries);	/* There are 2^10 PTE pages per PDE page */	BUG_ON(num_entries & 0x3ff);	l1_pages = num_entries >> 10;	for (index = 0 ; index < l1_pages ; index++) {		int offset;		unsigned long page;		unsigned long value;		page = efficeon_private.l1_table[index];		BUG_ON(page);		page = get_zeroed_page(GFP_KERNEL);		if (!page) {			efficeon_free_gatt_table(agp_bridge);			return -ENOMEM;		}		SetPageReserved(virt_to_page((char *)page));		for (offset = 0; offset < PAGE_SIZE; offset += clflush_chunk)			asm volatile("clflush %0" : : "m" (*(char *)(page+offset)));		efficeon_private.l1_table[index] = page;		value = virt_to_gart(page) | pati | present | index;		pci_write_config_dword(agp_bridge->dev,			EFFICEON_ATTPAGE, value);	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0a1cc0b6a4abaed5f891d1be3e3d0d7b9b719287/efficeon-agp.c/clean/drivers/char/agp/efficeon-agp.c