diff --git a/arch/sparc/src/bm3803/bm3803_head.S b/arch/sparc/src/bm3803/bm3803_head.S index 7ee12a61b1..aa9833910b 100644 --- a/arch/sparc/src/bm3803/bm3803_head.S +++ b/arch/sparc/src/bm3803/bm3803_head.S @@ -324,7 +324,7 @@ __start: set BM3803_REG,%g1 ld [%g1+4], %g2 - or %g2, 0x4f, %g2 /*将存储器配置为读改写(区别于写选通),等待后期设置为最大*/ + or %g2, 0x4f, %g2 !Enable read-modify-write cycle(no byte write strobe),maximum wait-states st %g2, [%g1+4] nop diff --git a/arch/sparc/src/sparc_v8/up_systemreset.c b/arch/sparc/src/sparc_v8/up_systemreset.c index 960518ccae..adc0bf5e7d 100644 --- a/arch/sparc/src/sparc_v8/up_systemreset.c +++ b/arch/sparc/src/sparc_v8/up_systemreset.c @@ -49,19 +49,11 @@ void up_systemreset(void) { - asm("st %g0,[%g1+0x90]"); /* ÐŽÈëÖжό¶±ðºÍÓÅÏÈ¿ØÖƌĎæÆ÷£¬ÆÁ±ÎËùÓÐÖÐ¶Ï */ - asm("st %g0,[%g1+0x94]"); /* ÐŽÈëÖжÏÇëÇóŒÄŽæÆ÷,Çå³ýËùÓеÄÖÐ¶Ï */ - asm("st %g0,[%g1+0x98]"); /* ÐŽÈëÇ¿ÖÆÖжόĎæÆ÷£¬Çå³ýËùÓÐÖÐ¶Ï */ + (void)sparc_disable_interrupts(); - /* Çå³ýËùÓб»×èÈûµÄÖÐ¶Ï */ + /* reboot from ram */ - asm("set 0xfffe,%g2"); /* ÉèÖÃÖжÏÇå³ýŒÄŽæÆ÷µÄÖµ */ - asm("st %g2,[%g1+0x9c]"); /* ÐŽÈëÖжÏÇå³ýŒÄŽæÆ÷£¬Çå³ýËùÓеÄÖÐ¶Ï */ - - asm("set 0x1024, %l4"); - asm("jmp %l4"); - asm("nop"); - asm("nop"); + ((void (*)(void))CONFIG_RAM_START)(); /* Wait for the reset */