summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authormarcus <marcus>2004-03-18 02:54:43 +0000
committermarcus <marcus>2004-03-18 02:54:43 +0000
commita0e6b2f856703e0775fb5eaa64243649423d4503 (patch)
tree5bfe8e7681f4092e4f611443680066b9ea14f840 /libpthread
parent7287321326eeda04e909c844aa01668c03418f8d (diff)
2004-03-17 Marcus Brinkmann <marcus@gnu.org>
* sysdeps/l4/pt-thread-start.c (__pthread_thread_start): Use L4 convenience interface.
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/ChangeLog3
-rw-r--r--libpthread/sysdeps/l4/pt-thread-start.c12
2 files changed, 6 insertions, 9 deletions
diff --git a/libpthread/ChangeLog b/libpthread/ChangeLog
index 185daee..63b877b 100644
--- a/libpthread/ChangeLog
+++ b/libpthread/ChangeLog
@@ -1,5 +1,8 @@
2004-03-17 Marcus Brinkmann <marcus@gnu.org>
+ * sysdeps/l4/pt-thread-start.c (__pthread_thread_start): Use L4
+ convenience interface.
+
* sysdeps/l4/pt-spin.c (_pthread_spin_lock): Implement using new
time period interface.
diff --git a/libpthread/sysdeps/l4/pt-thread-start.c b/libpthread/sysdeps/l4/pt-thread-start.c
index 3677070..72c4d30 100644
--- a/libpthread/sysdeps/l4/pt-thread-start.c
+++ b/libpthread/sysdeps/l4/pt-thread-start.c
@@ -32,15 +32,9 @@ __pthread_thread_start (struct __pthread *thread)
assert (__pthread_total == 1);
else
{
- l4_thread_id_t dest = thread->threadid;
- l4_word_t control = (L4_XCHG_REGS_SET_HALT | L4_XCHG_REGS_SET_SP
- | L4_XCHG_REGS_SET_IP | L4_XCHG_REGS_SET_PAGER);
- l4_word_t sp = (l4_word_t) thread->mcontext.sp;
- l4_word_t ip = (l4_word_t) thread->mcontext.pc;
- l4_word_t dummy = 0;
- l4_thread_id_t pager = l4_pager ();
-
- l4_exchange_registers (&dest, &control, &sp, &ip, &dummy, &dummy, &pager);
+ l4_set_pager_of (thread->threadid, l4_pager ());
+ l4_start_sp_ip (thread->threadid, (l4_word_t) thread->mcontext.sp,
+ (l4_word_t) thread->mcontext.pc);
}
return 0;
}