Linux 0.10 (November 11, 1991 ???)
[davej-history.git] / include / asm / segment.h
blob936ed726ce081ee7fa91ad18af09d56fc96c5183
1 extern inline unsigned char get_fs_byte(const char * addr)
3 unsigned register char _v;
5 __asm__ ("movb %%fs:%1,%0":"=r" (_v):"m" (*addr));
6 return _v;
9 extern inline unsigned short get_fs_word(const unsigned short *addr)
11 unsigned short _v;
13 __asm__ ("movw %%fs:%1,%0":"=r" (_v):"m" (*addr));
14 return _v;
17 extern inline unsigned long get_fs_long(const unsigned long *addr)
19 unsigned long _v;
21 __asm__ ("movl %%fs:%1,%0":"=r" (_v):"m" (*addr)); \
22 return _v;
25 extern inline void put_fs_byte(char val,char *addr)
27 __asm__ ("movb %0,%%fs:%1"::"r" (val),"m" (*addr));
30 extern inline void put_fs_word(short val,short * addr)
32 __asm__ ("movw %0,%%fs:%1"::"r" (val),"m" (*addr));
35 extern inline void put_fs_long(unsigned long val,unsigned long * addr)
37 __asm__ ("movl %0,%%fs:%1"::"r" (val),"m" (*addr));
41 * Someone who knows GNU asm better than I should double check the followig.
42 * It seems to work, but I don't know if I'm doing something subtly wrong.
43 * --- TYT, 11/24/91
46 extern inline unsigned long get_fs()
48 unsigned short _v;
49 __asm__("mov %%fs,%%ax":"=a" (_v):);
50 return _v;
53 extern inline unsigned long get_ds()
55 unsigned short _v;
56 __asm__("mov %%ds,%%ax":"=a" (_v):);
57 return _v;
60 extern inline void set_fs(unsigned long val)
62 __asm__("mov %0,%%fs"::"a" ((unsigned short) val));