Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/linux32/linux32_machdep.c
Show First 20 Lines • Show All 733 Lines • ▼ Show 20 Lines | linux_set_thread_area(struct thread *td, | ||||
set_pcb_flags(pcb, PCB_32BIT); | set_pcb_flags(pcb, PCB_32BIT); | ||||
update_gdt_gsbase(td, info.base_addr); | update_gdt_gsbase(td, info.base_addr); | ||||
return (0); | return (0); | ||||
} | } | ||||
int futex_xchgl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | int futex_xchgl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | ||||
int futex_xchgl_smap(int oparg, uint32_t *uaddr, int *oldval); | int futex_xchgl_smap(int oparg, uint32_t *uaddr, int *oldval); | ||||
DEFINE_IFUNC(, int, futex_xchgl, (int, uint32_t *, int *), static) | DEFINE_IFUNC(, int, futex_xchgl, (int, uint32_t *, int *)) | ||||
{ | { | ||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | ||||
futex_xchgl_smap : futex_xchgl_nosmap); | futex_xchgl_smap : futex_xchgl_nosmap); | ||||
} | } | ||||
int futex_addl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | int futex_addl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | ||||
int futex_addl_smap(int oparg, uint32_t *uaddr, int *oldval); | int futex_addl_smap(int oparg, uint32_t *uaddr, int *oldval); | ||||
DEFINE_IFUNC(, int, futex_addl, (int, uint32_t *, int *), static) | DEFINE_IFUNC(, int, futex_addl, (int, uint32_t *, int *)) | ||||
{ | { | ||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | ||||
futex_addl_smap : futex_addl_nosmap); | futex_addl_smap : futex_addl_nosmap); | ||||
} | } | ||||
int futex_orl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | int futex_orl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | ||||
int futex_orl_smap(int oparg, uint32_t *uaddr, int *oldval); | int futex_orl_smap(int oparg, uint32_t *uaddr, int *oldval); | ||||
DEFINE_IFUNC(, int, futex_orl, (int, uint32_t *, int *), static) | DEFINE_IFUNC(, int, futex_orl, (int, uint32_t *, int *)) | ||||
{ | { | ||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | ||||
futex_orl_smap : futex_orl_nosmap); | futex_orl_smap : futex_orl_nosmap); | ||||
} | } | ||||
int futex_andl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | int futex_andl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | ||||
int futex_andl_smap(int oparg, uint32_t *uaddr, int *oldval); | int futex_andl_smap(int oparg, uint32_t *uaddr, int *oldval); | ||||
DEFINE_IFUNC(, int, futex_andl, (int, uint32_t *, int *), static) | DEFINE_IFUNC(, int, futex_andl, (int, uint32_t *, int *)) | ||||
{ | { | ||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | ||||
futex_andl_smap : futex_andl_nosmap); | futex_andl_smap : futex_andl_nosmap); | ||||
} | } | ||||
int futex_xorl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | int futex_xorl_nosmap(int oparg, uint32_t *uaddr, int *oldval); | ||||
int futex_xorl_smap(int oparg, uint32_t *uaddr, int *oldval); | int futex_xorl_smap(int oparg, uint32_t *uaddr, int *oldval); | ||||
DEFINE_IFUNC(, int, futex_xorl, (int, uint32_t *, int *), static) | DEFINE_IFUNC(, int, futex_xorl, (int, uint32_t *, int *)) | ||||
{ | { | ||||
return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | return ((cpu_stdext_feature & CPUID_STDEXT_SMAP) != 0 ? | ||||
futex_xorl_smap : futex_xorl_nosmap); | futex_xorl_smap : futex_xorl_nosmap); | ||||
} | } |