OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [designs/] [leon3-digilent-xc3s1600e/] [prom.S] - Rev 2

Compare with Previous | Blame | View Log


/* Template boot-code for LEON3 test benches */

#ifndef STACKSIZE
#define STACKSIZE 0x00002000
#endif

#include "prom.h"

        .seg    "text"
        .proc   0
        .align  4
        .global start
start:

        flush
        set 0x10e0, %g1         ! init IU
        mov %g1, %psr
        mov %g0, %wim
        mov %g0, %tbr
        mov %g0, %y
        nop
        set  0x81000f, %g1
        sta %g1, [%g0] 2
        mov %g0, %g2
        nop
        nop
        nop
        nop
        nop
        or %g2, %g2, %g0
        nop
        nop
        nop
        nop
        nop
2:
        mov %asr17, %g3
        and %g3, 0x1f, %g3
        mov %g0, %g4
        mov %g0, %g5
        mov %g0, %g6
        mov %g0, %g7
1:
        mov %g0, %l0
        mov %g0, %l1
        mov %g0, %l2
        mov %g0, %l3
        mov %g0, %l4
        mov %g0, %l5
        mov %g0, %l6
        mov %g0, %l7
        mov %g0, %o0
        mov %g0, %o1
        mov %g0, %o2
        mov %g0, %o3
        mov %g0, %o4
        mov %g0, %o5
        mov %g0, %o6
        mov %g0, %o7
        subcc %g3, 1, %g3
        bge 1b
        save

        mov     2, %g1
        mov     %g1, %wim
        set 0x10e0, %g1         ! enable traps
        mov %g1, %psr
        nop; nop; nop;

        mov %psr, %g1
        srl %g1, 12, %g1
        andcc %g1, 1, %g0
        be 1f
        nop

        set _fsrxx, %g3
        ld [%g3], %fsr
        ldd [%g3], %f0
        ldd [%g3], %f2
        ldd [%g3], %f4
        ldd [%g3], %f6
        ldd [%g3], %f8
        ldd [%g3], %f10
        ldd [%g3], %f12
        ldd [%g3], %f14
        ldd [%g3], %f16
        ldd [%g3], %f18
        ldd [%g3], %f20
        ldd [%g3], %f22
        ldd [%g3], %f24
        ldd [%g3], %f26
        ldd [%g3], %f28
        ldd [%g3], %f30
        nop
        nop
        nop
        nop
        nop
        faddd %f0, %f2, %f4
        nop
        nop
        nop
        nop
        ba  1f  
        nop
        
        
.align  8
_fsrxx:
        .word 0
        .word 0

1:
        set 0xfff00100, %g3
        ld [%g3], %g4
        set 0x7c1fffff, %g5
        and %g5, %g4, %g4
        set 0x01010000, %g5
        or  %g5, %g4, %g4
        st %g4, [%g3]
        
        set 0x80000600, %g7
        set RAMSTART, %g1
        st  %g1, [%g7+0x14]
        set 0x0257031f, %g1
        st  %g1, [%g7+4]
        set 0x00250038, %g1
        st  %g1, [%g7+8]
        set 0x00060078, %g1
        st  %g1, [%g7+12]
        set 0x0299040f, %g1
        st  %g1, [%g7+16]
        set 0x21, %g1
!       st  %g1, [%g7]

        mov %asr17, %g3
        srl %g3, 28, %g3
        andcc %g3, 0x0f, %g3
        bne 1f

        set L2MCTRLIO, %g1
        set MCFG1, %g2
        st  %g2, [%g1]
        set MCFG2, %g2
        st  %g2, [%g1+4]
        set MCFG3, %g2
        st  %g2, [%g1+8]
!       set IRQCTRL, %g1
!       set 0x0ffff, %g2
!       st  %g2, [%g1+0x10]

        set 0xFFFFF860, %g1
        ld  [%g1], %g2
        srl %g2, 12, %g2
        set 0x01009, %g1
        subcc %g1, %g2, %g0
        bne 1f

        set ASDCFG, %g1
        set DSDCFG, %g2
        st  %g2, [%g1]

        ! %g3 = cpu index
1:      set STACKSIZE, %g2
        mov %g0, %g1
2:      subcc %g3, 0, %g0
        be 3f
        nop
        add %g1, %g2, %g1
        ba 2b
        sub %g3, 1, %g3


3:      set RAMSTART+ RAMSIZE-32, %fp
        sub %fp, %g1, %fp
        sub %fp, 96, %sp

        set RAMSTART, %g1
!       st  %g0, [%g7]

        jmp %g1
        nop

.align  32

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.