[Mono-dev] Arm9 NS9215 floating point troubles

Trevor Ackerman t_ackerman at yahoo.com
Thu Jun 17 12:07:28 EDT 2010


I have been able to cross-compile Mono 2.6.4 for the NS9215 (no fpu 
afaik) and I'm having trouble with floats when executing code.

I 
thought I had correctly specified soft-float and indeed mono tells me so

~
 # /usr/local/bin/mono -V
Mono JIT compiler version 2.6.4 (tarball 
Wed Jun 16 14:55:33 MDT 2010)
Copyright (C) 2002-2010 Novell, Inc and
 Contributors. www.mono-project.com
       
 TLS:           normal
        GC:            Included Boehm (with 
typed GC and Parallel Mark)
        SIGSEGV:       normal
        
Notifications:
 epoll
        Architecture:  arm,soft-float
        
Disabled:      none
~ # 

However the following code produces 
grossly wrong results

using System;

public class FloatTest
{
       
 static public void Main()
        {
                
Console.WriteLine("0.0f literal is " + 0.0f);
                
Console.WriteLine("1.0f literal is " + 1.0f);
                
Console.WriteLine("12.3f literal is " + 12.3f);
                
Console.WriteLine("32f
 literal is " + 32f);
                Console.WriteLine("1024f 
literal is " + 1024f);
                Console.WriteLine("32768f 
literal is " + 32768f);
        }
}

Here are the results

~
 # /usr/local/bin/mono FloatTest.exe
0.0f literal is 0
1.0f 
literal is 5.299809E-315
12.3f literal is -1.491669E-154
32f 
literal is 5.325712E-315
1024f literal is 5.351615E-315
32768f 
literal is 5.377519E-315

my configure command is
./configure 
--host=arm-linux --with-tls=pthread --with-moonlight=no 
--with-mcs-docs=no

summary from running config is

        
mcs source:    $(top_srcdir)/mcs
        olive source: 
 

        GC:            included
        GLIB:          
system
        TLS:           pthread
        SIGALTSTACK:   yes
       
 Engine:        Building and using the JIT
        2.0 Profile:   yes
       
 Moon Profile:  no
        4.0 Alpha:     no
        
MonoTouch:     no
        JNI support:   IKVM
 Native
        libgdiplus:    assumed to be installed
        
zlib:          system zlib
        oprofile:      no
        
BigArrays:     no
        DTrace:        no
        Parallel Mark:
 yes
        LLVM Back End: no

My CFLAGS and CPPFLAGS environment variables are
 both
-DARM_FPU_NONE=1 -DMONO_ARCH_SOFT_FLOAT=1

Any insight 
would be greatly appreciated, I've looked at some of the code in the 
mono/mini directory but cannot make sense of how float values are 
getting generated.

TIA


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20100617/9490734c/attachment.html 


More information about the Mono-devel-list mailing list