x86_64: add pseudo-features for 32-bit compat syscall
[deliverable/linux.git] / arch / x86 / kernel / cpu / common_64.c
index 39eaefbcec065b9dd3ca986cb43e596b937e90f0..36537ab9e56ad7c36ed8abe9d402636d6aca9a5d 100644 (file)
@@ -314,6 +314,9 @@ static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
        if (c->extended_cpuid_level >= 0x80000007)
                c->x86_power = cpuid_edx(0x80000007);
 
+       /* Assume all 64-bit CPUs support 32-bit syscall */
+       set_cpu_cap(c, X86_FEATURE_SYSCALL32);
+
        if (c->x86_vendor != X86_VENDOR_UNKNOWN &&
            cpu_devs[c->x86_vendor]->c_early_init)
                cpu_devs[c->x86_vendor]->c_early_init(c);
@@ -480,7 +483,8 @@ void pda_init(int cpu)
        struct x8664_pda *pda = cpu_pda(cpu);
 
        /* Setup up data that may be needed in __get_free_pages early */
-       asm volatile("movl %0,%%fs ; movl %0,%%gs" :: "r" (0));
+       loadsegment(fs, 0);
+       loadsegment(gs, 0);
        /* Memory clobbers used to order PDA accessed */
        mb();
        wrmsrl(MSR_GS_BASE, pda);
This page took 0.028641 seconds and 5 git commands to generate.