From: Thiemo S. <th...@us...> - 2007-08-19 23:34:41
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv20706/src/runtime Modified Files: mips-arch.c mips-assem.S Log Message: 1.0.8.35: Fix MIPS foreign_function_call_active handling. Index: mips-arch.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/mips-arch.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- mips-arch.c 25 Jul 2007 22:08:03 -0000 1.30 +++ mips-arch.c 19 Aug 2007 23:34:37 -0000 1.31 @@ -264,18 +264,7 @@ boolean arch_pseudo_atomic_atomic(os_context_t *context) { - /* FIXME: this foreign_function_call_active test is dubious at - * best. If a foreign call is made in a pseudo atomic section - * (?) or more likely a pseudo atomic section is in a foreign - * call then an interrupt is executed immediately. Maybe it - * has to do with C code not maintaining pseudo atomic - * properly. MG - 2005-08-10 - * - * The foreign_function_call_active used to live at each call-site - * to arch_pseudo_atomic_atomic, but this seems clearer. - * --NS 2007-05-15 */ - return (!foreign_function_call_active) - && os_context_register(context, reg_ALLOC) & 1; + return os_context_register(context, reg_ALLOC) & 1; } void Index: mips-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/mips-assem.S,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- mips-assem.S 5 Dec 2006 15:46:18 -0000 1.17 +++ mips-assem.S 19 Aug 2007 23:34:37 -0000 1.18 @@ -192,14 +192,14 @@ /* Nested lisp -> C calls may have clobbered gp. */ lw gp, framesize-16(sp) + /* Mark us as in C land. */ + sw reg_CSP, foreign_function_call_active + /* Set the pseudo-atomic flag. */ li reg_NL4, 0 addu reg_ALLOC, 1 .set reorder - /* Mark us as in C land. */ - sw reg_CSP, foreign_function_call_active - /* Save LISP state. */ subu reg_NL0, reg_ALLOC, 1 sw reg_NL0, dynamic_space_free_pointer @@ -262,15 +262,15 @@ move reg_CFP, reg_CSP addu reg_CSP, reg_CFP, 32 + /* Mark us as in C land. */ + sw reg_CSP, foreign_function_call_active + /* Set the pseudo-atomic flag. */ .set noreorder li reg_NL4, 0 addu reg_ALLOC, 1 .set reorder - /* Mark us as in C land. */ - sw reg_CSP, foreign_function_call_active - /* Convert the return address to an offset and save it on the stack. */ subu reg_NFP, reg_LIP, reg_CODE addu reg_NFP, OTHER_POINTER_LOWTAG |