--- hurd-l4/README.orig 2005-01-31 17:26:44.000000000 +0100 +++ hurd-l4/README 2005-03-26 00:11:11.594983848 +0100 @@ -110,7 +110,7 @@ retrieving revision 1.57.4.6 diff -u -r1.57.4.6 ipc.cc --- pistachio/kernel/src/api/v4/ipc.cc 3 Jun 2004 13:58:57 -0000 1.57.4.6 +++ pistachio/kernel/src/api/v4/ipc.cc 23 Oct 2004 00:33:45 -0000 -@@ -292,6 +292,9 @@ +@@ -318,6 +318,9 @@ && (current->get_space() == virt_sender->get_space() || current->get_space() == to_tcb->get_space())) { @@ -120,32 +120,27 @@ diff -u -r1.57.4.6 ipc.cc sender_id = current->get_virtual_sender(); } else -@@ -313,7 +316,7 @@ - // optimized for receive and wait any - if (EXPECT_FALSE( - (!to_tcb->get_state().is_waiting()) || -- ( to_tcb->get_partner() != sender_id && -+ ( to_tcb->get_partner() != current->get_global_id() && - !to_tcb->get_partner().is_anythread() && - !( to_tcb->get_partner().is_anylocalthread() && - to_tcb->get_space() == current->get_space() ) ) )) -@@ -517,9 +520,24 @@ SYS_IPC (threadid_t to_tid, threadid_t f - } - } - else -- { /* anylocal */ --#warning wait_local incorrect -- from_tcb = current->send_head; -+ { -+ /* anylocal */ -+ -+ tcb_t *head = current->send_head; -+ from_tcb = NULL; -+ -+ if (head) -+ { -+ tcb_t *tcb = head; -+ +@@ -339,7 +342,7 @@ + if (EXPECT_FALSE( + (!to_tcb->get_state().is_waiting()) || + ( // Not waiting for sender (may be virtual sender)? +- to_tcb->get_partner() != sender_id && ++ to_tcb->get_partner() != current->get_global_id() && + // Not open wait? + !to_tcb->get_partner().is_anythread() && + // Not open local wait? +@@ -559,14 +561,13 @@ SYS_IPC (threadid_t to_tid, threadid_t f + { + tcb_t *tcb = head; + +- do { +- if (tcb->get_space () == current->get_space ()) +- { +- from_tcb = tcb; +- break; +- } +- tcb = tcb->send_list.next; +- } while (tcb != head); + do + { + if (tcb->get_space () == current->get_space ()) @@ -153,10 +148,9 @@ diff -u -r1.57.4.6 ipc.cc + tcb = tcb->send_list.next; + } + while (!from_tcb && tcb != head); -+ } - } - - TRACE_IPC("receive phase curr=%t, from=%t\n", current, from_tcb); + } + } + The following patch adds support for the ELF TLS ABI to @@ -384,7 +378,7 @@ diff -rupN pistachio/kernel/src/glue/v4- + ctors.cc smp.cc trampoline.S gs0.cc) SOURCES+= src/generic/linear_ptab_walker.cc \ - src/generic/mapping_alloc.cc \ + src/generic/mapping_alloc.cc diff -rupN pistachio/kernel/src/glue/v4-ia32/space.cc pistachio/kernel/src/glue/v4-ia32/space.cc --- pistachio/kernel/src/glue/v4-ia32/space.cc 2005-01-22 01:45:49.000000000 +0100 +++ pistachio/kernel/src/glue/v4-ia32/space.cc 2005-01-22 02:14:14.000000000 +0100