[Mono-dev] CONV.i8 conversion problem on E500 power pc
jbroekhuizen at hotmail.nl
Tue Feb 5 21:35:32 UTC 2013
I managed to compile Mono 3.0.3 on my Synology NAS with a P1022 (dual e500)
ppc processor. Shortly after I noticed that the conversion of doubles to
long fails. This was triggered by some runtime exception in XSP web server
that the timespan was negative. I deduced the code to fail to the following:
double dval = 110.0;
long lval = (long) dval;
In this case lval is always zero. Disassembled this is:
IL_0000: ldc.r8 110.
In some documentation I noticed that the E500 cores do not support the
conversion instructions for double and long, so I ensured that in
mini/mini-ppc the conversion emulator functions where registered correctly
(by adding some defines). So, now the emulator function "mono_fconv_i8" is
called. However, the argument it gets in is zero as well. So, I wonder what
could go wrong. I am pretty lost in the "mono_arch_emit_call" function where
the arguments are added (FP type, resulting in a OP_FMOVE). But I currently
do not know enough about the registers to make anything out of this.
Does anyone know how I can fix this problem?
View this message in context: http://mono.1490590.n4.nabble.com/CONV-i8-conversion-problem-on-E500-power-pc-tp4658483.html
Sent from the Mono - Dev mailing list archive at Nabble.com.
More information about the Mono-devel-list