Stop passing uthread to __uthread_yield()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 14 Mar 2011 21:58:46 +0000 (14:58 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:00 +0000 (17:36 -0700)
No need to, and there's a chance of it fucking around with stacks before
we fully get in vcore context.

user/parlib/Makefile
user/parlib/uthread.c

index 2a5f819..183cb05 100644 (file)
@@ -1,5 +1,5 @@
 TARGET_ARCH ?= i686
-CFLAGS = -O2 -std=gnu99 -static -fomit-frame-pointer 
+CFLAGS = -O2 -std=gnu99 -static -fomit-frame-pointer -g
 LIBNAME = parlib
 V ?= @
 
index 29c4240..fcdd277 100644 (file)
@@ -125,8 +125,9 @@ void uthread_runnable(struct uthread *uthread)
  * stack pointer before calling it, and don't want the compiler to play games
  * with my hart. */
 static void __attribute__((noinline, noreturn)) 
-__uthread_yield(struct uthread *uthread)
+__uthread_yield(void)
 {
+       struct uthread *uthread = current_uthread;
        assert(in_vcore_context());
        assert(uthread->state == UT_RUNNING);
        assert(uthread == current_uthread);
@@ -211,7 +212,7 @@ void uthread_yield(void)
         * walk up the stack a bit when calling a noreturn function. */
        set_stack_pointer((void*)vcpd->transition_stack);
        /* Finish exiting in another function. */
-       __uthread_yield(current_uthread);
+       __uthread_yield();
        /* Should never get here */
        assert(0);
        /* Will jump here when the uthread's trapframe is restarted/popped. */