From: Aleksey Demakov Date: Mon, 25 Sep 2006 06:56:36 +0000 (+0000) Subject: add jit-arch-generic.h and jit-arch-x86.h files X-Git-Tag: before.move.to.git~188 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=14d5ac22496136be755b127d1209da645997965e;p=francis%2Flibjit.git add jit-arch-generic.h and jit-arch-x86.h files --- diff --git a/include/jit/jit-arch-generic.h b/include/jit/jit-arch-generic.h new file mode 100644 index 0000000..9bc45a9 --- /dev/null +++ b/include/jit/jit-arch-generic.h @@ -0,0 +1,30 @@ +/* + * jit-arch-generic.h - Architecture-specific definitions. + * + * Copyright (C) 2006 Southern Storm Software, Pty Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _JIT_ARCH_GENERIC_H +#define _JIT_ARCH_GENERIC_H + +/* + * If defined _JIT_ARCH_GET_CURRENT_FRAME() macro assigns the current frame + * pointer to the supplied argument that has to be a void pointer. + */ +#undef _JIT_ARCH_GET_CURRENT_FRAME + +#endif /* _JIT_ARCH_GENERIC_H */ diff --git a/include/jit/jit-arch-x86.h b/include/jit/jit-arch-x86.h new file mode 100644 index 0000000..aa2b34d --- /dev/null +++ b/include/jit/jit-arch-x86.h @@ -0,0 +1,43 @@ +/* + * jit-arch-x86.h - Architecture-specific definitions. + * + * Copyright (C) 2006 Southern Storm Software, Pty Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _JIT_ARCH_X86_H +#define _JIT_ARCH_X86_H + +/* + * If defined _JIT_ARCH_GET_CURRENT_FRAME() macro assigns the current frame + * pointer to the supplied argument that has to be a void pointer. + */ +#if defined(__GNUC__) +#define _JIT_ARCH_GET_CURRENT_FRAME(f) \ + asm("movl %%ebp, %0" : "=g" (f)) +#elif defined(_MSC_VER) && defined(_M_IX86) +#define _JIT_ARCH_GET_CURRENT_FRAME(f) \ + do { \ + __asm \ + { \ + mov dword ptr f, ebp \ + } \ + } while(0) +#else +#undef _JIT_ARCH_GET_CURRENT_FRAME +#endif + +#endif /* _JIT_ARCH_X86_H */