Andi Kleen wrote: >> -#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? > > I didn't think I moved it. I wrote a clean version instead. It does do something problematic for virtualization, by not allowing the VMI layer to override the DPL on descriptors or RPL of segments. It might be convenient for the hypervisor platform layer to do that. Zach