URL
https://opencores.org/ocsvn/eco32/eco32/trunk
Subversion Repositories eco32
Compare Revisions
- This comparison shows the changes necessary to convert path
/eco32/tags/eco32-0.23/hwtests/memtest2
- from Rev 140 to Rev 157
- ↔ Reverse comparison
Rev 140 → Rev 157
/README
0,0 → 1,3
This is a memory test. It takes a while to run the test. At the end, |
a single dot ('.') is sent on serial line 0 to indicate success, or |
a question mark ('?') for failure. |
/Makefile
0,0 → 1,27
# |
# Makefile for memtest2 ROM |
# |
|
BUILD = ../../build |
|
.PHONY: all install run clean |
|
all: memtest2.exo |
|
install: memtest2.exo |
|
memtest2.exo: memtest2.bin |
$(BUILD)/bin/bin2exo -S2 0 memtest2.bin memtest2.exo |
|
memtest2.bin: memtest2.o |
$(BUILD)/bin/ld -h -rc 0xE0000000 \ |
-o memtest2.bin memtest2.o |
|
memtest2.o: memtest2.s |
$(BUILD)/bin/as -o memtest2.o memtest2.s |
|
run: memtest2.bin |
$(BUILD)/bin/sim -i -t 1 -r memtest2.bin |
|
clean: |
rm -f *~ memtest2.o memtest2.bin memtest2.exo |
/memtest2.s
0,0 → 1,169
; |
; memtest2.s -- memory test |
; |
|
; $2 temporary |
; $3 tbl address |
; $4 mem address |
; $5 tbl count |
; $6 mem count |
; $7 error |
; $8 I/O base |
; $9 value read |
; $10 reference value |
|
.set mem_base,0xC0000000 |
.set mem_size,1024*1024 |
.set io_base,0xF0300000 |
|
; |
; write memory |
; |
write: |
add $4,$0,mem_base |
add $6,$0,mem_size |
add $3,$0,tbl |
add $5,$0,257 |
wrloop: |
ldbu $2,$3,0 |
stb $2,$4,0 |
add $3,$3,1 |
sub $5,$5,1 |
bne $5,$0,wrloop1 |
add $3,$0,tbl |
add $5,$0,257 |
wrloop1: |
add $4,$4,1 |
sub $6,$6,1 |
bne $6,$0,wrloop |
; |
; read memory |
; |
read: |
add $4,$0,mem_base |
add $6,$0,mem_size |
add $3,$0,tbl |
add $5,$0,257 |
add $7,$0,0 |
rdloop: |
; always check byte |
byte: |
ldbu $9,$4,0 |
ldbu $10,$3,0 |
beq $9,$10,byteok |
add $7,$0,1 |
byteok: |
; possibly check halfword |
half: |
and $2,$4,1 |
bne $2,$0,halfok |
ldhu $9,$4,0 |
ldbu $10,$3,0 |
jal shft8 |
ldbu $2,$3,1 |
or $10,$10,$2 |
beq $9,$10,halfok |
add $7,$0,1 |
halfok: |
; possibly check word |
word: |
and $2,$4,3 |
bne $2,$0,wordok |
ldw $9,$4,0 |
ldbu $10,$3,0 |
jal shft8 |
ldbu $2,$3,1 |
or $10,$10,$2 |
jal shft8 |
ldbu $2,$3,2 |
or $10,$10,$2 |
jal shft8 |
ldbu $2,$3,3 |
or $10,$10,$2 |
beq $9,$10,wordok |
add $7,$0,1 |
wordok: |
; next address |
add $3,$3,1 |
sub $5,$5,1 |
bne $5,$0,rdloop1 |
add $3,$0,tbl |
add $5,$0,257 |
rdloop1: |
add $4,$4,1 |
sub $6,$6,1 |
bne $6,$0,rdloop |
; |
; show result |
; |
bne $7,$0,error |
ok: |
add $7,$0,'.' |
jal out |
j halt |
error: |
add $7,$0,'?' |
jal out |
j halt |
; |
; finally, halt |
; |
halt: |
j halt |
|
shft8: |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
add $10,$10,$10 |
jr $31 |
|
out: |
add $8,$0,io_base |
out1: |
ldw $9,$8,8 |
and $9,$9,1 |
beq $9,$0,out1 |
stw $7,$8,12 |
jr $31 |
|
tbl: |
.byte 0x45,0x23,0x98,0x48,0xDC,0x5C,0x94,0x58 |
.byte 0x1F,0x7C,0x58,0xD7,0x41,0x1E,0xA9,0xE1 |
.byte 0x00,0x62,0x08,0x27,0x23,0xE9,0xCD,0x43 |
.byte 0x0F,0x25,0xF9,0x72,0xC2,0xD7,0xC4,0x07 |
.byte 0xFB,0x5D,0x50,0xD7,0xBA,0xE4,0x30,0xD9 |
.byte 0x61,0x89,0xB1,0xA3,0xA8,0x5A,0x84,0xA8 |
.byte 0xBD,0x8C,0xD0,0xE0,0x76,0x9E,0x24,0x86 |
.byte 0xC4,0x1D,0xF8,0x86,0xF5,0xBD,0x8D,0xF0 |
.byte 0x1A,0xDD,0xC8,0xD4,0xC2,0xF8,0xAD,0x23 |
.byte 0x82,0x5F,0xC6,0x2A,0xB9,0x4A,0xD3,0x77 |
.byte 0xD7,0xA4,0x58,0x4E,0x42,0x7C,0xD4,0x06 |
.byte 0x9A,0xCC,0x8D,0x8F,0x89,0x1B,0x7F,0xA4 |
.byte 0xF9,0x48,0x78,0xBB,0x40,0x26,0xDE,0xC3 |
.byte 0x85,0xA5,0xED,0x3F,0xF0,0xC1,0xB7,0xC7 |
.byte 0x65,0x0F,0x15,0xA8,0x8C,0xE9,0xAF,0x26 |
.byte 0xB6,0x3C,0xB6,0x40,0x57,0x35,0xE4,0x50 |
.byte 0x7E,0x5D,0x0B,0xBF,0x84,0xEA,0x82,0x0A |
.byte 0x8F,0x70,0x4A,0x7F,0x31,0x02,0x47,0x96 |
.byte 0x12,0x5D,0x3F,0x9E,0x47,0xEE,0xC5,0xFD |
.byte 0x2B,0x7B,0x3E,0x82,0xB1,0x23,0xD3,0x2F |
.byte 0x81,0xDF,0xEE,0x06,0xCA,0x70,0x11,0x59 |
.byte 0xE0,0x5B,0xD9,0x11,0x5E,0x21,0xA8,0x70 |
.byte 0x7E,0xE7,0x0E,0xC5,0xD6,0xD4,0xC3,0x01 |
.byte 0x4F,0x01,0x84,0x01,0x24,0x57,0x30,0xA5 |
.byte 0x37,0x1E,0xAC,0x01,0x8F,0xBD,0x5A,0x70 |
.byte 0x18,0x34,0x82,0x77,0x55,0x2A,0xE7,0xD3 |
.byte 0x12,0xF6,0x99,0xE8,0xCA,0x5C,0xEA,0x1A |
.byte 0x5D,0x6E,0x1B,0x82,0xC5,0x4B,0x28,0xFD |
.byte 0x6A,0xD4,0xFE,0xFA,0x91,0x59,0x6A,0xAA |
.byte 0x8D,0xEC,0x21,0xE3,0x17,0x09,0xB7,0x29 |
.byte 0xFF,0x50,0x12,0xC9,0xAC,0xFC,0xE3,0x0A |
.byte 0x6B,0xFF,0x8D,0x31,0x4A,0xB5,0x2E,0xB5 |
.byte 0x8A |
augment: |
.byte 0x45,0x23,0x98 |