"lgdt %0\n" : "=m" (curgdt)
"lgdtq %0\n" : : "m" (curgdt)
static void set_gdt(void *newgdt, u16 limit){	unsigned char curgdt[10];	/* x86-64 supports unaligned loads & stores */	(*(u16 *)(curgdt)) = limit;	(*(u64 *)(curgdt +2)) = (unsigned long)(newgdt);	__asm__ __volatile__ (		"lgdt %0\n"		: "=m" (curgdt)		);};