diff options
Diffstat (limited to 'linux/dev/include/asm-i386/segment.h')
-rw-r--r-- | linux/dev/include/asm-i386/segment.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/linux/dev/include/asm-i386/segment.h b/linux/dev/include/asm-i386/segment.h index 73952b01..db06caa7 100644 --- a/linux/dev/include/asm-i386/segment.h +++ b/linux/dev/include/asm-i386/segment.h @@ -92,6 +92,7 @@ static inline unsigned long __get_user(const void * y, int size) } } +#if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ < 95) static inline void __generic_memcpy_tofs(void * to, const void * from, unsigned long n) { __asm__ volatile @@ -272,6 +273,29 @@ __asm__("cld\n\t" \ __constant_memcpy_tofs((to),(from),(n)) : \ __generic_memcpy_tofs((to),(from),(n))) + +#else /* code for gcc-2.95.x and newer follows */ + +static inline void memcpy_fromfs(void * to, const void * from, unsigned long n) +{ + char *d = (char *)to; + const char *s = (const char *)from; + while (n-- > 0) { + *d++ = __get_user(s++, 1); + } +} + +static inline void memcpy_tofs(void * to, const void * from, unsigned long n) +{ + char *d = (char *)to; + const char *s = (const char *)from; + while (n-- > 0) { + __put_user(*s++, d++, 1); + } +} + +#endif /* not gcc-2.95 */ + /* * These are deprecated.. * |