made mhello work on sparc
authorAndrew Waterman <waterman@ros-dev.(none)>
Tue, 30 Mar 2010 08:19:42 +0000 (01:19 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:38 +0000 (17:35 -0700)
tests/mhello.c
user/parlib/pthread.c

index 3ca0803..416f3b0 100644 (file)
@@ -20,6 +20,8 @@ void udelay(uint64_t usec, uint64_t tsc_freq)
        return;
 }
 
+hart_barrier_t b;
+
 __thread int temp;
 
 int main(int argc, char** argv)
@@ -27,6 +29,8 @@ int main(int argc, char** argv)
        uint32_t vcoreid;
        int retval;
 
+       hart_barrier_init(&b,hart_max_harts()-1);
+
        if ((vcoreid = hart_self())) {
                printf("Should never see me! (from vcore %d)\n", vcoreid);
        } else { // core 0
@@ -35,11 +39,14 @@ int main(int argc, char** argv)
                       vcoreid, &temp, temp);
                printf("Multi-Goodbye, world, from PID: %d!\n", sys_getpid());
                //retval = sys_resource_req(RES_CORES, 2, 0);
-               retval = hart_request(2);
+               retval = hart_request(hart_max_harts()-2);
                //debug("retval = %d\n", retval);
        }
        printf("Vcore %d Done!\n", vcoreid);
-       while (1);
+
+       hart_barrier_wait(&b,hart_self());
+
+       printf("All Cores Done!\n", vcoreid);
        return 0;
 }
 
@@ -49,5 +56,6 @@ void hart_entry(void)
        temp = 0xcafebabe;
        printf("Hello from hart_entry in vcore %d with temp addr %p and temp %p\n",
               vcoreid, &temp, temp);
+       hart_barrier_wait(&b,hart_self());
        while(1);
 }
index d4989e6..e0a6bc4 100644 (file)
@@ -4,6 +4,7 @@
 #include <string.h>
 #include <assert.h>
 #include <stdio.h>
+#include <errno.h>
 
 int threads_active = 1;
 hart_lock_t work_queue_lock = HART_LOCK_INIT;