Subversion Repositories

?revision_form?Rev ?revision_input??revision_submit??revision_endform?

Rev 161 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
162 holmgren 1
Description: Rename enum constants in src/code/ia32.c
2
 They conflict with /usr/include/i386-linux-gnu/sys/ucontext.h of newer eglibc
3
Author: Magnus Holmgren
4
Bug-Debian: http://bugs.debian.org/708366
5
Forwarded: yes
6
 
161 holmgren 7
--- a/src/code/ia32.c
8
+++ b/src/code/ia32.c
162 holmgren 9
@@ -14,14 +14,9 @@
10
 #include "object.h"
11
 #include "builtin_functions.h"
12
 
13
-/* This is defined on windows */
14
-#ifdef REG_NONE
15
-#undef REG_NONE
16
-#endif
17
-
18
-enum ia32_reg {REG_EAX = 0, REG_EBX = 3, REG_ECX = 1, REG_EDX = 2, REG_NONE = 4};
19
+enum ia32_reg {PIKE_REG_EAX = 0, PIKE_REG_EBX = 3, PIKE_REG_ECX = 1, PIKE_REG_EDX = 2, PIKE_REG_NONE = 4};
20
 
21
-#define REG_BITMASK ((1 << REG_NONE) - 1)
22
+#define REG_BITMASK ((1 << PIKE_REG_NONE) - 1)
23
 
24
 /* #define REGISTER_DEBUG */
25
 
26
@@ -71,7 +66,7 @@ static int alloc_regs = 0, valid_regs =
27
 #define MOV_ABSADDR_TO_REG(ADDR, REG) do {                             \
28
     MAKE_VALID_REG (REG);                                              \
29
     /* movl addr,%reg */                                               \
30
-    if ((REG) == REG_EAX)                                              \
31
+    if ((REG) == PIKE_REG_EAX)                                         \
32
       add_to_program (0xa1); /* Move dword at address to EAX. */       \
33
     else {                                                             \
34
       add_to_program (0x8b); /* Move r/m32 to r32. */                  \
35
@@ -83,7 +78,7 @@ static int alloc_regs = 0, valid_regs =
36
 #define MOV_REG_TO_ABSADDR(REG, ADDR) do {                             \
37
     CHECK_VALID_REG (REG);                                             \
38
     /* movl %reg,addr */                                               \
39
-    if ((REG) == REG_EAX)                                              \
40
+    if ((REG) == PIKE_REG_EAX)                                         \
41
       add_to_program (0xa3); /* Move EAX to dword at address. */       \
42
     else {                                                             \
43
       add_to_program (0x89); /* Move r32 to r/m32. */                  \
44
@@ -217,7 +212,7 @@ static int alloc_regs = 0, valid_regs =
45
       add_to_program (0x48 | (REG)); /* Decrement r32. */              \
46
     else if (val_ < -128 || val_ > 127) {                              \
47
       /* addl $val,%reg */                                             \
48
-      if ((REG) == REG_EAX)                                            \
49
+      if ((REG) == PIKE_REG_EAX)                                               \
50
        add_to_program (0x05); /* Add imm32 to EAX. */                  \
51
       else {                                                           \
52
        add_to_program (0x81); /* Add imm32 to r/m32. */                \
53
@@ -334,8 +329,8 @@ ptrdiff_t ia32_prev_stored_pc; /* PROG_P
54
 
55
 void ia32_flush_code_generator(void)
56
 {
57
-  next_reg = REG_EAX;
58
-  sp_reg = fp_reg = mark_sp_reg = REG_NONE;
59
+  next_reg = PIKE_REG_EAX;
60
+  sp_reg = fp_reg = mark_sp_reg = PIKE_REG_NONE;
61
   CLEAR_REGS();
62
   ia32_prev_stored_pc = -1;
63
 }
64
@@ -351,7 +346,7 @@ static enum ia32_reg alloc_reg (int avoi
65
     /* There's a free register. */
66
 
67
     for (reg = next_reg; (1 << reg) & used_regs;) {
68
-      reg = (reg + 1) % REG_NONE;
69
+      reg = (reg + 1) % PIKE_REG_NONE;
70
 #ifdef PIKE_DEBUG
71
       if (reg == next_reg) Pike_fatal ("Failed to find a free register.\n");
161 holmgren 72
 #endif
162 holmgren 73
@@ -364,15 +359,15 @@ static enum ia32_reg alloc_reg (int avoi
74
      * probably be replaced with an LRU strategy. */
161 holmgren 75
 
162 holmgren 76
     for (reg = next_reg; (1 << reg) & avoid_regs;) {
77
-      reg = (reg + 1) % REG_NONE;
78
+      reg = (reg + 1) % PIKE_REG_NONE;
79
 #ifdef PIKE_DEBUG
80
       if (reg == next_reg) Pike_fatal ("Failed to find a non-excluded register.\n");
81
 #endif
82
     }
161 holmgren 83
 
162 holmgren 84
-    if (sp_reg == reg)                 {sp_reg = REG_NONE; DEALLOC_REG (reg);}
85
-    else if (fp_reg == reg)            {fp_reg = REG_NONE; DEALLOC_REG (reg);}
86
-    else if (mark_sp_reg == reg)       {mark_sp_reg = REG_NONE; DEALLOC_REG (reg);}
87
+    if (sp_reg == reg)                 {sp_reg = PIKE_REG_NONE; DEALLOC_REG (reg);}
88
+    else if (fp_reg == reg)            {fp_reg = PIKE_REG_NONE; DEALLOC_REG (reg);}
89
+    else if (mark_sp_reg == reg)       {mark_sp_reg = PIKE_REG_NONE; DEALLOC_REG (reg);}
90
   }
91
 
92
 #ifdef REGISTER_DEBUG
93
@@ -386,11 +381,11 @@ static enum ia32_reg alloc_reg (int avoi
94
 #define DEF_LOAD_REG(REG, SET)                                         \
95
   static void PIKE_CONCAT(load_,REG) (int avoid_regs)                  \
96
   {                                                                    \
97
-    if (REG == REG_NONE) {                                             \
98
+    if (REG == PIKE_REG_NONE) {                                                \
99
       REG = alloc_reg (avoid_regs);                                    \
100
       /* Update the round robin pointer here so that we disregard */   \
101
       /* the direct calls to alloc_reg for temporary registers. */     \
102
-      next_reg = (REG + 1) % REG_NONE;                                 \
103
+      next_reg = (REG + 1) % PIKE_REG_NONE;                                    \
104
       {SET;}                                                           \
105
     }                                                                  \
106
     else                                                               \
107
@@ -410,8 +405,8 @@ DEF_LOAD_REG (mark_sp_reg, {
108
 static void ia32_call_c_function(void *addr)
109
 {
110
   CALL_RELATIVE(addr);
111
-  next_reg = REG_EAX;
112
-  sp_reg = fp_reg = mark_sp_reg = REG_NONE;
113
+  next_reg = PIKE_REG_EAX;
114
+  sp_reg = fp_reg = mark_sp_reg = PIKE_REG_NONE;
115
   CLEAR_REGS();
116
 }
117