--- SheepShaver/src/Unix/configure.in 2003/11/24 23:39:35 1.9 +++ SheepShaver/src/Unix/configure.in 2003/11/27 11:09:38 1.11 @@ -544,9 +544,6 @@ AC_CACHE_CHECK([whether the compiler can ]) ELF_OBJECTS=$ac_cv_elf_objects -dnl FIXME: forcibly disable JIT for now -WANT_JIT=no - dnl CPU emulator sources if [[ "x$EMULATED_PPC" = "xyes" ]]; then CPUSRCS="\ @@ -577,7 +574,7 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then ]) if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then case $host_cpu in - i?86:yes) + i?86) DYNGEN_OP_FLAGS="-fomit-frame-pointer -mpreferred-stack-boundary=2" if [[ "x$HAVE_GCC30" = "xyes" ]]; then DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0" @@ -606,6 +603,29 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then fi CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp" fi +if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then + AC_CACHE_CHECK([whether static data regions are executable], + ac_cv_have_static_data_exec, [ + AC_TRY_RUN([int main(void) { +#if defined(__powerpc__) + static unsigned int p[8] = {0x4e800020,}; + asm volatile("dcbst 0,%0" : : "r" (p) : "memory"); + asm volatile("sync" : : : "memory"); + asm volatile("icbi 0,%0" : : "r" (p) : "memory"); + asm volatile("sync" : : : "memory"); + asm volatile("isync" : : : "memory"); + ((void (*)(void))p)(); + return 0; +#endif + return 1; + }], ac_cv_have_static_data_exec=yes, ac_cv_have_static_data_exec=no, + dnl When cross-compiling, do not assume anything. + ac_cv_have_static_data_exec=no + ) + ]) +fi +AC_TRANSLATE_DEFINE(HAVE_STATIC_DATA_EXEC, "$ac_cv_have_static_data_exec", + [Define if your system marks static data pages as executable.]) dnl Generate Makefile. AC_SUBST(DYNGENSRCS)