diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index eb817653f..a4f60ac65 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,11 @@
+2006-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+	* libc/include/sys/time.h (struct timeval): Change member types
+	according to SUSv3.
+	* libc/include/sys/types.h (useconds_t): Change to unsigned
+	according to SUSv3.
+	(suseconds_t): Define type.
+
 2006-02-13  Jeff Johnston  <jjohnstn@redhat.com>
 	    David Carne  <davidcarne@gmail.com>
 
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
index 346747aec..df3164941 100644
--- a/newlib/libc/include/sys/time.h
+++ b/newlib/libc/include/sys/time.h
@@ -14,8 +14,8 @@ extern "C" {
 
 #ifndef _WINSOCK_H
 struct timeval {
-  long tv_sec;
-  long tv_usec;
+  time_t      tv_sec;
+  suseconds_t tv_usec;
 };
 
 struct timezone {
diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h
index d03de7bfa..bf08616ab 100644
--- a/newlib/libc/include/sys/types.h
+++ b/newlib/libc/include/sys/types.h
@@ -262,7 +262,8 @@ typedef _TIMER_T_ timer_t;
 #define __timer_t_defined
 #endif
 
-typedef long useconds_t;
+typedef unsigned long useconds_t;
+typedef long suseconds_t;
 
 #include <sys/features.h>