2 #define _WIN32_WINNT 0x0501 // For AddVectoredExceptionHandler
19 typedef char symbol_char;
21 #define FACTOR_OS_STRING "winnt"
24 #define FACTOR_DLL NULL
25 #define FACTOR_STDCALL(return_type) return_type __stdcall
27 #define FACTOR_DLL L"factor.dll"
28 #define FACTOR_STDCALL(return_type) __attribute__((stdcall)) return_type
31 FACTOR_STDCALL(LONG) exception_handler(PEXCEPTION_POINTERS pe);
33 // SSE traps raise these exception codes, which are defined in internal NT headers
35 #ifndef STATUS_FLOAT_MULTIPLE_FAULTS
36 #define STATUS_FLOAT_MULTIPLE_FAULTS 0xC00002B4
39 #ifndef STATUS_FLOAT_MULTIPLE_TRAPS
40 #define STATUS_FLOAT_MULTIPLE_TRAPS 0xC00002B5
43 typedef HANDLE THREADHANDLE;
45 THREADHANDLE start_thread(void *(*start_routine)(void *),void *args);
46 inline static THREADHANDLE thread_id() { return GetCurrentThread(); }
48 void init_platform_globals();
49 void register_vm_with_thread(factor_vm *vm);