diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index d93d73748..d9d365842 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,16 @@
+2007-07-06  Jeff Johnston  <jjohnstn@redhat.com>
+
+	* libc/include/sys/time.h (gettimeofday): Change to proper
+	prototype where second parameter is void *.
+	* libc/reent/gettimeofdayr.c (_gettimeofday_r): Change prototype
+	accordingly.
+	* libc/include/reent.h: Fix prototype for _gettimeofday_r.
+	* libc/sys/arm/syscalls.c: Fix gettimeofday function signature.
+	* libc/sys/rdos/gettod.c: Ditto.
+	* libc/sys/sh/syscalls.c: Ditto.
+	* libc/time/time.c (time): Change call to _gettimeofday_r
+	to pass NULL as 2nd argument.
+
 2007-07-06  Jeff Johnston  <jjohnstn@redhat.com>
 
 	* libc/sys/linux/intl/dcigettext.c: Define HAVE_STPCPY.
diff --git a/newlib/libc/include/reent.h b/newlib/libc/include/reent.h
index 00c2eb4b6..639789e71 100644
--- a/newlib/libc/include/reent.h
+++ b/newlib/libc/include/reent.h
@@ -80,7 +80,7 @@ extern int _wait_r _PARAMS ((struct _reent *, int *));
 extern _ssize_t _write_r _PARAMS ((struct _reent *, int, const void *, size_t));
 
 /* This one is not guaranteed to be available on all targets.  */
-extern int _gettimeofday_r _PARAMS ((struct _reent *, struct timeval *tp, struct timezone *tzp));
+extern int _gettimeofday_r _PARAMS ((struct _reent *, struct timeval *__tp, void *__tzp));
 
 #ifdef __LARGE64_FILES
 
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
index df3164941..26346056a 100644
--- a/newlib/libc/include/sys/time.h
+++ b/newlib/libc/include/sys/time.h
@@ -70,7 +70,7 @@ struct  itimerval {
   } while (0)
 #endif /* defined (__rtems__) || defined (__CYGWIN__) */
 
-int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
+int _EXFUN(gettimeofday, (struct timeval *__p, void *__tz));
 int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
 int _EXFUN(utimes, (const char *__path, const struct timeval *__tvp));
 int _EXFUN(getitimer, (int __which, struct itimerval *__value));
diff --git a/newlib/libc/reent/gettimeofdayr.c b/newlib/libc/reent/gettimeofdayr.c
index 64a8cda55..f5a49f73c 100644
--- a/newlib/libc/reent/gettimeofdayr.c
+++ b/newlib/libc/reent/gettimeofdayr.c
@@ -40,7 +40,7 @@ ANSI_SYNOPSIS
 	#include <time.h>
 	int _gettimeofday_r(struct _reent *<[ptr]>,
 		struct timeval *<[ptimeval]>,
-		struct timezone *<[ptimezone]>);
+		void *<[ptimezone]>);
 
 TRAD_SYNOPSIS
 	#include <reent.h>
@@ -48,7 +48,7 @@ TRAD_SYNOPSIS
 	int _gettimeofday_r(<[ptr]>, <[ptimeval]>, <[ptimezone]>)
 	struct _reent *<[ptr]>;
 	struct timeval *<[ptimeval]>;
-	struct timezone *<[ptimezone]>;
+	void *<[ptimezone]>;
 
 DESCRIPTION
 	This is a reentrant version of <<gettimeofday>>.  It
@@ -63,7 +63,7 @@ int
 _DEFUN (_gettimeofday_r, (ptr, ptimeval, ptimezone),
      struct _reent *ptr _AND
      struct timeval *ptimeval _AND
-     struct timezone *ptimezone)
+     void *ptimezone)
 {
   int ret;
 
diff --git a/newlib/libc/sys/arm/syscalls.c b/newlib/libc/sys/arm/syscalls.c
index 0e9cbc270..65c96b1e2 100644
--- a/newlib/libc/sys/arm/syscalls.c
+++ b/newlib/libc/sys/arm/syscalls.c
@@ -22,7 +22,7 @@ int     _system     _PARAMS ((const char *));
 int     _rename     _PARAMS ((const char *, const char *));
 int     isatty		_PARAMS ((int));
 clock_t _times		_PARAMS ((struct tms *));
-int     _gettimeofday	_PARAMS ((struct timeval *, struct timezone *));
+int     _gettimeofday	_PARAMS ((struct timeval *, void *));
 void    _raise 		_PARAMS ((void));
 int     _unlink		_PARAMS ((const char *));
 int     _link 		_PARAMS ((void));
@@ -559,9 +559,9 @@ _raise (void)
 }
 
 int
-_gettimeofday (struct timeval * tp, struct timezone * tzp)
+_gettimeofday (struct timeval * tp, void * tzvp)
 {
-
+  struct timezone *tzp = tzvp;
   if (tp)
     {
     /* Ask the host for the seconds since the Unix epoch.  */
diff --git a/newlib/libc/sys/rdos/gettod.c b/newlib/libc/sys/rdos/gettod.c
index b1801502d..66380e75c 100644
--- a/newlib/libc/sys/rdos/gettod.c
+++ b/newlib/libc/sys/rdos/gettod.c
@@ -8,7 +8,7 @@
 struct timeval;
 struct timezone;
 
-int gettimeofday(struct timeval *ptimeval, struct timezone *ptimezone)
+int gettimeofday(struct timeval *ptimeval, void *ptimezone)
 {
   errno = ENOSYS;
   return -1;
diff --git a/newlib/libc/sys/sh/syscalls.c b/newlib/libc/sys/sh/syscalls.c
index f0e924297..f8ed7365f 100644
--- a/newlib/libc/sys/sh/syscalls.c
+++ b/newlib/libc/sys/sh/syscalls.c
@@ -185,7 +185,7 @@ _times (struct tms *tp)
 }
 
 int
-_gettimeofday (struct timeval *tv, struct timezone *tz)
+_gettimeofday (struct timeval *tv, void *tz)
 {
   tv->tv_usec = 0;
   tv->tv_sec = __trap34 (SYS_time);
diff --git a/newlib/libc/time/time.c b/newlib/libc/time/time.c
index 1e086f403..2506388f6 100644
--- a/newlib/libc/time/time.c
+++ b/newlib/libc/time/time.c
@@ -43,7 +43,7 @@ _DEFUN (time, (t),
 {
   struct timeval now;
 
-  if (_gettimeofday_r (_REENT, &now, (struct timezone *) 0) >= 0)
+  if (_gettimeofday_r (_REENT, &now, NULL) >= 0)
     {
       if (t)
 	*t = now.tv_sec;