server: Convert the server start time to the abs_time_t type.
diff --git a/server/object.h b/server/object.h
index 46b34e1..1a75e4c 100644
--- a/server/object.h
+++ b/server/object.h
@@ -213,6 +213,6 @@
 extern const char *server_argv0;
 
   /* server start time used for GetTickCount() */
-extern time_t server_start_time;
+extern struct timeval server_start_time;
 
 #endif  /* __WINE_SERVER_OBJECT_H */
diff --git a/server/protocol.def b/server/protocol.def
index 6910ed4..e64cf43 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -284,7 +284,7 @@
     process_id_t pid;          /* process id of the new thread's process */
     thread_id_t  tid;          /* thread id of the new thread */
     data_size_t  info_size;    /* total size of startup info */
-    time_t       server_start; /* server start time */
+    abs_time_t   server_start; /* server start time */
     int          version;      /* protocol version */
 @END
 
diff --git a/server/request.c b/server/request.c
index 6fc7fcb..d0e1a88 100644
--- a/server/request.c
+++ b/server/request.c
@@ -114,7 +114,7 @@
 
 struct thread *current = NULL;  /* thread handling the current request */
 unsigned int global_error = 0;  /* global error code for when no thread is current */
-time_t server_start_time = 0;  /* server startup time */
+struct timeval server_start_time = { 0, 0 };  /* server startup time */
 
 static struct master_socket *master_socket;  /* the master socket object */
 
@@ -465,7 +465,8 @@
 {
     struct timeval t;
     gettimeofday( &t, NULL );
-    return ((t.tv_sec - server_start_time) * 1000) + (t.tv_usec / 1000);
+    return ((t.tv_sec - server_start_time.tv_sec) * 1000) +
+           ((t.tv_usec - server_start_time.tv_usec) / 1000);
 }
 
 static void master_socket_dump( struct object *obj, int verbose )
@@ -798,7 +799,7 @@
     msghdr.msg_iovlen  = 1;
 
     /* init startup time */
-    server_start_time = time(NULL);
+    gettimeofday( &server_start_time, NULL );
 }
 
 /* master socket timer expiration handler */
diff --git a/server/thread.c b/server/thread.c
index 23508d3..feb3259 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -889,7 +889,8 @@
     reply->pid     = get_process_id( process );
     reply->tid     = get_thread_id( current );
     reply->version = SERVER_PROTOCOL_VERSION;
-    reply->server_start = server_start_time;
+    reply->server_start.sec  = server_start_time.tv_sec;
+    reply->server_start.usec = server_start_time.tv_usec;
     return;
 
  error:
diff --git a/server/trace.c b/server/trace.c
index ee3db8b..574943a 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -697,7 +697,9 @@
     fprintf( stderr, " pid=%04x,", req->pid );
     fprintf( stderr, " tid=%04x,", req->tid );
     fprintf( stderr, " info_size=%u,", req->info_size );
-    fprintf( stderr, " server_start=%ld,", (long)req->server_start );
+    fprintf( stderr, " server_start=" );
+    dump_abs_time( &req->server_start );
+    fprintf( stderr, "," );
     fprintf( stderr, " version=%d", req->version );
 }