rendered paste body--- common/lib/modules/fglrx/build_mod/firegl_public.c 2007-10-15 13:57:26.000000000 +0600+++ common/lib/modules/fglrx/build_mod/firegl_public.c 2007-10-15 13:55:11.000000000 +0600@@ -2486,10 +2486,15 @@ #ifndef ptep_clear_flush_dirty #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ ({ \- int __dirty = ptep_test_and_clear_dirty(__ptep); \- if (__dirty) \- flush_tlb_page(__vma, __address); \- __dirty; \+ int __dirty; \+ if( !pte_dirty(*__ptep) ) { \+ __dirty = 0; \+ } \+ else { \+ __dirty = test_and_clear_bit(_PAGE_BIT_ACCESSED,&__ptep->pte_low); \+ flush_tlb_page(__vma, __address); \+ } \+ __dirty; \ }) #endif@@ -2933,7 +2938,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)@@ -2943,9 +2948,9 @@ #else static void ATI_API_CALL (*irq_handler_func)(int, void*, void*); /* function pointer variable */-static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1, struct pt_regs *regs)+static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1) {- irq_handler_func(irq, arg1, regs);+ irq_handler_func(irq, arg1, NULL); return IRQ_HANDLED; }@@ -2956,7 +2961,7 @@ irq_handler_func = handler; return request_irq(irq, ke_irq_handler_wrap,- 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)@@ -3527,12 +3532,19 @@ #else *phys_address = pte_val(pte) & (u64)((u64)PAGE_MASK | (u64)0xf<<32); #endif- 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)+ sprintf(buf, "0x%Lx %c%c%c%c%c%c\n",+#else+ sprintf(buf, "0x%Lx %c%c%c\n",+#endif+ *phys_address,+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)+ pte_present (pte) ? 'p' : '-', pte_read (pte) ? 'r' : '-',- pte_write (pte) ? 'w' : '-', pte_exec (pte) ? 'x' : '-',+#endif+ pte_write (pte) ? 'w' : '-', pte_dirty (pte) ? 'd' : '-', pte_young (pte) ? 'a' : '-'); }@@ -5433,7 +5445,7 @@ /** \brief Type definition of the structure describing Slab Cache object */ typedef struct tag_kasSlabCache_t {- kmem_cache_t* cache; /* OS slab cache object */+ struct kmem_cache* cache; /* OS slab cache object */ spinlock_t lock; /* OS spinlock object protecting the cache */ unsigned int routine_type; /* Type of routine the cache might be accessed from */ char name[14]; /* Cache object name (kernel 2.4 restricts its length to 19 chars) */@@ -5479,7 +5491,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; }