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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [arch/] [or32/] [board/] [reset.S] - Diff between revs 1624 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1624 Rev 1765
#include 
#include 
#include 
#include 
#include 
#include 
#undef IC_ENABLE
#undef IC_ENABLE
#define IC_ENABLE 1
#define IC_ENABLE 1
        .extern _reset_support
        .extern _reset_support
        .extern _src_beg
        .extern _src_beg
        .extern _dst_beg
        .extern _dst_beg
        .extern _dst_end
        .extern _dst_end
        .extern _c_reset
        .extern _c_reset
        .global start
        .global start
        .global _lolev_ie
        .global _lolev_ie
        .global _str
        .global _str
        .section .stack
        .section .stack
        .space 0x30000
        .space 0x30000
_stack:
_stack:
        .section .reset, "a"
        .section .reset, "a"
        .org 0x100
        .org 0x100
start:
start:
_reset:
_reset:
        l.addi  r3,r0,SPR_SR_SM
        l.addi  r3,r0,SPR_SR_SM
        l.mtspr r0,r3,SPR_SR
        l.mtspr r0,r3,SPR_SR
        l.movhi r3,hi(_start)
        l.movhi r3,hi(_start)
        l.ori   r3,r3,lo(_start)
        l.ori   r3,r3,lo(_start)
        l.jr    r3
        l.jr    r3
        l.nop
        l.nop
        .section .text
        .section .text
_start:
_start:
        l.jal   init_mc
        l.jal   init_mc
        l.nop
        l.nop
.if IC_ENABLE
.if IC_ENABLE
        l.jal   _ic_enable
        l.jal   _ic_enable
        l.nop
        l.nop
.endif
.endif
        /* Copy form flash to sram */
        /* Copy form flash to sram */
.if 1
.if 1
        l.movhi r3,hi(_src_beg)
        l.movhi r3,hi(_src_beg)
        l.ori   r3,r3,lo(_src_beg)
        l.ori   r3,r3,lo(_src_beg)
        l.movhi r4,hi(_dst_beg)
        l.movhi r4,hi(_dst_beg)
        l.ori   r4,r4,lo(_dst_beg)
        l.ori   r4,r4,lo(_dst_beg)
        l.movhi r5,hi(_dst_end)
        l.movhi r5,hi(_dst_end)
        l.ori   r5,r5,lo(_dst_end)
        l.ori   r5,r5,lo(_dst_end)
        l.sub   r5,r5,r4
        l.sub   r5,r5,r4
        l.sfeqi r5,0
        l.sfeqi r5,0
        l.bf    2f
        l.bf    2f
        l.nop
        l.nop
1:      l.lwz   r6,0(r3)
1:      l.lwz   r6,0(r3)
        l.sw    0(r4),r6
        l.sw    0(r4),r6
        l.addi  r3,r3,4
        l.addi  r3,r3,4
        l.addi  r4,r4,4
        l.addi  r4,r4,4
        l.addi  r5,r5,-4
        l.addi  r5,r5,-4
        l.sfgtsi r5,0
        l.sfgtsi r5,0
        l.bf    1b
        l.bf    1b
        l.nop
        l.nop
2:
2:
.endif
.endif
        l.movhi r1,hi(_stack)
        l.movhi r1,hi(_stack)
        l.addi  r1,r1,lo(_stack)
        l.addi  r1,r1,lo(_stack)
        l.addi  r1,r1,-4
        l.addi  r1,r1,-4
        l.movhi r3,hi(_linux_start)
        l.movhi r3,hi(_linux_start)
        l.ori   r3,r3,lo(_linux_start)
        l.ori   r3,r3,lo(_linux_start)
        l.addi  r4,r0,0
        l.addi  r4,r0,0
        l.jal   _decompress
        l.jal   _decompress
        l.nop
        l.nop
        l.addi  r2,r0,0x100
        l.addi  r2,r0,0x100
        l.jr    r2
        l.jr    r2
        l.addi  r2,r0,0
        l.addi  r2,r0,0
