From: Juho S. <js...@us...> - 2009-03-22 22:35:08
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv16718/src/runtime Modified Files: sparc-sunos-os.h sunos-os.c sunos-os.h x86-64-arch.c x86-64-assem.S x86-sunos-os.h Added Files: Config.x86-64-sunos x86-64-sunos-os.c x86-64-sunos-os.h Log Message: 1.0.26.18: Solaris x86-64 support * Patch by Alex Viskovatoff --- NEW FILE: Config.x86-64-sunos --- CC=gcc CFLAGS = -m64 -g -O2 -Wall -D__EXTENSIONS__ -D_POSIX_C_SOURCE=199506L -DSVR4 -D_REENTRANT -fno-omit-frame-pointer ASFLAGS = -m64 -Wall LD = ld LINKFLAGS = -m64 -g NM = nm -xgp GREP = ggrep #CC=/opt/SunStudioExpress/bin/cc #CFLAGS = -xarch=generic64 -g -O2 -Wall -D__EXTENSIONS__ -D_POSIX_C_SOURCE=199506L -DSVR4 -D_REENTRANT -fno-omit-frame-pointer #ASFLAGS = -xarch=generic64 -Wall ASSEM_SRC = x86-64-assem.S ldso-stubs.S ARCH_SRC = x86-64-arch.c OS_SRC = sunos-os.c x86-64-sunos-os.c os-common.c OS_LIBS= -ldl -lsocket -lnsl -lrt GC_SRC= gencgc.c # Nothing to do for after-grovel-headers. .PHONY: after-grovel-headers after-grovel-headers: --- NEW FILE: x86-64-sunos-os.c --- #include <stdio.h> #include <sys/param.h> #include <sys/file.h> #include "sbcl.h" #include "./signal.h" #include "os.h" #include "arch.h" #include "globals.h" #include "interrupt.h" #include "interr.h" #include "lispregs.h" #include <sys/socket.h> #include <sys/utsname.h> #include <sys/types.h> #include <signal.h> #include <sys/time.h> #include <sys/stat.h> #include <unistd.h> #ifdef LISP_FEATURE_SB_THREAD #error "Threading is not supported for Solaris running on x86-64." #endif #include "validate.h" int arch_os_thread_init(struct thread *thread) { stack_t sigstack; return 1; } int arch_os_thread_cleanup(struct thread *thread) { return 1; } os_context_register_t * os_context_register_addr(os_context_t *context, int offset) { #define RCASE(name) case reg_ ## name: return &context->uc_mcontext.gregs[REG_ ## name]; switch(offset) { RCASE(RAX) RCASE(RCX) RCASE(RDX) RCASE(RBX) RCASE(RSP) RCASE(RBP) RCASE(RSI) RCASE(RDI) RCASE(R8) RCASE(R9) RCASE(R10) RCASE(R11) RCASE(R12) RCASE(R13) RCASE(R14) RCASE(R15) default: if(offset<NGREG) return &context->uc_mcontext.gregs[offset/2+4]; else return 0; } return &context->uc_mcontext.gregs[offset]; } os_context_register_t * os_context_pc_addr(os_context_t *context) { return &context->uc_mcontext.gregs[REG_RIP]; } os_context_register_t * os_context_sp_addr(os_context_t *context) { return &context->uc_mcontext.gregs[REG_RSP]; } sigset_t * os_context_sigmask_addr(os_context_t *context) { return &(context->uc_sigmask); } void os_flush_icache(os_vm_address_t address, os_vm_size_t length) { } unsigned long os_context_fp_control(os_context_t *context) { return context->uc_mcontext.fpregs.fp_reg_set.fpchip_state.cw; } --- NEW FILE: x86-64-sunos-os.h --- #ifndef _X86_64_SOLARIS_OS_H #define _X86_64_SOLARIS_OS_H typedef struct ucontext os_context_t; typedef long os_context_register_t; static inline os_context_t *arch_os_get_context(void **void_context) { return (os_context_t *) *void_context; } #endif /* _X86_64_SOLARIS_OS_H */ Index: sparc-sunos-os.h =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/sparc-sunos-os.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- sparc-sunos-os.h 25 Jul 2007 21:37:31 -0000 1.3 +++ sparc-sunos-os.h 22 Mar 2009 22:34:58 -0000 1.4 @@ -2,6 +2,7 @@ #define _SPARC_SOLARIS_OS_H typedef ucontext_t os_context_t; +typedef int os_context_register_t ; static inline os_context_t *arch_os_get_context(void **void_context) { Index: sunos-os.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/sunos-os.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- sunos-os.c 16 Feb 2009 22:30:25 -0000 1.27 +++ sunos-os.c 22 Mar 2009 22:34:58 -0000 1.28 @@ -28,7 +28,7 @@ #if defined LISP_FEATURE_SPARC #define OS_VM_DEFAULT_PAGESIZE 8192 -#elif defined LISP_FEATURE_X86 +#elif defined LISP_FEATURE_X86 || defined LISP_FEATURE_X86_64 #define OS_VM_DEFAULT_PAGESIZE 4096 #else #error "Don't know OS_VM_DEFAULT_PAGESIZE" Index: sunos-os.h =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/sunos-os.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- sunos-os.h 17 Mar 2009 11:27:08 -0000 1.8 +++ sunos-os.h 22 Mar 2009 22:34:58 -0000 1.9 @@ -33,7 +33,3 @@ #define SIG_MEMORY_FAULT SIGSEGV #define SIG_STOP_FOR_GC (SIGUSR2) - -/* Yaargh?! */ -typedef int os_context_register_t ; - Index: x86-64-arch.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-arch.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- x86-64-arch.c 22 Mar 2009 20:07:50 -0000 1.28 +++ x86-64-arch.c 22 Mar 2009 22:34:58 -0000 1.29 @@ -54,7 +54,7 @@ os_context_register_t * context_eflags_addr(os_context_t *context) { -#if defined __linux__ +#if defined __linux__ || defined __sun /* KLUDGE: As of kernel 2.2.14 on Red Hat 6.2, there's code in the * <sys/ucontext.h> file to define symbolic names for offsets into * gregs[], but it's conditional on __USE_GNU and not defined, so Index: x86-64-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-assem.S,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- x86-64-assem.S 22 Mar 2009 20:07:51 -0000 1.23 +++ x86-64-assem.S 22 Mar 2009 22:34:58 -0000 1.24 @@ -25,7 +25,7 @@ #include "genesis/thread.h" /* Minimize conditionalization for different OS naming schemes. */ -#if defined __linux__ || defined __FreeBSD__ || defined __OpenBSD__ +#if defined __linux__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __sun #define GNAME(var) var #else #define GNAME(var) _##var @@ -33,7 +33,7 @@ /* Get the right type of alignment. Linux, FreeBSD and OpenBSD * want alignment in bytes. */ -#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun) #define align_4byte 4 #define align_8byte 8 #define align_16byte 16 Index: x86-sunos-os.h =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-sunos-os.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- x86-sunos-os.h 25 Jul 2007 21:37:31 -0000 1.2 +++ x86-sunos-os.h 22 Mar 2009 22:34:58 -0000 1.3 @@ -2,6 +2,7 @@ #define _X86_SOLARIS_OS_H typedef ucontext_t os_context_t; +typedef int os_context_register_t; static inline os_context_t *arch_os_get_context(void **void_context) { |