1 /* 2 * Stack-less Just-In-Time compiler 3 * 4 * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without modification, are 7 * permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice, this list of 10 * conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 13 * of conditions and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 19 * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 22 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 #ifndef _SLJIT_CONFIG_H_ 28 #define _SLJIT_CONFIG_H_ 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /* --------------------------------------------------------------------- */ 35 /* Custom defines */ 36 /* --------------------------------------------------------------------- */ 37 38 /* Put your custom defines here. This empty section will never change 39 which helps maintaining patches (with diff / patch utilities). */ 40 41 /* --------------------------------------------------------------------- */ 42 /* Architecture */ 43 /* --------------------------------------------------------------------- */ 44 45 /* Architecture selection. */ 46 /* #define SLJIT_CONFIG_X86_32 1 */ 47 /* #define SLJIT_CONFIG_X86_64 1 */ 48 /* #define SLJIT_CONFIG_ARM_V5 1 */ 49 /* #define SLJIT_CONFIG_ARM_V7 1 */ 50 /* #define SLJIT_CONFIG_ARM_THUMB2 1 */ 51 /* #define SLJIT_CONFIG_ARM_64 1 */ 52 /* #define SLJIT_CONFIG_PPC_32 1 */ 53 /* #define SLJIT_CONFIG_PPC_64 1 */ 54 /* #define SLJIT_CONFIG_MIPS_32 1 */ 55 /* #define SLJIT_CONFIG_MIPS_64 1 */ 56 /* #define SLJIT_CONFIG_SPARC_32 1 */ 57 /* #define SLJIT_CONFIG_TILEGX 1 */ 58 59 /* #define SLJIT_CONFIG_AUTO 1 */ 60 /* #define SLJIT_CONFIG_UNSUPPORTED 1 */ 61 62 /* --------------------------------------------------------------------- */ 63 /* Utilities */ 64 /* --------------------------------------------------------------------- */ 65 66 /* Useful for thread-safe compiling of global functions. */ 67 #ifndef SLJIT_UTIL_GLOBAL_LOCK 68 /* Enabled by default */ 69 #define SLJIT_UTIL_GLOBAL_LOCK 1 70 #endif 71 72 /* Implements a stack like data structure (by using mmap / VirtualAlloc */ 73 /* or a custom allocator). */ 74 #ifndef SLJIT_UTIL_STACK 75 /* Enabled by default */ 76 #define SLJIT_UTIL_STACK 1 77 #endif 78 79 /* Uses user provided allocator to allocate the stack (see SLJIT_UTIL_STACK) */ 80 #ifndef SLJIT_UTIL_SIMPLE_STACK_ALLOCATION 81 /* Disabled by default */ 82 #define SLJIT_UTIL_SIMPLE_STACK_ALLOCATION 0 83 #endif 84 85 /* Single threaded application. Does not require any locks. */ 86 #ifndef SLJIT_SINGLE_THREADED 87 /* Disabled by default. */ 88 #define SLJIT_SINGLE_THREADED 0 89 #endif 90 91 /* --------------------------------------------------------------------- */ 92 /* Configuration */ 93 /* --------------------------------------------------------------------- */ 94 95 /* If SLJIT_STD_MACROS_DEFINED is not defined, the application should 96 define SLJIT_MALLOC, SLJIT_FREE, SLJIT_MEMCPY, and NULL. */ 97 #ifndef SLJIT_STD_MACROS_DEFINED 98 /* Disabled by default. */ 99 #define SLJIT_STD_MACROS_DEFINED 0 100 #endif 101 102 /* Executable code allocation: 103 If SLJIT_EXECUTABLE_ALLOCATOR is not defined, the application should 104 define SLJIT_MALLOC_EXEC, SLJIT_FREE_EXEC, and SLJIT_EXEC_OFFSET. */ 105 #ifndef SLJIT_EXECUTABLE_ALLOCATOR 106 /* Enabled by default. */ 107 #define SLJIT_EXECUTABLE_ALLOCATOR 1 108 109 /* When SLJIT_PROT_EXECUTABLE_ALLOCATOR is enabled SLJIT uses 110 an allocator which does not set writable and executable 111 permission flags at the same time. The trade-of is increased 112 memory consumption and disabled dynamic code modifications. */ 113 #ifndef SLJIT_PROT_EXECUTABLE_ALLOCATOR 114 /* Disabled by default. */ 115 #define SLJIT_PROT_EXECUTABLE_ALLOCATOR 0 116 #endif 117 118 #endif 119 120 /* Force cdecl calling convention even if a better calling 121 convention (e.g. fastcall) is supported by the C compiler. 122 If this option is disabled (this is the default), functions 123 called from JIT should be defined with SLJIT_FUNC attribute. 124 Standard C functions can still be called by using the 125 SLJIT_CALL_CDECL jump type. */ 126 #ifndef SLJIT_USE_CDECL_CALLING_CONVENTION 127 /* Disabled by default */ 128 #define SLJIT_USE_CDECL_CALLING_CONVENTION 0 129 #endif 130 131 /* Return with error when an invalid argument is passed. */ 132 #ifndef SLJIT_ARGUMENT_CHECKS 133 /* Disabled by default */ 134 #define SLJIT_ARGUMENT_CHECKS 0 135 #endif 136 137 /* Debug checks (assertions, etc.). */ 138 #ifndef SLJIT_DEBUG 139 /* Enabled by default */ 140 #define SLJIT_DEBUG 1 141 #endif 142 143 /* Verbose operations. */ 144 #ifndef SLJIT_VERBOSE 145 /* Enabled by default */ 146 #define SLJIT_VERBOSE 1 147 #endif 148 149 /* 150 SLJIT_IS_FPU_AVAILABLE 151 The availability of the FPU can be controlled by SLJIT_IS_FPU_AVAILABLE. 152 zero value - FPU is NOT present. 153 nonzero value - FPU is present. 154 */ 155 156 /* For further configurations, see the beginning of sljitConfigInternal.h */ 157 158 #ifdef __cplusplus 159 } /* extern "C" */ 160 #endif 161 162 #endif 163