| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef AGP_H | 
|  | 2 | #define AGP_H 1 | 
|  | 3 |  | 
|  | 4 | #include <asm/pgtable.h> | 
|  | 5 | #include <asm/cacheflush.h> | 
|  | 6 |  | 
|  | 7 | /* | 
|  | 8 | * Functions to keep the agpgart mappings coherent with the MMU. | 
|  | 9 | * The GART gives the CPU a physical alias of pages in memory. The alias region is | 
|  | 10 | * mapped uncacheable. Make sure there are no conflicting mappings | 
|  | 11 | * with different cachability attributes for the same page. This avoids | 
|  | 12 | * data corruption on some CPUs. | 
|  | 13 | */ | 
|  | 14 |  | 
| Jan Beulich | 9eeee24 | 2007-04-02 14:50:14 +0100 | [diff] [blame] | 15 | /* Caller's responsibility to call global_flush_tlb() for | 
|  | 16 | * performance reasons */ | 
|  | 17 | #define map_page_into_agp(page) change_page_attr(page, 1, PAGE_KERNEL_NOCACHE) | 
|  | 18 | #define unmap_page_from_agp(page) change_page_attr(page, 1, PAGE_KERNEL) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 19 | #define flush_agp_mappings() global_flush_tlb() | 
|  | 20 |  | 
|  | 21 | /* Could use CLFLUSH here if the cpu supports it. But then it would | 
|  | 22 | need to be called for each cacheline of the whole page so it may not be | 
|  | 23 | worth it. Would need a page for it. */ | 
| Zachary Amsden | 4bb0d3e | 2005-09-03 15:56:36 -0700 | [diff] [blame] | 24 | #define flush_agp_cache() wbinvd() | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 25 |  | 
| Keir Fraser | 07eee78 | 2005-03-30 13:17:04 -0800 | [diff] [blame] | 26 | /* Convert a physical address to an address suitable for the GART. */ | 
|  | 27 | #define phys_to_gart(x) (x) | 
|  | 28 | #define gart_to_phys(x) (x) | 
|  | 29 |  | 
|  | 30 | /* GATT allocation. Returns/accepts GATT kernel virtual address. */ | 
|  | 31 | #define alloc_gatt_pages(order)		\ | 
|  | 32 | ((char *)__get_free_pages(GFP_KERNEL, (order))) | 
|  | 33 | #define free_gatt_pages(table, order)	\ | 
|  | 34 | free_pages((unsigned long)(table), (order)) | 
|  | 35 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | #endif |