X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fbsd-os.c;h=df486eb63ba2a34cbb6aa78405b872843f4f87f8;hb=d442c23da9851beac541b8bddfc2c0837cb87309;hp=884849255ca120f5e10ef8c4ecb2678171e49753;hpb=d63d80e637e9058ff5db7a10c267796ff7970ba1;p=sbcl.git diff --git a/src/runtime/bsd-os.c b/src/runtime/bsd-os.c index 8848492..df486eb 100644 --- a/src/runtime/bsd-os.c +++ b/src/runtime/bsd-os.c @@ -70,7 +70,11 @@ static void freebsd_init(); #include #include #include +#include #include +#ifdef LISP_FEATURE_X86 +#include +#endif static void openbsd_init(); #endif @@ -481,9 +485,16 @@ os_get_runtime_executable_path() #endif #ifdef __OpenBSD__ + +int openbsd_use_fxsave = 0; + void openbsd_init() { +#ifdef LISP_FEATURE_X86 + int mib[2]; + size_t size; +#endif /* * Show a warning if it looks like the memory available after * allocating the spaces won't be at least this much. @@ -495,6 +506,14 @@ openbsd_init() #endif struct rlimit rl; +#ifdef LISP_FEATURE_X86 + /* Save the machdep.osfxsr sysctl for use by os_restore_fp_control() */ + mib[0] = CTL_MACHDEP; + mib[1] = CPU_OSFXSR; + size = sizeof (openbsd_use_fxsave); + sysctl(mib, 2, &openbsd_use_fxsave, &size, NULL, 0); +#endif + /* OpenBSD, like NetBSD, counts mmap()ed space against the * process's data size limit. If the soft limit is lower than the * hard limit then try to yank it up, this lets users in the