> -#define _set_gate(gate_addr,type,dpl,addr,seg) \ > -do { \ > - int __d0, __d1; \ > - __asm__ __volatile__ ("movw %%dx,%%ax\n\t" \ > - "movw %4,%%dx\n\t" \ > - "movl %%eax,%0\n\t" \ > - "movl %%edx,%1" \ > - :"=m" (*((long *) (gate_addr))), \ > - "=m" (*(1+(long *) (gate_addr))), "=&a" (__d0), "=&d" (__d1) \ > - :"i" ((short) (0x8000+(dpl<<13)+(type<<8))), \ > - "3" ((char *) (addr)),"2" ((seg) << 16)); \ > -} while (0) The ugly piece of code doesn't do anything priviledged. So why do you want to move it? -Andi