Index: libcfa/src/bits/defs.hfa
===================================================================
--- libcfa/src/bits/defs.hfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
+++ libcfa/src/bits/defs.hfa	(revision 2909b515da780ffca5028f3b4173e37403df5629)
@@ -47,2 +47,8 @@
 #define OPTIONAL_THREAD __attribute__((weak))
 #endif
+
+static inline long long rdtscl(void) {
+    unsigned int lo, hi;
+    __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
+    return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
+}
Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
+++ libcfa/src/concurrency/invoke.h	(revision 2909b515da780ffca5028f3b4173e37403df5629)
@@ -46,5 +46,5 @@
 	#ifdef __cforall
 	extern "Cforall" {
-		extern thread_local struct KernelThreadData {
+		extern __attribute__((aligned(128))) thread_local struct KernelThreadData {
 			struct thread_desc    * volatile this_thread;
 			struct processor      * volatile this_processor;
@@ -55,4 +55,6 @@
 				volatile bool in_progress;
 			} preemption_state;
+
+			uint32_t rand_seed;
 		} kernelTLS __attribute__ ((tls_model ( "initial-exec" )));
 	}
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
+++ libcfa/src/concurrency/kernel.cfa	(revision 2909b515da780ffca5028f3b4173e37403df5629)
@@ -133,5 +133,6 @@
 	NULL,
 	NULL,
-	{ 1, false, false }
+	{ 1, false, false },
+	6u //this should be seeded better but due to a bug calling rdtsc doesn't work
 };
 
@@ -260,4 +261,8 @@
 //Main of the processor contexts
 void main(processorCtx_t & runner) {
+	// Because of a bug, we couldn't initialized the seed on construction
+	// Do it here
+	kernelTLS.rand_seed ^= rdtscl();
+
 	processor * this = runner.proc;
 	verify(this);
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 1c40091dd8229cabc50b16e4bc98e6bc658b7fac)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 2909b515da780ffca5028f3b4173e37403df5629)
@@ -101,4 +101,11 @@
 #define KERNEL_STORAGE(T,X) static char storage_##X[sizeof(T)]
 
+static inline uint32_t tls_rand() {
+	kernelTLS.rand_seed ^= kernelTLS.rand_seed << 6;
+	kernelTLS.rand_seed ^= kernelTLS.rand_seed >> 21;
+	kernelTLS.rand_seed ^= kernelTLS.rand_seed << 7;
+	return kernelTLS.rand_seed;
+}
+
 
 void doregister( struct cluster & cltr );
