]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/os-freebsd-x86.64.hpp
webapps.wiki: adding search bar
[factor.git] / vm / os-freebsd-x86.64.hpp
index b2dd0961370f57aad3acaab79766a3989b65f2a3..a6bb00b89ef9253002356f6a1248b3c118068931 100644 (file)
@@ -1,35 +1,40 @@
 #include <ucontext.h>
+#include <signal.h>
+#include <sys/signal.h>
+#include <machine/ucontext.h>
+#include <sys/_ucontext.h>
 #include <machine/fpu.h>
 
-namespace factor
-{
+namespace factor {
 
-inline static void *ucontext_stack_pointer(void *uap)
-{
-        ucontext_t *ucontext = (ucontext_t *)uap;
-        return (void *)ucontext->uc_mcontext.mc_rsp;
-}
 
 inline static unsigned int uap_fpu_status(void *uap)
 {
-        ucontext_t *ucontext = (ucontext_t *)uap;
-        if (ucontext->uc_mcontext.mc_fpformat == _MC_FPFMT_XMM) {
-            struct savexmm *xmm = (struct savexmm *)(&ucontext->uc_mcontext.mc_fpstate);
-            return xmm->sv_env.en_sw | xmm->sv_env.en_mxcsr;
-        } else
-            return 0;
+       ucontext_t *ucontext = (ucontext_t *)uap;
+       if (ucontext->uc_mcontext.mc_fpformat == _MC_FPFMT_XMM)
+       {
+               struct savefpu *xmm = (struct savefpu *)(&ucontext->uc_mcontext.mc_fpstate);
+               return xmm->sv_env.en_sw | xmm->sv_env.en_mxcsr;
+       }
+       else
+               return 0;
 }
 
 inline static void uap_clear_fpu_status(void *uap)
 {
-        ucontext_t *ucontext = (ucontext_t *)uap;
-        if (ucontext->uc_mcontext.mc_fpformat == _MC_FPFMT_XMM) {
-            struct savexmm *xmm = (struct savexmm *)(&ucontext->uc_mcontext.mc_fpstate);
-            xmm->sv_env.en_sw = 0;
-            xmm->sv_env.en_mxcsr &= 0xffffffc0;
-        }
+       ucontext_t *ucontext = (ucontext_t *)uap;
+       if (ucontext->uc_mcontext.mc_fpformat == _MC_FPFMT_XMM)
+       {
+               struct savefpu *xmm = (struct savefpu *)(&ucontext->uc_mcontext.mc_fpstate);
+               xmm->sv_env.en_sw = 0;
+               xmm->sv_env.en_mxcsr &= 0xffffffc0;
+       }
 }
 
-#define UAP_PROGRAM_COUNTER(ucontext) (((ucontext_t *)(ucontext))->uc_mcontext.mc_rip)
+#define UAP_STACK_POINTER(ucontext) (((struct sigcontext *)ucontext)->sc_rsp)
+#define UAP_PROGRAM_COUNTER(ucontext) (((struct sigcontext *)ucontext)->sc_rip)
+#define UAP_SET_TOC_POINTER(uap, ptr) (void)0
+#define UAP_STACK_POINTER_TYPE long
 
+static const unsigned JIT_FRAME_SIZE = 32;
 }