diff options
Diffstat (limited to 'x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch')
-rw-r--r-- | x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch | 107 |
1 files changed, 31 insertions, 76 deletions
diff --git a/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch index e02c757..9713208 100644 --- a/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch +++ b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch @@ -1,86 +1,41 @@ ---- firegl_public.c 2007-10-23 23:32:06.000000000 -0500 -+++ firegl_public.c.new 2007-10-23 23:58:31.000000000 -0500 -@@ -217,6 +217,56 @@ - #define preempt_enable() - #endif - -+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22) -+#if defined(__i386__) -+#define ptep_test_and_clear_dirty(vma, addr, ptep) ({ \ -+ int __ret = 0; \ -+ if (pte_dirty(*(ptep))) \ -+ __ret = test_and_clear_bit(_PAGE_BIT_DIRTY, \ -+ &(ptep)->pte_low); \ -+ if (__ret) \ -+ pte_update((vma)->vm_mm, addr, ptep); \ -+ __ret; \ -+}) -+ -+static inline int pte_read(pte_t pte) { return (pte).pte_low & _PAGE_USER; } -+static inline int pte_user(pte_t pte) { return (pte).pte_low & _PAGE_USER; } -+#ifdef CONFIG_X86_PAE -+/* -+ * Is the pte executable? -+ */ -+static inline int pte_x(pte_t pte) -+{ -+ return !(pte_val(pte) & _PAGE_NX); -+} -+ -+/* -+ * All present user-pages with !NX bit are user-executable: -+ */ -+static inline int pte_exec(pte_t pte) -+{ -+ return pte_user(pte) && pte_x(pte); -+} +diff -Naur common/lib/modules/fglrx/build_mod/firegl_public.c common/lib/modules/fglrx/build_mod/firegl_public.c +--- common/lib/modules/fglrx/build_mod/firegl_public.c 2007-07-29 13:36:37.000000000 +0200 ++++ common/lib/modules/fglrx/build_mod/firegl_public.c 2007-07-29 14:24:11.000000000 +0200 +@@ -2409,7 +2409,11 @@ + #ifdef pte_offset_map + pte_p = pte_offset_map(pmd_p, virtual_addr); + if (pte_present(*pte_p)) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) + ret = (ptep_clear_flush_dirty(vma, virtual_addr, pte_p) ? 1 : 0); +#else -+static inline int pte_exec(pte_t pte) -+{ -+ return pte_user(pte); -+} -+#endif /* PAE */ -+ -+#elif defined(__x86_64__) -+static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, -+ unsigned long addr, pte_t *ptep) -+{ -+ if (!pte_dirty(*ptep)) -+ return 0; -+ return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte); -+} -+static inline int pte_read(pte_t pte) { return pte_val(pte) & _PAGE_USER; } -+static inline int pte_exec(pte_t pte) { return !(pte_val(pte) & _PAGE_NX); } ++ return 0; +#endif + else + __KE_DEBUG("page not exists!\n"); + pte_unmap(pte_p); +@@ -3399,9 +3403,11 @@ + sprintf(buf, "0x%Lx %c%c%c%c%c%c\n", + *phys_address, + pte_present (pte) ? 'p' : '-', ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) + pte_read (pte) ? 'r' : '-', +- pte_write (pte) ? 'w' : '-', + pte_exec (pte) ? 'x' : '-', +#endif -+ - // ============================================================ - /* globals */ - -@@ -2490,7 +2540,7 @@ - #ifndef ptep_clear_flush_dirty - #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ - ({ \ -- int __dirty = ptep_test_and_clear_dirty(__ptep); \ -+ int __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep); \ - if (__dirty) \ - flush_tlb_page(__vma, __address); \ - __dirty; \ -@@ -2937,7 +2987,7 @@ - { - return request_irq(irq, - (void(*)(int, void *, struct pt_regs *))handler, -- SA_SHIRQ, dev_name, dev_id); -+ IRQF_SHARED, dev_name, dev_id); - } - - void ATI_API_CALL __ke_free_irq(unsigned int irq, void *dev_id) -@@ -5481,7 +5531,7 @@ ++ pte_write (pte) ? 'w' : '-', + pte_dirty (pte) ? 'd' : '-', + pte_young (pte) ? 'a' : '-'); + } +@@ -5348,7 +5354,11 @@ DBG_TRACE("creating slab object '%s'", slabcache_obj->name); if ((slabcache_obj->cache = -- kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL))) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) + kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL))) ++#else + kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL))) ++#endif { ret = 1; } + |