Hi! > +static inline void vmi_write_gdt(void *gdt, unsigned entry, u32 descLo, u32 descHi) > +{ > + vmi_wrap_call( > + WriteGDTEntry, "movl %2, (%0,%1,8);" > + "movl %3, 4(%0,%1,8);", > + VMI_NO_OUTPUT, > + 4, XCONC(VMI_IREG1(gdt), VMI_IREG2(entry), VMI_IREG3(descLo), VMI_IREG4(descHi)), > + VMI_CLOBBER_EXTENDED(ZERO_RETURNS, "memory")); > +} I'd say "not funny" here. Very little comments for very obscure code. "movl %3, 4(%0,%1,8);" is particulary "interesting". > +static inline void write_gdt_entry(void *gdt, int entry, __u32 entry_a, __u32 entry_b) > +{ > + vmi_write_gdt(gdt, entry, entry_a, entry_b); > +} You should be able to use u32 (not __u32) here. Pavel -- 142: byte [] Bytes = new byte[ 4 ];