0.8.6.28:
[sbcl.git] / src / runtime / mips-linux-os.c
index f92a232..2f4a0da 100644 (file)
 #include <asm/mipsregs.h>
 size_t os_vm_page_size;
 
+#ifdef LISP_FEATURE_SB_THREAD
+#error "Define threading support functions"
+#else
+int arch_os_thread_init(struct thread *thread) {
+    return 1;                  /* success */
+}
+int arch_os_thread_cleanup(struct thread *thread) {
+    return 1;                  /* success */
+}
+#endif
 
 os_context_register_t *
 os_context_register_addr(os_context_t *context, int offset)
@@ -83,8 +93,17 @@ os_context_bd_cause(os_context_t *context)
 {
     /* We need to see if whatever happened, happened because of a
        branch delay event */
-    return (((struct sigcontext *) &(context->uc_mcontext))->sc_cause 
-           & CAUSEF_BD);
+    /* FIXME: However, I'm not convinced that the values that Linux
+       puts in this slot are actually right; specifically, attempting
+       to compile sbcl with sbcl-0.7.7.7 lead to an "infinite SIGTRAP
+       loop" where a (BREAK 16) not in a branch delay slot would have
+       CAUSEF_BD filled. So, we comment
+
+        return (((struct sigcontext *) &(context->uc_mcontext))->sc_cause 
+               & CAUSEF_BD);
+
+       out and return 0 always.  -- CSR, 2002-09-02 */
+    return 0;
 }
 
 void