From: Juho S. <js...@us...> - 2009-03-22 20:07:58
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27116/src/runtime Modified Files: bsd-os.c x86-64-arch.c x86-64-assem.S x86-64-bsd-os.c Added Files: Config.x86-64-openbsd Log Message: 1.0.26.13: OpenBSD x86-64 support * Patch by Josh Elsasser --- NEW FILE: Config.x86-64-openbsd --- # -*- makefile -*- for the C-level run-time support for SBCL # This software is part of the SBCL system. See the README file for # more information. # # This software is derived from the CMU CL system, which was # written at Carnegie Mellon University and released into the # public domain. The software is in the public domain and is # provided with absolutely no warranty. See the COPYING and CREDITS # files for more information. include Config.x86-64-bsd ASSEM_SRC += ldso-stubs.S OS_LIBS += -lutil # XXX why do all the other Configs set LINKFLAGS instead of LDFLAGS? # LINKFLAGS is only used in src/runtime/GNUmakefile, this causes the # dladdr test in tools-for-build/ to fail. LINKFLAGS += -export-dynamic LDFLAGS += -export-dynamic Index: bsd-os.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/bsd-os.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- bsd-os.c 16 Feb 2009 22:30:25 -0000 1.61 +++ bsd-os.c 22 Mar 2009 20:07:50 -0000 1.62 @@ -484,12 +484,22 @@ void openbsd_init() { + /* + * Show a warning if it looks like the memory available after + * allocating the spaces won't be at least this much. + */ +#ifdef LISP_FEATURE_X86_64 + const int wantfree = 64 * 1024 * 1024; +#else + const int wantfree = 32 * 1024 * 1024; +#endif struct rlimit rl; /* OpenBSD, like NetBSD, counts mmap()ed space against the * process's data size limit. If the soft limit is lower than the * hard limit then try to yank it up, this lets users in the - * "staff" login class run sbcl with a default /etc/login.conf + * "staff" or "daemon" login classes run sbcl with larger dynamic + * space sizes. */ getrlimit (RLIMIT_DATA, &rl); if (rl.rlim_cur < rl.rlim_max) { @@ -503,18 +513,17 @@ } } - /* Display a (hopefully) helpful warning if it looks like we won't - * be able to allocate enough memory. In testing I found that on - * my system at least, a minimum of 25M on top of the three space - * sizes was needed to start SBCL. Show a warning below 32M so as - * to leave a little breathing room. + /* + * Display a (hopefully) helpful warning if it looks like we won't + * be able to allocate enough memory. */ getrlimit (RLIMIT_DATA, &rl); if (dynamic_space_size + READ_ONLY_SPACE_SIZE + STATIC_SPACE_SIZE + - LINKAGE_TABLE_SPACE_SIZE + (32*1024*1024) > rl.rlim_cur) + LINKAGE_TABLE_SPACE_SIZE + wantfree > rl.rlim_cur) fprintf (stderr, "RUNTIME WARNING: data size resource limit may be too low,\n" - " try decreasing the dynamic space size with --dynamic-space-size\n"); + " try decreasing the dynamic space size with --dynamic-space-size\n" + " or raising the datasize or datasize-max limits in /etc/login.conf\n"); } /* OpenBSD's dlsym() relies on the gcc bulitin Index: x86-64-arch.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-arch.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- x86-64-arch.c 16 Feb 2009 22:30:25 -0000 1.27 +++ x86-64-arch.c 22 Mar 2009 20:07:50 -0000 1.28 @@ -66,7 +66,7 @@ #elif defined LISP_FEATURE_DARWIN return CONTEXT_ADDR_FROM_STEM(rflags); #elif defined __OpenBSD__ - return &context->sc_eflags; + return &context->sc_rflags; #else #error unsupported OS #endif Index: x86-64-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-assem.S,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- x86-64-assem.S 16 Feb 2009 22:22:23 -0000 1.22 +++ x86-64-assem.S 22 Mar 2009 20:07:51 -0000 1.23 @@ -25,15 +25,15 @@ #include "genesis/thread.h" /* Minimize conditionalization for different OS naming schemes. */ -#if defined __linux__ || defined __FreeBSD__ /* (but *not* OpenBSD) */ +#if defined __linux__ || defined __FreeBSD__ || defined __OpenBSD__ #define GNAME(var) var #else #define GNAME(var) _##var #endif -/* Get the right type of alignment. Linux and FreeBSD (but not OpenBSD) +/* Get the right type of alignment. Linux, FreeBSD and OpenBSD * want alignment in bytes. */ -#if defined(__linux__) || defined(__FreeBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) #define align_4byte 4 #define align_8byte 8 #define align_16byte 16 Index: x86-64-bsd-os.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-bsd-os.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- x86-64-bsd-os.c 18 Sep 2007 06:43:42 -0000 1.3 +++ x86-64-bsd-os.c 22 Mar 2009 20:07:51 -0000 1.4 @@ -25,7 +25,7 @@ * entails; unfortunately, currently the situation is worse, not * better, than in the above paragraph. */ -#if defined(LISP_FEATURE_FREEBSD) || defined(LISP_FEATURE_DARWIN) +#if defined(LISP_FEATURE_FREEBSD) || defined(LISP_FEATURE_DARWIN) || defined(LISP_FEATURE_OPENBSD) os_context_register_t * os_context_register_addr(os_context_t *context, int offset) { |