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