Index: generic/include/print.h
===================================================================
--- generic/include/print.h	(revision a6cb8cb97c5c7102783c146df88c9c7cb21b82c6)
+++ generic/include/print.h	(revision fd8302d82c4f46789dd4c951470231d1218d0db9)
@@ -39,6 +39,4 @@
 #define EOF (-1)
 
-extern int puts(const char * str);
-
 extern int printf(const char *fmt, ...);
 extern int sprintf(char *str, const char *fmt, ...);
Index: generic/src/time/clock.c
===================================================================
--- generic/src/time/clock.c	(revision a6cb8cb97c5c7102783c146df88c9c7cb21b82c6)
+++ generic/src/time/clock.c	(revision fd8302d82c4f46789dd4c951470231d1218d0db9)
@@ -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();
 	}
 }
