From 4fd804a3a803f0788778f59578961bc45eca2f2b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 27 Mar 2010 09:44:20 -0400 Subject: [PATCH] vm: fix compilation on various Unices --- vm/os-freebsd.hpp | 2 ++ vm/os-linux.hpp | 2 ++ vm/os-macosx.hpp | 2 ++ vm/os-netbsd.hpp | 7 ++----- vm/os-openbsd.hpp | 1 + vm/os-unix.cpp | 2 +- vm/platform.hpp | 3 ++- 7 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 vm/os-openbsd.hpp diff --git a/vm/os-freebsd.hpp b/vm/os-freebsd.hpp index 7797a7199b..177a920d87 100644 --- a/vm/os-freebsd.hpp +++ b/vm/os-freebsd.hpp @@ -6,3 +6,5 @@ extern "C" int getosreldate(); #ifndef KERN_PROC_PATHNAME #define KERN_PROC_PATHNAME 12 #endif + +#define UAP_STACK_POINTER_TYPE __register_t diff --git a/vm/os-linux.hpp b/vm/os-linux.hpp index de13896b9a..6c490de260 100644 --- a/vm/os-linux.hpp +++ b/vm/os-linux.hpp @@ -7,4 +7,6 @@ VM_C_API int inotify_init(); VM_C_API int inotify_add_watch(int fd, const char *name, u32 mask); VM_C_API int inotify_rm_watch(int fd, u32 wd); +#define UAP_STACK_POINTER_TYPE greg_t + } diff --git a/vm/os-macosx.hpp b/vm/os-macosx.hpp index 0d230f48e3..93f6574367 100644 --- a/vm/os-macosx.hpp +++ b/vm/os-macosx.hpp @@ -15,4 +15,6 @@ void c_to_factor_toplevel(cell quot); #define UAP_STACK_POINTER(ucontext) (((ucontext_t *)ucontext)->uc_stack.ss_sp) +#define UAP_STACK_POINTER_TYPE void* + } diff --git a/vm/os-netbsd.hpp b/vm/os-netbsd.hpp index d45b2ac163..e79d1bf375 100644 --- a/vm/os-netbsd.hpp +++ b/vm/os-netbsd.hpp @@ -1,8 +1,5 @@ #include -namespace factor -{ +#define UAP_PROGRAM_COUNTER(uap) _UC_MACHINE_PC((ucontext_t *)uap) -#define UAP_PROGRAM_COUNTER(uap) _UC_MACHINE_PC((ucontext_t *)uap) - -} +#define UAP_STACK_POINTER_TYPE __greg_t diff --git a/vm/os-openbsd.hpp b/vm/os-openbsd.hpp new file mode 100644 index 0000000000..6a81a26be2 --- /dev/null +++ b/vm/os-openbsd.hpp @@ -0,0 +1 @@ +#define UAP_STACK_POINTER_TYPE __greg_t diff --git a/vm/os-unix.cpp b/vm/os-unix.cpp index 94d2a31839..01740a1712 100644 --- a/vm/os-unix.cpp +++ b/vm/os-unix.cpp @@ -141,7 +141,7 @@ segment::~segment() void factor_vm::dispatch_signal(void *uap, void (handler)()) { - UAP_STACK_POINTER(uap) = fix_callstack_top((stack_frame *)UAP_STACK_POINTER(uap)); + UAP_STACK_POINTER(uap) = (UAP_STACK_POINTER_TYPE)fix_callstack_top((stack_frame *)UAP_STACK_POINTER(uap)); UAP_PROGRAM_COUNTER(uap) = (cell)handler; } diff --git a/vm/platform.hpp b/vm/platform.hpp index 2a38c91171..a71aae1e89 100755 --- a/vm/platform.hpp +++ b/vm/platform.hpp @@ -48,6 +48,7 @@ #endif #elif defined(__OpenBSD__) #define FACTOR_OS_STRING "openbsd" + #include "os-openbsd.hpp" #if defined(FACTOR_X86) #include "os-openbsd-x86.32.hpp" @@ -58,6 +59,7 @@ #endif #elif defined(__NetBSD__) #define FACTOR_OS_STRING "netbsd" + #include "os-netbsd.hpp" #if defined(FACTOR_X86) #include "os-netbsd-x86.32.hpp" @@ -67,7 +69,6 @@ #error "Unsupported NetBSD flavor" #endif - #include "os-netbsd.hpp" #elif defined(linux) #define FACTOR_OS_STRING "linux" #include "os-linux.hpp"