]>
Commit | Line | Data |
---|---|---|
29187690 JR |
1 | diff -ur mono-3.12.0/libgc/include/private/gc_locks.h mono-3.12.0-x32/libgc/include/private/gc_locks.h |
2 | --- mono-3.12.0/libgc/include/private/gc_locks.h 2014-10-30 23:11:01.000000000 +0100 | |
3 | +++ mono-3.12.0-x32/libgc/include/private/gc_locks.h 2015-03-13 19:53:30.391221738 +0100 | |
4 | @@ -437,7 +437,7 @@ | |
5 | GC_word new_val) | |
6 | { | |
7 | char result; | |
8 | - __asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1" | |
9 | + __asm__ __volatile__("lock; cmpxchg %2, %0; setz %1" | |
10 | : "+m"(*(addr)), "=r"(result) | |
11 | : "r" (new_val), "a"(old) : "memory"); | |
12 | return (GC_bool) result; | |
fee77e60 JB |
13 | --- mono-3.12.1/mono/metadata/decimal.c.orig 2015-03-06 18:26:50.000000000 +0100 |
14 | +++ mono-3.12.1/mono/metadata/decimal.c 2015-03-14 07:46:21.958919177 +0100 | |
15 | @@ -555,12 +555,15 @@ | |
16 | #if defined(__native_client__) && (defined(__i386__) || defined(__x86_64)) | |
17 | #define USE_X86_32BIT_INSTRUCTIONS 1 | |
18 | #endif | |
19 | +#if defined(__x86_64) && defined(__ILP32__) | |
20 | +#define ARCH_x32 | |
21 | +#endif | |
22 | ||
23 | static inline gint | |
24 | my_g_bit_nth_msf (gsize mask) | |
25 | { | |
26 | /* Mask is expected to be != 0 */ | |
27 | -#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) | |
28 | +#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) || defined(ARCH_x32) | |
29 | int r; | |
29187690 | 30 | |
fee77e60 JB |
31 | __asm__("bsrl %1,%0\n\t" |
32 | --- mono-3.12.1/mono/metadata/sgen-cardtable.c.orig 2015-03-06 18:26:50.000000000 +0100 | |
33 | +++ mono-3.12.1/mono/metadata/sgen-cardtable.c 2015-03-14 08:06:01.178869685 +0100 | |
34 | @@ -504,7 +504,7 @@ static inline int | |
35 | find_card_offset (mword card) | |
36 | { | |
29187690 | 37 | /*XXX Use assembly as this generates some pretty bad code */ |
fee77e60 JB |
38 | -#if defined(__i386__) && defined(__GNUC__) |
39 | +#if (defined(__i386__) || (defined(__x86_64__) && defined(__ILP32__))) && defined(__GNUC__) | |
29187690 | 40 | return (__builtin_ffs (card) - 1) / 8; |
fee77e60 | 41 | #elif defined(__x86_64__) && defined(__GNUC__) |
29187690 | 42 | return (__builtin_ffsll (card) - 1) / 8; |
fee77e60 JB |
43 | --- mono-3.12.1/mono/metadata/sgen-marksweep.c.orig 2015-03-06 18:26:50.000000000 +0100 |
44 | +++ mono-3.12.1/mono/metadata/sgen-marksweep.c 2015-03-14 08:14:18.488848812 +0100 | |
45 | @@ -1748,7 +1748,7 @@ initial_skip_card (guint8 *card_data) | |
46 | if (i == CARD_WORDS_PER_BLOCK) | |
47 | return card_data + CARDS_PER_BLOCK; | |
29187690 | 48 | |
fee77e60 JB |
49 | -#if defined(__i386__) && defined(__GNUC__) |
50 | +#if (defined(__i386__) || (defined(__x86_64__) && (defined(__ILP32__))) && defined(__GNUC__) | |
29187690 | 51 | return card_data + i * 4 + (__builtin_ffs (card) - 1) / 8; |
fee77e60 | 52 | #elif defined(__x86_64__) && defined(__GNUC__) |
29187690 | 53 | return card_data + i * 8 + (__builtin_ffsll (card) - 1) / 8; |
29187690 JR |
54 | diff -ur mono-3.12.0/mono/mini/mini-codegen.c mono-3.12.0-x32-2/mono/mini/mini-codegen.c |
55 | --- mono-3.12.0/mono/mini/mini-codegen.c 2015-01-12 18:15:08.000000000 +0100 | |
56 | +++ mono-3.12.0-x32-2/mono/mini/mini-codegen.c 2015-03-13 20:24:21.044619503 +0100 | |
57 | @@ -164,7 +164,7 @@ | |
58 | { | |
59 | regmask_t mask = allow & rs->ifree_mask; | |
60 | ||
61 | -#if defined(__x86_64__) && defined(__GNUC__) | |
62 | +#if defined(__x86_64__) && defined(__GNUC__) && !defined(__ILP32__) | |
63 | { | |
64 | guint64 i; | |
65 | ||
29187690 JR |
66 | diff -ur mono-3.12.0/mono/mini/regalloc.h mono-3.12.0-x32-2/mono/mini/regalloc.h |
67 | --- mono-3.12.0/mono/mini/regalloc.h 2014-10-30 23:11:02.000000000 +0100 | |
68 | +++ mono-3.12.0-x32-2/mono/mini/regalloc.h 2015-03-13 20:23:14.031283837 +0100 | |
69 | @@ -1,4 +1,4 @@ | |
70 | -#if defined(__native_client__) && defined(__x86_64__) | |
71 | +#if defined(__native_client__) && defined(__x86_64__) && !defined(__ILP32__) | |
72 | typedef guint64 regmask_t; | |
73 | #else | |
74 | typedef size_t regmask_t; | |
fee77e60 JB |
75 | --- mono-3.12.1/mono/utils/monobitset.c.orig 2015-03-14 08:21:15.042164662 +0100 |
76 | +++ mono-3.12.1/mono/utils/monobitset.c 2015-03-14 08:21:19.602164473 +0100 | |
77 | @@ -280,8 +280,11 @@ my_g_bit_nth_lsf (gsize mask, gint nth_b | |
78 | #if defined(__native_client__) && (defined(__i386__) || defined(__x86_64)) | |
79 | #define USE_X86_32BIT_INSTRUCTIONS 1 | |
80 | #endif | |
81 | +#if defined(__x86_64) && defined(__ILP32__) | |
82 | +#define ARCH_x32 | |
83 | +#endif | |
84 | ||
85 | -#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) | |
86 | +#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) || defined(ARCH_x32) | |
29187690 | 87 | { |
fee77e60 JB |
88 | int r; |
89 | /* This depends on mask != 0 */ | |
90 | @@ -311,7 +314,7 @@ static inline gint | |
91 | my_g_bit_nth_lsf_nomask (gsize mask) | |
92 | { | |
93 | /* Mask is expected to be != 0 */ | |
94 | -#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) | |
95 | +#if (defined(__i386__) && defined(__GNUC__)) || defined(USE_X86_32BIT_INSTRUCTIONS) || defined(ARCH_x32) | |
96 | int r; | |
29187690 | 97 | |
29187690 | 98 | __asm__("bsfl %1,%0\n\t" |
fee77e60 JB |
99 | --- mono-3.12.1/mono/profiler/proflog.c.orig 2015-03-06 18:26:50.000000000 +0100 |
100 | +++ mono-3.12.1/mono/profiler/proflog.c 2015-03-14 08:45:51.238769378 +0100 | |
101 | @@ -1783,8 +1783,14 @@ perf_event_syscall (struct perf_event_at | |
102 | { | |
103 | attr->size = PERF_ATTR_SIZE_VER0; | |
104 | //printf ("perf attr size: %d\n", attr->size); | |
105 | +#if defined(__NR_perf_event_open) | |
106 | + return syscall(__NR_perf_event_open, attr, pid, cpu, group_fd, flags); | |
107 | #if defined(__x86_64__) | |
108 | +# if defined(__ILP32__) | |
109 | + return syscall(/*__NR_perf_event_open*/ 0x40000000+298, attr, pid, cpu, group_fd, flags); | |
110 | +# else | |
111 | return syscall(/*__NR_perf_event_open*/ 298, attr, pid, cpu, group_fd, flags); | |
112 | +# endif | |
113 | #elif defined(__i386__) | |
114 | return syscall(/*__NR_perf_event_open*/ 336, attr, pid, cpu, group_fd, flags); | |
115 | #elif defined(__arm__) | |
116 | ======== | |
117 | TODO: | |
118 | mono/metadata/mono-config.c (CPU config) | |
119 | mono/utils/mono-compiler.h (MONO_THREAD_VAR_OFFSET - needs x32 ABI knowledge) | |
120 | mono/utils/mono-context.g (MONO_CONTEXT_*) | |
121 | mono/utils/valgrind.h | |
122 | mono/mini/*-x86.* vs mono/mini/*-amd64.* ??? | |
123 | mono/arch/x86 vs mono/arch/amd64 ??? |