URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [branches/] [stable_0_2_x/] [or1ksim/] [testbench/] [cache_asm.S] - Rev 621
Go to most recent revision | Compare with Previous | Blame | View Log
#include "spr_defs.h"
#define IC_ENABLE 0
#define DC_ENABLE 0
.global _ic_enable
.global _ic_disable
.global _dc_enable
.global _dc_disable
.global _dc_inv
.global _ic_inv_test
.global _dc_inv_test
_ic_enable:
/* Disable IC */
l.mfspr r13,r0,SPR_SR
l.addi r11,r0,-1
l.xori r11,r11,SPR_SR_ICE
l.and r11,r13,r11
l.mtspr r0,r11,SPR_SR
/* Invalidate IC */
l.addi r13,r0,0
l.addi r11,r0,8192
1:
l.mtspr r0,r13,SPR_ICBIR
l.sfne r13,r11
l.bf 1b
l.addi r13,r13,16
/* Enable IC */
l.mfspr r13,r0,SPR_SR
l.ori r13,r13,SPR_SR_ICE
l.mtspr r0,r13,SPR_SR
l.nop
l.nop
l.nop
l.nop
l.nop
l.jr r9
l.nop
_ic_disable:
/* Disable IC */
l.mfspr r13,r0,SPR_SR
l.addi r11,r0,-1
l.xori r11,r11,SPR_SR_ICE
l.and r11,r13,r11
l.mtspr r0,r11,SPR_SR
l.jr r9
l.nop
_dc_enable:
/* Disable DC */
l.mfspr r13,r0,SPR_SR
l.addi r11,r0,-1
l.xori r11,r11,SPR_SR_DCE
l.and r11,r13,r11
l.mtspr r0,r11,SPR_SR
/* Flush DC */
l.addi r13,r0,0
l.addi r11,r0,8192
1:
l.mtspr r0,r13,SPR_DCBIR
l.sfne r13,r11
l.bf 1b
l.addi r13,r13,16
/* Enable DC */
l.mfspr r13,r0,SPR_SR
l.ori r13,r13,SPR_SR_DCE
l.mtspr r0,r13,SPR_SR
l.jr r9
l.nop
_dc_disable:
/* Disable DC */
l.mfspr r13,r0,SPR_SR
l.addi r11,r0,-1
l.xori r11,r11,SPR_SR_DCE
l.and r11,r13,r11
l.mtspr r0,r11,SPR_SR
l.jr r9
l.nop
_dc_inv:
l.mfspr r4,r0,SPR_SR
l.addi r5,r0,-1
l.xori r5,r5,SPR_SR_DCE
l.and r5,r4,r5
l.mtspr r0,r5,SPR_SR
l.mtspr r0,r3,SPR_DCBIR
l.mtspr r0,r4,SPR_SR
l.jr r9
l.nop
.align 0x10
_ic_inv_test:
l.movhi r7,hi(_ic_test_1)
l.ori r7,r7,lo(_ic_test_1)
l.addi r3,r0,0
l.addi r4,r0,0
l.addi r5,r0,0
l.nop
l.nop
l.nop
_ic_test_1:
3: l.addi r3,r3,1
l.sfeqi r4,0x01
l.bnf 1f
l.nop
l.mfspr r8,r0,SPR_SR
l.addi r11,r0,-1
l.xori r11,r11,SPR_SR_ICE
l.and r11,r8,r11
l.mtspr r0,r11,SPR_SR
l.mtspr r0,r7,SPR_ICBIR
l.mtspr r0,r8,SPR_SR
l.bf 2f
l.nop
1: l.lwz r6,0(r7)
l.addi r6,r6,1
l.sw 0(r7),r6
2: l.addi r5,r5,1
l.sfeqi r5,10
l.bnf 3b
l.xori r4,r4,0x01
l.addi r11,r3,0
l.jr r9
l.nop
_dc_inv_test:
l.movhi r4,hi(0x08040201)
l.ori r4,r4,lo(0x08040201)
l.sw 0x00(r3),r4
l.slli r4,r4,1
l.sw 0x14(r3),r4
l.slli r4,r4,1
l.sw 0x28(r3),r4
l.addi r8,r9,0
l.jal _dc_enable
l.nop
l.addi r9,r8,0
l.lbz r4,0x03(r3)
l.lhz r5,0x16(r3)
l.add r4,r4,r5
l.lwz r5,0x28(r3)
l.add r4,r4,r5
l.mfspr r6,r0,SPR_SR
l.addi r5,r0,-1
l.xori r5,r5,SPR_SR_DCE
l.and r5,r6,r5
l.mtspr r0,r5,SPR_SR
l.addi r7,r3,0x10
l.mtspr r0,r7,SPR_DCBIR
l.lwz r5,0(r3)
l.slli r5,r5,3
l.sw 0x00(r3),r5
l.slli r5,r5,1
l.sw 0x14(r3),r5
l.slli r5,r5,1
l.sw 0x28(r3),r5
l.mtspr r0,r6,SPR_SR
l.lbz r5,0x03(r3)
l.add r4,r4,r5
l.lhz r5,0x16(r3)
l.add r4,r4,r5
l.lwz r5,0x28(r3)
l.add r4,r4,r5
l.addi r5,r0,-1
l.xori r5,r5,SPR_SR_DCE
l.and r5,r6,r5
l.mtspr r0,r5,SPR_SR
l.addi r11,r4,0x0
1:
l.jr r9
l.nop
Go to most recent revision | Compare with Previous | Blame | View Log