Rodrigo Kumpera wrote:
Mono is not usually build with icc, so it might be the case that it
doesn't support some gcc flags. Just hack your way by removing them
from configure.in <http://configure.in> for now.
I've tried to compile the problematic module without any flags at all.
The result is the following:
2 utils]# icc -I. -I../.. -I../.. -I../../mono -I../../libgc/include
-I../../eglib/src -I../../eglib/src -mmic -o hazard-pointer.lo
hazard-pointer.c
/tmp/icciSatYwas_.s: Assembler messages:
/tmp/icciSatYwas_.s:139: Error: `sfence' is not supported on `k1om'
/tmp/icciSatYwas_.s:517: Error: `sfence' is not supported on `k1om'
The assembler output points out the problematic place inside
hazard-pointer.c:
..B1.23: # Preds ..B1.22 Latency 1
movl %ebx, highest_small_id(%rip)
#hazard-pointer.c:113.3 c1
# Begin ASM
sfence
# End ASM
#hazard-pointer.c:114.3
The corresponding line 114 in hazard-pointer.c is
112 if (id > highest_small_id) {
113 highest_small_id = id;
114 mono_memory_write_barrier ();
115 }
Finally we have
$ cat mono-membar.h
/*
* mono-membar.h: Memory barrier inline functions
*
* Author:
* Mark Probst ([email protected])
*
* (C) 2007 Novell, Inc
*/
#ifndef _MONO_UTILS_MONO_MEMBAR_H_
#define _MONO_UTILS_MONO_MEMBAR_H_
. . .
static inline void mono_memory_write_barrier (void)
{
__asm__ __volatile__ ("sfence" : : : "memory");
}
Yury
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list