asm volatile ("lgdt %0" :: "m" (ctxt->gdt_limit)); asm volatile ("lidt %0" :: "m" (ctxt->idt_limit));
load_gdt(&ctxt->gdt_limit); load_idt(&ctxt->idt_limit);
void __restore_processor_state(struct saved_context *ctxt){	/*	 * control registers	 */	write_cr4(ctxt->cr4);	write_cr3(ctxt->cr3);	write_cr2(ctxt->cr2);	write_cr2(ctxt->cr0);	/*	 * now restore the descriptor tables to their proper values	 * ltr is done i fix_processor_context().	 */	asm volatile ("lgdt %0" :: "m" (ctxt->gdt_limit));	asm volatile ("lidt %0" :: "m" (ctxt->idt_limit));	/*	 * segment registers	 */	asm volatile ("movw %0, %%es" :: "r" (ctxt->es));	asm volatile ("movw %0, %%fs" :: "r" (ctxt->fs));	asm volatile ("movw %0, %%gs" :: "r" (ctxt->gs));	asm volatile ("movw %0, %%ss" :: "r" (ctxt->ss));	/*	 * sysenter MSRs	 */	if (boot_cpu_has(X86_FEATURE_SEP))		enable_sep_cpu();	fix_processor_context();	do_fpu_end();	mtrr_ap_init();}