summaryrefslogtreecommitdiff
path: root/emulators/wine/files/patch-context_i386
blob: 10b35c7c7f52fdf4388e3ac2efc9abc80682a9b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--- server/context_i386.c.orig	Wed Aug 14 13:59:03 2002
+++ server/context_i386.c	Thu Nov  7 14:54:01 2002
@@ -371,14 +371,15 @@
     {
 #ifdef PTRACE_GETDBREGS
 	struct dbreg dbregs;
-        if (ptrace( PTRACE_GETDBREGS, pid, (caddr_t) &dbregs, 0 ) == -1)
+	struct dbreg *dbregs_ptr = &dbregs; /* ptr to workaround buggy macro */
+        if (ptrace( PTRACE_GETDBREGS, pid, (caddr_t) dbregs_ptr, 0 ) == -1)
 		goto error;
-	context->Dr0 = dbregs.dr0;
-	context->Dr1 = dbregs.dr1;
-	context->Dr2 = dbregs.dr2;
-	context->Dr3 = dbregs.dr3;
-	context->Dr6 = dbregs.dr6;
-	context->Dr7 = dbregs.dr7;
+	context->Dr0 = DBREG_DRX(dbregs_ptr, 0);
+	context->Dr1 = DBREG_DRX(dbregs_ptr, 1);
+	context->Dr2 = DBREG_DRX(dbregs_ptr, 2);
+	context->Dr3 = DBREG_DRX(dbregs_ptr, 3);
+	context->Dr6 = DBREG_DRX(dbregs_ptr, 6);
+	context->Dr7 = DBREG_DRX(dbregs_ptr, 7);
 #endif
     }
     if (flags & CONTEXT_FLOATING_POINT)
@@ -437,15 +438,16 @@
     {
 #ifdef PTRACE_SETDBREGS
 	struct dbreg dbregs;
-	dbregs.dr0 = context->Dr0;
-	dbregs.dr1 = context->Dr1;
-	dbregs.dr2 = context->Dr2;
-	dbregs.dr3 = context->Dr3;
-	dbregs.dr4 = 0;
-	dbregs.dr5 = 0;
-	dbregs.dr6 = context->Dr6;
-	dbregs.dr7 = context->Dr7;
-        if (ptrace( PTRACE_SETDBREGS, pid, (caddr_t) &dbregs, 0 ) == -1)
+	struct dbreg *dbregs_ptr = &dbregs; /* ptr to workaround buggy macro */
+	DBREG_DRX(dbregs_ptr, 0) = context->Dr0;
+	DBREG_DRX(dbregs_ptr, 1) = context->Dr1;
+	DBREG_DRX(dbregs_ptr, 2) = context->Dr2;
+	DBREG_DRX(dbregs_ptr, 3) = context->Dr3;
+	DBREG_DRX(dbregs_ptr, 4) = 0;
+	DBREG_DRX(dbregs_ptr, 5) = 0;
+	DBREG_DRX(dbregs_ptr, 6) = context->Dr6;
+	DBREG_DRX(dbregs_ptr, 7) = context->Dr7;
+        if (ptrace( PTRACE_SETDBREGS, pid, (caddr_t) dbregs_ptr, 0 ) == -1)
 		goto error;
 #endif
     }