|
|
1.1 ! root 1: extern inline unsigned char get_fs_byte(const char * addr) ! 2: { ! 3: unsigned register char _v; ! 4: ! 5: __asm__ ("movb %%fs:%1,%0":"=r" (_v):"m" (*addr)); ! 6: return _v; ! 7: } ! 8: ! 9: extern inline unsigned short get_fs_word(const unsigned short *addr) ! 10: { ! 11: unsigned short _v; ! 12: ! 13: __asm__ ("movw %%fs:%1,%0":"=r" (_v):"m" (*addr)); ! 14: return _v; ! 15: } ! 16: ! 17: extern inline unsigned long get_fs_long(const unsigned long *addr) ! 18: { ! 19: unsigned long _v; ! 20: ! 21: __asm__ ("movl %%fs:%1,%0":"=r" (_v):"m" (*addr)); \ ! 22: return _v; ! 23: } ! 24: ! 25: extern inline void put_fs_byte(char val,char *addr) ! 26: { ! 27: __asm__ ("movb %0,%%fs:%1"::"r" (val),"m" (*addr)); ! 28: } ! 29: ! 30: extern inline void put_fs_word(short val,short * addr) ! 31: { ! 32: __asm__ ("movw %0,%%fs:%1"::"r" (val),"m" (*addr)); ! 33: } ! 34: ! 35: extern inline void put_fs_long(unsigned long val,unsigned long * addr) ! 36: { ! 37: __asm__ ("movl %0,%%fs:%1"::"r" (val),"m" (*addr)); ! 38: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.