Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: MIPS Alchemy machine don't boot



Hi! Simon,


From: Simon Burge <simonb%NetBSD.org@localhost>
Date: Sat, 09 Jan 2010 22:49:48 +1100

> I've found the problem.  In lock_stubs.S we have the following
> code:
> 
>         .set    mips3
>       ...
>          move t1, a2
> 
> which will always generate a 64-bit move, since the ".set mips3"
> will override any -mabi=<abi> command line flag.
> 
> The following snippet from mipsX_subr.S shows what is needed.  Perhaps
> we can wrap this up in a macro?
> 
>       /*
>        * Set ISA level for the assembler.
>        */
>       #if defined(MIPS3)
>               .set    mips3
>       #endif
> 
>       #if defined(MIPS32)
>               .set    mips32
>       #endif
> 
>       #if defined(MIPS64)
>               .set    mips64
>       #endif

Thanks for your advice.  ;-)
My OpenMicroServer AL400(OMSAL400) boots with attached patch.  However
happen new problem on cobalt's userland.
The binary of default evbmips works big-endian.  But OMSAL400 works
little-endian...  I will build userland of evbmips-el at tonight. ;-)

Also this change needs.  I cast bsh to u_long.


Index: alchemy/au_himem_space.c
===================================================================
RCS file: /cvsroot/src/sys/arch/mips/alchemy/au_himem_space.c,v
retrieving revision 1.10
diff -u -r1.10 au_himem_space.c
--- alchemy/au_himem_space.c    16 Dec 2009 08:26:14 -0000      1.10
+++ alchemy/au_himem_space.c    10 Jan 2010 05:30:07 -0000
@@ -294,7 +294,7 @@

        if (acct) {
                bus_addr_t              addr;
-               addr = ((pa - c->c_physoff) + (bsh % PAGE_SIZE));
+               addr = ((pa - c->c_physoff) + ((u_long)bsh % PAGE_SIZE));
                extent_free(c->c_extent, addr, size, EX_NOWAIT);
        }
 }


Thanks,
--
kiyohara

Index: mips/lock_stubs.S
===================================================================
RCS file: /cvsroot/src/sys/arch/mips/mips/lock_stubs.S,v
retrieving revision 1.10
diff -u -r1.10 lock_stubs.S
--- mips/lock_stubs.S   14 Dec 2009 00:46:06 -0000      1.10
+++ mips/lock_stubs.S   10 Jan 2010 05:30:09 -0000
@@ -53,7 +53,21 @@
 
 #if MIPS_HAS_LLSC != 0
 
+/*
+ * Set ISA level for the assembler.
+ */
+#if defined(MIPS3)
        .set    mips3
+#endif
+
+#if defined(MIPS32)
+       .set    mips32
+#endif
+
+#if defined(MIPS64)
+       .set    mips64
+#endif
+
        .set    noreorder
        .set    noat
 


Home | Main Index | Thread Index | Old Index