Hello,
  I'm trying to use Mono runtime on MIPS architecture. Attached change mend
some problems, but I'm not confident of the changes (especially the 2nd one),
and I want to ask for the review.

1. At first, compilation fails since there is no definition for mips
   in mono/mono/utils/mono-membar.h. I uses
     __asm__ __volatile__ ("" : : : "memory");
   as for ARM.

2. basic-long.exe stopped at 

     ** ERROR **: file mini-codegen.c: line 224 (mono_spillvar_offset_int): 
should not be reached

   When I remove the g_assert_not_reached, another assertion fails:

     ** ERROR **: file mini-mips.c: line 3190 (mono_arch_emit_prolog): 
assertion failed: ((alloc_size & (MIPS_STACK_ALIGNMENT-1)) == 0)

   Below the assertion,

     /* re-align cfg->stack_offset if needed (due to var spilling in 
mini-codegen.c) */
     cfg->stack_offset = (cfg->stack_offset + MIPS_STACK_ALIGNMENT - 1) & 
~(MIPS_STACK_ALIGNMENT - 1);

     /* stack_offset should not be changed here. */
     alloc_size = cfg->stack_offset;
     cfg->stack_usage = alloc_size;

   implies spilling may break alignment and alloc_size is reset by aligned 
value,
   so I just removed the assertion, then basic-long.exe runs without aborting.

   I'm not sure what is the correct fix here. The second comment says 
'stack_offset'
   should not be changed. Should we keep stack_offset and align alloc_size 
alone?

3. Wrong code genered for conditional branching, e.g.

     using System;
     class CompareIntegers_simple
     {
       public static void Main() {
         long i64 = 0;
     
         if (i64 < Int32.MinValue) {
           Console.WriteLine("True");
         }
       }
     }

   I found there are some mistakes in mono/mono/mini/inssel-long32-mips.brg.
   I've fixed it and added some related tests.

With those changes, I've checked that "mono --regression basic-long.exe"
passes except test_0_conv_to_r4 (tested on Debian-MIPS on qemu).

Sincerely yours,
--
Yoichi NAKAYAMA
Pixela Corporation

Attachment: mono_mips.patch
Description: Binary data

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to