Index: generic/src/time/clock.c
===================================================================
--- generic/src/time/clock.c	(revision d6e5cbc6f5fd409a91c10cc64f7841774bcf8b94)
+++ generic/src/time/clock.c	(revision 12fdd28585b2ba4f5b93eb59aac420a9be27d2de)
@@ -54,7 +54,7 @@
 /* Pointers to public variables with time */
 struct ptime {
-	__native seconds;
+	__native seconds1;
 	__native useconds;
-	__native useconds2;
+	__native seconds2;
 };
 struct ptime *public_time;
@@ -83,5 +83,6 @@
 
         /* TODO: We would need some arch dependent settings here */
-	public_time->seconds = 0;
+	public_time->seconds1 = 0;
+	public_time->seconds2 = 0;
 	public_time->useconds = 0; 
 
@@ -100,13 +101,12 @@
 		secfrag += 1000000/HZ;
 		if (secfrag >= 1000000) {
-			public_time->useconds = 0;
+			secfrag -= 1000000;
+			public_time->seconds1++;
 			write_barrier();
-			public_time->seconds++;
-			secfrag = 0;
+			public_time->useconds = secfrag;
+			write_barrier();
+			public_time->seconds2 = public_time->seconds1;
 		} else
 			public_time->useconds += 1000000/HZ;
-		write_barrier();
-		public_time->useconds2 = public_time->useconds;
-		write_barrier();
 	}
 }
