diff options
Diffstat (limited to 'x11-drivers/ati-drivers/files/ati-drivers-2.6.20.patch')
-rw-r--r-- | x11-drivers/ati-drivers/files/ati-drivers-2.6.20.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/x11-drivers/ati-drivers/files/ati-drivers-2.6.20.patch b/x11-drivers/ati-drivers/files/ati-drivers-2.6.20.patch new file mode 100644 index 0000000..aeaba71 --- /dev/null +++ b/x11-drivers/ati-drivers/files/ati-drivers-2.6.20.patch @@ -0,0 +1,73 @@ +--- common/lib/modules/fglrx/build_mod/firegl_public.c 2006-12-18 10:58:15.000000000 -0500 ++++ common/lib/modules/fglrx/build_mod/firegl_public.c 2006-12-18 11:14:04.000000000 -0500 +@@ -181,6 +181,70 @@ + int errno; + #endif // __ia64__ + ++#if defined(__i386__) ++#define __syscall_return(type, res) \ ++do { \ ++ if ((unsigned long)(res) >= (unsigned long)(-(128 + 1))) { \ ++ errno = -(res); \ ++ res = -1; \ ++ } \ ++ return (type) (res); \ ++} while (0) ++#define _syscall2(type,name,type1,arg1,type2,arg2) \ ++type name(type1 arg1,type2 arg2) \ ++{ \ ++long __res; \ ++__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ ++ : "=a" (__res) \ ++ : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)) \ ++ : "memory"); \ ++__syscall_return(type,__res); \ ++} ++ ++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ ++type name(type1 arg1,type2 arg2,type3 arg3) \ ++{ \ ++long __res; \ ++__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ ++ : "=a" (__res) \ ++ : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), \ ++ "d" ((long)(arg3)) : "memory"); \ ++__syscall_return(type,__res); \ ++} ++#elif defined(__x86_64__) ++#define __syscall_clobber "r11","rcx","memory" ++#define __syscall "syscall" ++ ++#define __syscall_return(type, res) \ ++do { \ ++ if ((unsigned long)(res) >= (unsigned long)(-127)) { \ ++ errno = -(res); \ ++ res = -1; \ ++ } \ ++ return (type) (res); \ ++} while (0) ++#define _syscall2(type,name,type1,arg1,type2,arg2) \ ++type name(type1 arg1,type2 arg2) \ ++{ \ ++long __res; \ ++__asm__ volatile (__syscall \ ++ : "=a" (__res) \ ++ : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)) : __syscall_clobber ); \ ++__syscall_return(type,__res); \ ++} ++ ++#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ ++type name(type1 arg1,type2 arg2,type3 arg3) \ ++{ \ ++long __res; \ ++__asm__ volatile (__syscall \ ++ : "=a" (__res) \ ++ : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)), \ ++ "d" ((long)(arg3)) : __syscall_clobber); \ ++__syscall_return(type,__res); \ ++} ++#endif ++ + // int mlock(const void *addr, size_t len); + _syscall2(int, mlock, const void *, addr, size_t, len ) + // int munlock(const void *addr, size_t len); |