Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision 722c0848fd67feb35c28b6a159777986ca180e6d)
+++ libcfa/src/concurrency/invoke.h	(revision 21184e35c95906b4f4b5d8d24b90d618f3381310)
@@ -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 722c0848fd67feb35c28b6a159777986ca180e6d)
+++ libcfa/src/concurrency/kernel.cfa	(revision 21184e35c95906b4f4b5d8d24b90d618f3381310)
@@ -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 ^= rdtsc();
+
 	processor * this = runner.proc;
 	verify(this);
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 722c0848fd67feb35c28b6a159777986ca180e6d)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 21184e35c95906b4f4b5d8d24b90d618f3381310)
@@ -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 );
