From 758dd1586bd360ffc07ea6f5104b1176c54123ec Mon Sep 17 00:00:00 2001 From: Jeffrey Gardner Date: Fri, 26 Oct 2007 19:38:38 +0000 Subject: ebuild with help from bugzilla svn path=/; revision=110 --- .../files/8.42.3/ati-drivers-2.6.23-2.patch | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23-2.patch (limited to 'x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23-2.patch') diff --git a/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23-2.patch b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23-2.patch new file mode 100644 index 0000000..4ab3ac6 --- /dev/null +++ b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23-2.patch @@ -0,0 +1,78 @@ +diff -Naur common/lib/modules/fglrx/build_mod/firegl_public.c.old common/lib/modules/fglrx/build_mod/firegl_public.c +--- common/lib/modules/fglrx/build_mod/firegl_public.c 2007-10-24 14:10:52.000000000 +0000 ++++ common/lib/modules/fglrx/build_mod/firegl_public.c 2007-10-24 14:14:39.000000000 +0000 +@@ -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); ++} ++#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); } ++#endif ++#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) -- cgit v1.2.3