1 /* 2 * Stack-less Just-In-Time compiler 3 * 4 * Copyright 2009-2012 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 /* --------------------------------------------------------------------- */ 31 /* Custom defines */ 32 /* --------------------------------------------------------------------- */ 33 34 /* Put your custom defines here. This empty section will never change 35 which helps maintaining patches (with diff / patch utilities). */ 36 37 /* --------------------------------------------------------------------- */ 38 /* Architecture */ 39 /* --------------------------------------------------------------------- */ 40 41 /* Architecture selection. */ 42 /* #define SLJIT_CONFIG_X86_32 1 */ 43 /* #define SLJIT_CONFIG_X86_64 1 */ 44 /* #define SLJIT_CONFIG_ARM_V5 1 */ 45 /* #define SLJIT_CONFIG_ARM_V7 1 */ 46 /* #define SLJIT_CONFIG_ARM_THUMB2 1 */ 47 /* #define SLJIT_CONFIG_PPC_32 1 */ 48 /* #define SLJIT_CONFIG_PPC_64 1 */ 49 /* #define SLJIT_CONFIG_MIPS_32 1 */ 50 /* #define SLJIT_CONFIG_SPARC_32 1 */ 51 52 /* #define SLJIT_CONFIG_AUTO 1 */ 53 /* #define SLJIT_CONFIG_UNSUPPORTED 1 */ 54 55 #include <machine/sljitarch.h> 56 57 #if defined(_KERNEL) && !defined(SLJIT_MALLOC) 58 #define SLJIT_MALLOC(size) malloc((size), M_TEMP, M_WAITOK) 59 #endif 60 61 #if defined(_KERNEL) && !defined(SLJIT_FREE) 62 #define SLJIT_FREE(ptr) free((ptr), M_TEMP) 63 #endif 64 65 #if defined(_KERNEL) && !defined(SLJIT_CACHE_FLUSH) 66 #error "SLJIT_CACHE_FLUSH must be defined." 67 #endif 68 69 70 #ifdef _KERNEL 71 72 #ifdef DIAGNOSTIC 73 #define SLJIT_DEBUG 1 74 #else 75 #define SLJIT_DEBUG 0 76 #endif 77 78 #define SLJIT_ASSERT(x) KASSERT(x) 79 #define SLJIT_ASSERT_STOP() \ 80 panic("Should never been reached " __FILE__ ":%d\n", __LINE__) 81 #endif 82 83 #ifdef _KERNEL 84 #define SLJIT_VERBOSE 0 85 #endif 86 87 #ifdef _KERNEL 88 #include <sys/cdefs.h> 89 #include <sys/malloc.h> 90 #include <sys/param.h> 91 #endif 92 93 /* --------------------------------------------------------------------- */ 94 /* Utilities */ 95 /* --------------------------------------------------------------------- */ 96 97 /* Useful for thread-safe compiling of global functions. */ 98 #ifndef SLJIT_UTIL_GLOBAL_LOCK 99 /* Enabled by default */ 100 #define SLJIT_UTIL_GLOBAL_LOCK 1 101 #endif 102 103 /* Implements a stack like data structure (by using mmap / VirtualAlloc). */ 104 #ifndef SLJIT_UTIL_STACK 105 /* Enabled by default */ 106 #define SLJIT_UTIL_STACK 1 107 #endif 108 109 /* Single threaded application. Does not require any locks. */ 110 #ifndef SLJIT_SINGLE_THREADED 111 /* Disabled by default. */ 112 #define SLJIT_SINGLE_THREADED 0 113 #endif 114 115 /* --------------------------------------------------------------------- */ 116 /* Configuration */ 117 /* --------------------------------------------------------------------- */ 118 119 /* If SLJIT_STD_MACROS_DEFINED is not defined, the application should 120 define SLJIT_MALLOC, SLJIT_FREE, SLJIT_MEMMOVE, and NULL. */ 121 #ifndef SLJIT_STD_MACROS_DEFINED 122 /* Disabled by default. */ 123 #define SLJIT_STD_MACROS_DEFINED 0 124 #endif 125 126 /* Executable code allocation: 127 If SLJIT_EXECUTABLE_ALLOCATOR is not defined, the application should 128 define both SLJIT_MALLOC_EXEC and SLJIT_FREE_EXEC. */ 129 #ifndef SLJIT_EXECUTABLE_ALLOCATOR 130 /* Enabled by default. */ 131 #define SLJIT_EXECUTABLE_ALLOCATOR 1 132 #endif 133 134 /* Debug checks (assertions, etc.). */ 135 #ifndef SLJIT_DEBUG 136 /* Enabled by default */ 137 #define SLJIT_DEBUG 1 138 #endif 139 140 /* Verbose operations */ 141 #ifndef SLJIT_VERBOSE 142 /* Enabled by default */ 143 #define SLJIT_VERBOSE 1 144 #endif 145 146 /* See the beginning of sljitConfigInternal.h */ 147 148 #endif 149