init_mc:
init_mc:
        l.movhi r3,hi(MC_BASE_ADD)
        l.movhi r3,hi(MC_BASE_ADD)
        l.ori   r3,r3,lo(MC_BASE_ADD)
        l.ori   r3,r3,lo(MC_BASE_ADD)
        l.addi  r4,r3,MC_CSC(0)
        l.addi  r4,r3,MC_CSC(0)
        l.movhi r5,hi(FLASH_BASE_ADD)
        l.movhi r5,hi(FLASH_BASE_ADD)
        l.srai  r5,r5,5
        l.srai  r5,r5,5
        l.ori   r5,r5,0x0025
        l.ori   r5,r5,0x0025
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.addi  r4,r3,MC_TMS(0)
        l.addi  r4,r3,MC_TMS(0)
        l.movhi r5,hi(FLASH_TMS_VAL)
        l.movhi r5,hi(FLASH_TMS_VAL)
        l.ori   r5,r5,lo(FLASH_TMS_VAL)
        l.ori   r5,r5,lo(FLASH_TMS_VAL)
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.addi  r4,r3,MC_BA_MASK
        l.addi  r4,r3,MC_BA_MASK
        l.addi  r5,r0,MC_MASK_VAL
        l.addi  r5,r0,MC_MASK_VAL
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.addi  r4,r3,MC_CSR
        l.addi  r4,r3,MC_CSR
        l.movhi r5,hi(MC_CSR_VAL)
        l.movhi r5,hi(MC_CSR_VAL)
        l.ori   r5,r5,lo(MC_CSR_VAL)
        l.ori   r5,r5,lo(MC_CSR_VAL)
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.addi  r4,r3,MC_TMS(1)
        l.addi  r4,r3,MC_TMS(1)
        l.movhi r5,hi(SDRAM_TMS_VAL)
        l.movhi r5,hi(SDRAM_TMS_VAL)
        l.ori   r5,r5,lo(SDRAM_TMS_VAL)
        l.ori   r5,r5,lo(SDRAM_TMS_VAL)
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.addi  r4,r3,MC_CSC(1)
        l.addi  r4,r3,MC_CSC(1)
        l.movhi r5,hi(SDRAM_BASE_ADD)
        l.movhi r5,hi(SDRAM_BASE_ADD)
        l.srai  r5,r5,5
        l.srai  r5,r5,5
        l.ori   r5,r5,0x0411
        l.ori   r5,r5,0x0411
        l.sw    0(r4),r5
        l.sw    0(r4),r5
        l.jr    r9
        l.jr    r9
        l.nop
        l.nop
_ic_enable:
_ic_enable:
        /* Disable IC */
        /* Disable IC */
        l.mfspr r13,r0,SPR_SR
        l.mfspr r13,r0,SPR_SR
        l.addi  r11,r0,-1
        l.addi  r11,r0,-1
        l.xori  r11,r11,SPR_SR_ICE
        l.xori  r11,r11,SPR_SR_ICE
        l.and   r11,r13,r11
        l.and   r11,r13,r11
        l.mtspr r0,r11,SPR_SR
        l.mtspr r0,r11,SPR_SR
        /* Invalidate IC */
        /* Invalidate IC */
        l.addi  r13,r0,0
        l.addi  r13,r0,0
        l.addi  r11,r0,IC_SIZE
        l.addi  r11,r0,IC_SIZE
1:
1:
        l.mtspr r0,r13,SPR_ICBIR
        l.mtspr r0,r13,SPR_ICBIR
        l.sfne  r13,r11
        l.sfne  r13,r11
        l.bf    1b
        l.bf    1b
        l.addi  r13,r13,IC_LINE
        l.addi  r13,r13,IC_LINE
        /* Enable IC */
        /* Enable IC */
        l.mfspr r13,r0,SPR_SR
        l.mfspr r13,r0,SPR_SR
        l.ori   r13,r13,SPR_SR_ICE
        l.ori   r13,r13,SPR_SR_ICE
        l.mtspr r0,r13,SPR_SR
        l.mtspr r0,r13,SPR_SR
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.nop
        l.jr    r9
        l.jr    r9
        l.nop
        l.nop
        .global __print
        .global __print
__print:
__print:
        l.lwz   r3,0(r1)
        l.lwz   r3,0(r1)
        l.addi  r4,r1,4
        l.addi  r4,r1,4
#       l.sys   202
#       l.sys   202
        l.nop 3
        l.nop 3
        l.jr    r9
        l.jr    r9
        l.nop
        l.nop
 
 

powered by: WebSVN 2.1.0

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