diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 46dfc1d2..db4f7ce 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -76,6 +76,20 @@
 #define SOCKETNAME "socket"        /* name of the socket file */
 #define LOCKNAME   "lock"          /* name of the lock file */
 
+#ifdef __i386__
+static const enum cpu_type client_cpu = CPU_x86;
+#elif defined(__x86_64__)
+static const enum cpu_type client_cpu = CPU_x86_64;
+#elif defined(__ALPHA__)
+static const enum cpu_type client_cpu = CPU_ALPHA;
+#elif defined(__powerpc__)
+static const enum cpu_type client_cpu = CPU_POWERPC;
+#elif defined(__sparc__)
+static const enum cpu_type client_cpu = CPU_SPARC;
+#else
+#error Unsupported CPU
+#endif
+
 #ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
 /* data structure used to pass an fd with sendmsg/recvmsg */
 struct cmsg_fd
@@ -1030,6 +1044,7 @@
         req->reply_fd    = reply_pipe[1];
         req->wait_fd     = ntdll_get_thread_data()->wait_fd[1];
         req->debug_level = (TRACE_ON(server) != 0);
+        req->cpu         = client_cpu;
         ret = wine_server_call( req );
         NtCurrentTeb()->ClientId.UniqueProcess = ULongToHandle(reply->pid);
         NtCurrentTeb()->ClientId.UniqueThread  = ULongToHandle(reply->tid);
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index a8865e6..7436626 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -128,6 +128,13 @@
 } debug_event_t;
 
 
+enum cpu_type
+{
+    CPU_x86, CPU_x86_64, CPU_ALPHA, CPU_POWERPC, CPU_SPARC
+};
+typedef int cpu_type_t;
+
+
 struct send_fd
 {
     thread_id_t tid;
@@ -567,6 +574,7 @@
     client_ptr_t entry;
     int          reply_fd;
     int          wait_fd;
+    cpu_type_t   cpu;
 };
 struct init_thread_reply
 {
@@ -5214,6 +5222,6 @@
     struct set_window_layered_info_reply set_window_layered_info_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 382
+#define SERVER_PROTOCOL_VERSION 383
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/process.h b/server/process.h
index 5b6dcda..250c5ce 100644
--- a/server/process.h
+++ b/server/process.h
@@ -58,6 +58,7 @@
     process_id_t         id;              /* id of the process */
     process_id_t         group_id;        /* group id of the process */
     struct timeout_user *sigkill_timeout; /* timeout for final SIGKILL */
+    enum cpu_type        cpu;             /* client CPU type */
     int                  unix_pid;        /* Unix pid for final SIGKILL */
     int                  exit_code;       /* process exit code */
     int                  running_threads; /* number of threads running in this process */
diff --git a/server/protocol.def b/server/protocol.def
index 5cc93da..0ef309e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -143,6 +143,13 @@
     } rip_info;
 } debug_event_t;
 
+/* supported CPU types */
+enum cpu_type
+{
+    CPU_x86, CPU_x86_64, CPU_ALPHA, CPU_POWERPC, CPU_SPARC
+};
+typedef int cpu_type_t;
+
 /* structure used in sending an fd from client to server */
 struct send_fd
 {
@@ -554,6 +561,7 @@
     client_ptr_t entry;        /* entry point or PEB if initial thread (in thread address space) */
     int          reply_fd;     /* fd for reply pipe */
     int          wait_fd;      /* fd for blocking calls pipe */
+    cpu_type_t   cpu;          /* CPU that this thread is running on */
 @REPLY
     process_id_t pid;          /* process id of the new thread's process */
     thread_id_t  tid;          /* thread id of the new thread */
diff --git a/server/request.h b/server/request.h
index 1adc03b..29ed8c9 100644
--- a/server/request.h
+++ b/server/request.h
@@ -600,6 +600,7 @@
 C_ASSERT( sizeof(char) == 1 );
 C_ASSERT( sizeof(char_info_t) == 4 );
 C_ASSERT( sizeof(client_ptr_t) == 8 );
+C_ASSERT( sizeof(cpu_type_t) == 4 );
 C_ASSERT( sizeof(data_size_t) == 4 );
 C_ASSERT( sizeof(file_pos_t) == 8 );
 C_ASSERT( sizeof(int) == 4 );
@@ -663,6 +664,7 @@
 C_ASSERT( FIELD_OFFSET(struct init_thread_request, entry) == 32 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_request, reply_fd) == 40 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_request, wait_fd) == 44 );
+C_ASSERT( FIELD_OFFSET(struct init_thread_request, cpu) == 48 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_reply, pid) == 8 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_reply, tid) == 12 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_reply, server_start) == 16 );
diff --git a/server/thread.c b/server/thread.c
index 6c68a9e..dcf1da2 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -1045,10 +1045,16 @@
     {
         process->unix_pid = current->unix_pid;
         process->peb      = req->entry;
+        process->cpu      = req->cpu;
         reply->info_size  = init_process( current );
     }
     else
     {
+        if (req->cpu != process->cpu)
+        {
+            set_error( STATUS_INVALID_PARAMETER );
+            return;
+        }
         if (process->unix_pid != current->unix_pid)
             process->unix_pid = -1;  /* can happen with linuxthreads */
         if (current->suspend + process->suspend > 0) stop_thread( current );
diff --git a/server/trace.c b/server/trace.c
index 13a3ddc..3583cc3 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -105,6 +105,21 @@
     }
 }
 
+static void dump_cpu_type( const cpu_type_t *code )
+{
+    switch (*code)
+    {
+#define CASE(c) case CPU_##c: fputs( #c, stderr ); break
+        CASE(x86);
+        CASE(x86_64);
+        CASE(ALPHA);
+        CASE(POWERPC);
+        CASE(SPARC);
+        default: fprintf( stderr, "%u", *code ); break;
+#undef CASE
+    }
+}
+
 static void dump_apc_call( const apc_call_t *call )
 {
     fputc( '{', stderr );
@@ -991,7 +1006,9 @@
     dump_uint64( &req->entry );
     fprintf( stderr, "," );
     fprintf( stderr, " reply_fd=%d,", req->reply_fd );
-    fprintf( stderr, " wait_fd=%d", req->wait_fd );
+    fprintf( stderr, " wait_fd=%d,", req->wait_fd );
+    fprintf( stderr, " cpu=" );
+    dump_cpu_type( &req->cpu );
 }
 
 static void dump_init_thread_reply( const struct init_thread_reply *req )
diff --git a/tools/make_requests b/tools/make_requests
index b43fe85..95c5647 100755
--- a/tools/make_requests
+++ b/tools/make_requests
@@ -50,6 +50,7 @@
     "async_data_t"  => [  40,  8,  "&dump_async_data" ],
     "luid_t"        => [  8,   4,  "&dump_luid" ],
     "ioctl_code_t"  => [  4,   4,  "&dump_ioctl_code" ],
+    "cpu_type_t"    => [  4,   4,  "&dump_cpu_type" ],
 );
 
 my @requests = ();
