Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/x86/gen/getcontextx.c
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
static int | static int | ||||
__getcontextx_size_xfpu(void) | __getcontextx_size_xfpu(void) | ||||
{ | { | ||||
return (sizeof(ucontext_t) + xstate_sz); | return (sizeof(ucontext_t) + xstate_sz); | ||||
} | } | ||||
DEFINE_UIFUNC(, int, __getcontextx_size, (void), static) | DEFINE_UIFUNC(, int, __getcontextx_size, (void)) | ||||
{ | { | ||||
u_int p[4]; | u_int p[4]; | ||||
if ((cpu_feature2 & CPUID2_OSXSAVE) != 0) { | if ((cpu_feature2 & CPUID2_OSXSAVE) != 0) { | ||||
cpuid_count(0xd, 0x0, p); | cpuid_count(0xd, 0x0, p); | ||||
xstate_sz = p[1] - sizeof(savex86_t); | xstate_sz = p[1] - sizeof(savex86_t); | ||||
} | } | ||||
return (__getcontextx_size_xfpu); | return (__getcontextx_size_xfpu); | ||||
Show All 22 Lines | __fillcontextx2_noxfpu(char *ctx) | ||||
ucontext_t *ucp; | ucontext_t *ucp; | ||||
ucp = (ucontext_t *)ctx; | ucp = (ucontext_t *)ctx; | ||||
ucp->uc_mcontext.mc_xfpustate = 0; | ucp->uc_mcontext.mc_xfpustate = 0; | ||||
ucp->uc_mcontext.mc_xfpustate_len = 0; | ucp->uc_mcontext.mc_xfpustate_len = 0; | ||||
return (0); | return (0); | ||||
} | } | ||||
DEFINE_UIFUNC(, int, __fillcontextx2, (char *), static) | DEFINE_UIFUNC(, int, __fillcontextx2, (char *)) | ||||
{ | { | ||||
return ((cpu_feature2 & CPUID2_OSXSAVE) != 0 ? __fillcontextx2_xfpu : | return ((cpu_feature2 & CPUID2_OSXSAVE) != 0 ? __fillcontextx2_xfpu : | ||||
__fillcontextx2_noxfpu); | __fillcontextx2_noxfpu); | ||||
} | } | ||||
int | int | ||||
__fillcontextx(char *ctx) | __fillcontextx(char *ctx) | ||||
Show All 29 Lines |