You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2168 lines
40 KiB

#if 0
TTYDBG("Write 0x90000f00000000 s\r\n")
dli t0 , 0x900000003ff02000
dli a0, 0x0000100000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02040
dli a0, 0xfffff00000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02080
dli a0, 0x00001000000000f0
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02008
dli a0, 0x0000200000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02048
dli a0, 0xffffe00000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02088
dli a0, 0x00002000000000f0
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02010
dli a0, 0x0000000010000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02050
dli a0, 0xfffffffffc000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02090
dli a0, 0x00000e0000000087
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02018
dli a0, 0x0000000010000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02058
dli a0, 0xfffffffff8000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02098
dli a0, 0x00000e0010000087
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02020
dli a0, 0x000000001a000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02060
dli a0, 0xffffffffff000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff020a0
dli a0, 0x00000efdfc000087
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02028
dli a0, 0x00000e0000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02068
dli a0, 0xffffff0000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff020a8
dli a0, 0x00000e0000000087
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02030
dli a0, 0x00000c0000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02070
dli a0, 0xfffffc0000000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff020b0
dli a0, 0x00000c00000000f0
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02038
dli a0, 0x000000001b000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff02078
dli a0, 0xffffffffff000000
sd a0, 0x0(t0)
dli t0 , 0x900000003ff020b8
dli a0, 0x00000efdfb000087
sd a0, 0x0(t0)
// dli t0, 0x9000000000000000
// ld a0, 0x0(t0)
// dli t0, 0x9000020000000000
// ld a0, 0x0(t0)
// dli t0, 0x9000040000000000
// ld a0, 0x0(t0)
// dli t0, 0x9000060000000000
// ld a0, 0x0(t0)
// dli t0, 0x9000080000000000
// ld a0, 0x0(t0)
// dli t0, 0x90000a0000000000
// ld a0, 0x0(t0)
// dli t0, 0x90000c0000000000
// ld a0, 0x0(t0)
// dli t0, 0x90000d0000000000
// ld a0, 0x0(t0)
// dli t0, 0x90000e0000000000
// ld a0, 0x0(t0)
// dli t0, 0x90000f0000000000
// ld a0, 0x0(t0)
// dli t0, 0x9800000000000000
// ld a0, 0x0(t0)
// dli t0, 0x9800020000000000
// ld a0, 0x0(t0)
// dli t0, 0x9800040000000000
// ld a0, 0x0(t0)
// dli t0, 0x9800060000000000
// ld a0, 0x0(t0)
// dli t0, 0x9800080000000000
// ld a0, 0x0(t0)
// dli t0, 0x98000a0000000000
// ld a0, 0x0(t0)
// dli t0, 0x98000c0000000000
// ld a0, 0x0(t0)
// dli t0, 0x98000d0000000000
// ld a0, 0x0(t0)
// dli t0, 0x98000e0000000000
// ld a0, 0x0(t0)
// dli t0, 0x98000f0000000000
// ld a0, 0x0(t0)
dli t0, 0x98000f0000000000
1:
ld a0, 0x0(t0)
bal hexserial
nop
li a0, 0x100000
dadd t0, t0, a0
TTYDBG("\r\n")
b 1b
nop
#endif
#if 0
TTYDBG("Write all 0s\r\n")
//Write all 00000000
li t0, 0xa0000000
li a0, 0x0
li t2, 0xa0000020
1:
sw t0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000000
li a0, 0xffffffff
li t2, 0xa0000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000000
li a0, 0xffffffff
li t2, 0x80000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
#endif
#if 0 /* write and read whd */
TTYDBG("Write and write\r\n")
li t0, 0xa0010000
//li t1, 0x12345678
//li t1, 0x40806000
li t1, 0x0
li t2, 0x0
lw a0, 0x0(t0)
bal hexserial
nop
TTYDBG("\r\n")
1:
//addi t1, t1, 0x1
addi t2, t2, 0x1
sw t1, 0x0(t0)
lw a0, 0x0(t0)
beq t1, a0, 1b
nop
bal hexserial
nop
TTYDBG(" ")
move a0, t2
bal hexserial
nop
TTYDBG("\r\n")
b 1b
nop
#endif
#if 0
uncache_test:
//UNCACHE WRITE whd
TTYDBG("Write all address\r\n")
//Write all 00000000
22:
li t0, 0xa0001400
li a0, 0x0
li t2, 0xa0001420
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
//b 22b
nop
#if 1 /* write 420 */
//Write all 00000000
li t0, 0xa0001420
li a0, 0x0
li t2, 0xa0001440
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
#endif
//Read
TTYDBG(" ")
li t0, 0xa0001400
li a0, 0xffffffff
li t2, 0xa0001420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG(" \r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next cached\r\n")
//Read
TTYDBG(" ")
li t0, 0x80001400
li a0, 0xffffffff
li t2, 0x80001420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next 420\r\n")
/*
li t0, 0x80001400
cache 23, 0x0(t0)
nop
sync
nop
*/
#if 1 /* write 440 */
//Read
TTYDBG(" ")
li t0, 0xa0001420
li a0, 0xffffffff
li t2, 0xa0001440
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
//Write all 00000000
li t0, 0xa0001440
li a0, 0x0
li t2, 0xa0001460
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
TTYDBG("Next 440\r\n")
//Read
TTYDBG(" ")
li t0, 0xa0001440
li a0, 0xffffffff
li t2, 0xa0001460
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
#endif
2:
b uncache_test
nop
#endif
#if 0 //LOOP whd
33:
li t0, 0x80000400
li a0, 0x0
li t2, 0x80000420
1:
#if 1
li a0, 0xffffffff
sw a0, 0x0(t0)
li a0, 0xffffffff
sw a0, 0x4(t0)
li a0, 0x00000000
sw a0, 0x8(t0)
li a0, 0x00000000
sw a0, 0xc(t0)
li a0, 0xffffffff
sw a0, 0x10(t0)
li a0, 0xffffffff
sw a0, 0x14(t0)
li a0, 0x00000000
sw a0, 0x18(t0)
li a0, 0x00000000
sw a0, 0x1c(t0)
#else
li a0, 0x03508023
sw a0, 0x0(t0)
li a0, 0x3c01ffff
sw a0, 0x4(t0)
li a0, 0x02018024
sw a0, 0x8(t0)
li a0, 0x3c080040
sw a0, 0xc(t0)
li a0, 0x03508023
sw a0, 0x10(t0)
li a0, 0x3c01ffff
sw a0, 0x14(t0)
li a0, 0x02018024
sw a0, 0x18(t0)
li a0, 0x3c080040
sw a0, 0x1c(t0)
/*
li a0, 0x0
sw a0, 0x0(t0)
sw a0, 0x4(t0)
li a0, 0xffffffff
sw a0, 0x8(t0)
sw a0, 0xc(t0)
li a0, 0x0
sw a0, 0x10(t0)
sw a0, 0x14(t0)
li a0, 0xffffffff
sw a0, 0x18(t0)
sw a0, 0x1c(t0)
*/
#endif
//addi t0, 4
//bne t0, t2, 1b
//nop
li t0, 0x80000400
cache 23, 0x0(t0) //HitWBInvalidate_S
#if 1
b 33b
nop
#else
sync
nop
li t0, 0x80000400
li a1, 0x03508023
lw a0, 0x0(t0)
bne a0, a1, 1f
nop
li a1, 0x3c01ffff
lw a0, 0x4(t0)
bne a0, a1, 1f
nop
li a1, 0x02018024
lw a0, 0x8(t0)
bne a0, a1, 1f
nop
li a1, 0x3c080040
lw a0, 0xc(t0)
bne a0, a1, 1f
nop
b 2f
nop
1:
bal hexserial
nop
2:
TTYDBG(".")
b 33b
nop
#endif
#endif
#if 0
//CACHE WRITE whd
TTYDBG("Write all address\r\n")
//Write all 00000000
li t0, 0x80000400
li a0, 0x0
li t2, 0x80000420
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
li t0, 0x80000400
cache 23, 0x0(t0) //HitWBInvalidate_S
#if 1 /* write 420 */
//Write all 00000000
li t0, 0x80000420
li a0, 0x0
li t2, 0x80000440
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
li t0, 0x80000420
cache 23, 0x0(t0) //HitWBInvalidate_S
#endif
//Read
TTYDBG(" ")
li t0, 0xa0000400
li a0, 0xffffffff
li t2, 0xa0000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG(" \r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next cached\r\n")
//Read
TTYDBG(" ")
li t0, 0x80000400
li a0, 0xffffffff
li t2, 0x80000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next 420\r\n")
//Read
TTYDBG(" ")
li t0, 0x80000420
li a0, 0xffffffff
li t2, 0x80000440
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
#if 1 /* write 440 */
//Write all 00000000
li t0, 0x80000440
li a0, 0x0
li t2, 0x80000460
1:
andi a0, t0, 0xff
sll a1, a0, 8
or a1, a0, a1
sll a0, a1, 16
or a0, a0, a1
sw a0, 0x0(t0)
addi t0, 4
bne t0, t2, 1b
nop
li t0, 0x80000440
cache 23, 0x0(t0) //HitWBInvalidate_S
#endif
TTYDBG("Next 440\r\n")
//Read
TTYDBG(" ")
li t0, 0x80000440
li a0, 0xffffffff
li t2, 0x80000460
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
2:
//#define ENDLESS_READ
#ifdef ENDLESS_READ
li t0, 0x80000400
cache 23, 0x0(t0) //HitWBInvalidate_S
li t0, 0x80000420
cache 23, 0x0(t0) //HitWBInvalidate_S
li t0, 0x80000440
cache 23, 0x0(t0) //HitWBInvalidate_S
//li t1, 0x3fffffff #360Mhz
li t1, 0x1fffffff #750Mhz
//li t1, 0x1ffffff #24Mhz
1:
bnez t1, 1b
addi t1, t1, -1
//Read
TTYDBG("\r\n\n\nENDLESS READ\r\n")
TTYDBG(" ")
li t0, 0x80000400
li a0, 0xffffffff
li t2, 0x80000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next 420\r\n")
//Read
TTYDBG(" ")
li t0, 0x80000420
li a0, 0xffffffff
li t2, 0x80000440
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
TTYDBG("Next 440\r\n")
//Read
TTYDBG(" ")
li t0, 0x80000440
li a0, 0xffffffff
li t2, 0x80000460
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
andi a0, t0, 0x4
bnez a0, 11f
TTYDBG("\r\n")
11:
TTYDBG(" ")
bne t0, t2, 1b
nop
#endif
b 2b
nop
#endif
//memory pattern test whd
#if 0
TTYDBG("Write all 0s\r\n")
//Write all 00000000
li t0, 0xa0000000
li a0, 0x0
li t2, 0xa0000020
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000000
li a0, 0xffffffff
li t2, 0xa0000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000000
li a0, 0xffffffff
li t2, 0xa0000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a FFFFFF to 0x0\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000000
li a0, 0xffffffff
sw a0, 0x0(t0)
//Read
li t0, 0xa0000000
li a0, 0xffffffff
li t2, 0xa0000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000000
li a0, 0xffffffff
li t2, 0x80000020
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all FFFFFFFs\r\n")
//Write all FFFFFFF
li t0, 0xa0000100
li a0, 0xffffffff
li t2, 0xa0000120
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000100
li a0, 0xffffffff
li t2, 0xa0000120
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000100
li a0, 0xffffffff
li t2, 0xa0000120
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 0 to 0x4\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000100
li a0, 0x0
sw a0, 0x4(t0)
//Read
li t0, 0xa0000100
li a0, 0xffffffff
li t2, 0xa0000120
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000100
li a0, 0xffffffff
li t2, 0x80000120
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("\r\nWrite all 1s\r\n")
//Write all 00000000
li t0, 0xa0000200
li a0, 0x11111111
li t2, 0xa0000220
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000200
li a0, 0xffffffff
li t2, 0xa0000220
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000200
li a0, 0xffffffff
li t2, 0xa0000220
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 22222222 to 0x8\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000200
li a0, 0x22222222
sw a0, 0x8(t0)
//Read
li t0, 0xa0000200
li a0, 0xffffffff
li t2, 0xa0000220
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000200
li a0, 0xffffffff
li t2, 0x80000220
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all 4s\r\n")
//Write all 00000000
li t0, 0xa0000300
li a0, 0x44444444
li t2, 0xa0000320
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000300
li a0, 0xffffffff
li t2, 0xa0000320
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 33333333 to 0xC\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000300
li a0, 0x33333333
sw a0, 0xc(t0)
//Read
li t0, 0xa0000300
li a0, 0xffffffff
li t2, 0xa0000320
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000300
li a0, 0xffffffff
li t2, 0x80000320
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all 8s\r\n")
//Write all 00000000
li t0, 0xa0000400
li a0, 0x88888888
li t2, 0xa0000420
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000400
li a0, 0xffffffff
li t2, 0xa0000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 77777777 to 0x10\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000400
li a0, 0x77777777
sw a0, 0x10(t0)
//Read
li t0, 0xa0000400
li a0, 0xffffffff
li t2, 0xa0000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000400
li a0, 0xffffffff
li t2, 0x80000420
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all 6666666s\r\n")
//Write all 00000000
li t0, 0xa0000600
li a0, 0x66666666
li t2, 0xa0000620
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000600
li a0, 0xffffffff
li t2, 0xa0000620
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a aaaaaaaa to 0x14\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000600
li a0, 0xaaaaaaaa
sw a0, 0x14(t0)
//Read
li t0, 0xa0000600
li a0, 0xffffffff
li t2, 0xa0000620
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000600
li a0, 0xffffffff
li t2, 0x80000620
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all 9999999s\r\n")
//Write all 00000000
li t0, 0xa0000700
li a0, 0x99999999
li t2, 0xa0000720
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000700
li a0, 0xffffffff
li t2, 0xa0000720
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 66666666 to 0x18\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000700
li a0, 0x66666666
sw a0, 0x18(t0)
//Read
li t0, 0xa0000700
li a0, 0xffffffff
li t2, 0xa0000720
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000700
li a0, 0xffffffff
li t2, 0x80000720
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write all ccccccs\r\n")
//Write all 00000000
li t0, 0xa0000800
li a0, 0xcccccccc
li t2, 0xa0000820
1:
sw t0, 0x0(t0)
addi t0, 0x4
bne t0, t2, 1b
nop
//Read
li t0, 0xa0000800
li a0, 0xffffffff
li t2, 0xa0000820
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
TTYDBG("Write a 33333333 to 0x1c\r\n")
//Write a FFFFFFF to 0x0
li t0, 0xa0000800
li a0, 0x33333333
sw a0, 0x1c(t0)
//Read
li t0, 0xa0000800
li a0, 0xffffffff
li t2, 0xa0000820
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
//Read
li t0, 0x80000800
li a0, 0xffffffff
li t2, 0x80000820
1:
lw a0, 0x0(t0)
addi t0, 0x4
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, 1b
nop
#endif
#if 0 /* read ddr registers */
dli t2, 0x900000000ff00000
dli t0, 0x900000000fff0000
1:
ld a0, 0x0(t2)
bal hexserial
nop
TTYDBG("\r\n")
daddi t2, 0x8
bne t2, t0, 1b
nop
#endif
#if 1 //all space scan whd
//#define SPACE_1G
#define SPACE_2G
#ifdef 0
//OPEN WINDOWS 256-512M @ 0x20000000
dli t2, 0x900000003ff00000
dli t0, 0x20000000
sd t0, 0x10(t2)
dli t0, 0xfffffffff0000000
sd t0, 0x50(t2)
dli t0, 0x100000f1
sd t0, 0x90(t2)
//OPEN WINDOWS 512M-1G @ 0x40000000
dli t2, 0x900000003ff00000
dli t0, 0x40000000
sd t0, 0x18(t2)
dli t0, 0xffffffffe0000000
sd t0, 0x58(t2)
dli t0, 0x200000f1
sd t0, 0x98(t2)
#endif
#if 0 /* print routing table */
TTYDBG("Windows config table\r\n")
dli t2, 0x900000003ff00000
dli t0, 0x900000003ff00100
1:
ld t1, 0x0(t2)
dsrl a0, t1, 32
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
daddi t2, t2, 8
bne t2, t0, 1b
nop
TTYDBG("Windows config table\r\n")
dli t2, 0x900000003ff02000
dli t0, 0x900000003ff02100
1:
ld t1, 0x0(t2)
dsrl a0, t1, 32
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
daddi t2, t2, 8
bne t2, t0, 1b
nop
#endif
TTYDBG("Space init begin\r\n")
#if 1
dli t2, 0x9000000000000000
dli t0, 0x9000000010000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 0 - 256M Done\r\n")
#endif
//#if 1
//
#ifdef SPACE_2G
dli t2, 0x9000000090000000
dli t0, 0x9000000100000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 256 - 2G Done\r\n")
#else
#ifdef SPACE_1G
dli t2, 0x9000000050000000
dli t0, 0x9000000080000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 256 - 1G Done\r\n")
#else
dli t2, 0x9000000020000000
dli t0, 0x9000000030000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 256 - 512M Done\r\n")
dli t2, 0x9000000040000000
dli t0, 0x9000000060000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 512M - 1G Done\r\n")
dli t2, 0x9000000060000000
dli t0, 0x90000000a0000000
1:
sd t2, 0x0(t2)
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space init 1G - 2G Done\r\n")
#endif
#endif
TTYDBG("Space scan begin\r\n")
dli t2, 0x9000000000000000
dli t0, 0x9000000010000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 0 - 256M Done\r\n")
#ifdef SPACE_2G
dli t2, 0x9000000090000000
dli t0, 0x9000000100000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 256 - 2G Done\r\n")
#else
#ifdef SPACE_1G
dli t2, 0x9000000050000000
dli t0, 0x9000000080000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 256 - 1G Done\r\n")
#else
dli t2, 0x9000000020000000
dli t0, 0x9000000030000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 256 - 512M Done\r\n")
dli t2, 0x9000000040000000
dli t0, 0x9000000060000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 512M - 1G Done\r\n")
dli t2, 0x9000000060000000
dli t0, 0x90000000a0000000
1:
ld a1, 0x0(t2)
bne a1, t2, scan_error
nop
daddi t2, 0x8
bne t2, t0, 1b
nop
TTYDBG("Space Done 1G - 2G Done\r\n")
#endif
#endif
b 2f
nop
scan_error:
dsrl a0, a1, 32
bal hexserial
nop
move a0, a1
bal hexserial
nop
TTYDBG(" Correct Vaule : ")
dsrl a0, t2, 32
bal hexserial
nop
move a0, t2
bal hexserial
nop
1:
b 1b
nop
2:
#endif
//memory test cuckoo
#if 0
li t0,0xa0000000
//li t1,0xa55aa55a
li t1,0xffffffff
li t2,0xa0100000
write:
sw t0,0x0(t0)
addi t0,t0,0x4
//li t0,0xa0000100
//not t1
//sd t1,0x0(t0)
bne t0, t2, write
nop
TTYDBG("init memory done\r\n")
//TTYDBG("init memory done\r\n")
1:
li t0,0xa0000000
li t2,0xa0010000
read:
lw t1,0x0(t0)
//bne t1, t0, display
//nop
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
lw t1,0x0(t0)
addi t0,t0,0x4
//lw a0,0x0(t0)
move a0,t1
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t2, read
nop
b endtest
nop
//li t0,0xa0000100
//lw t2,0x0(t0)
display:
move a0,t0
//lw a0,0x0(t0)
bal hexserial
nop
move a0,t1
//lw a0,0x0(t0)
bal hexserial
nop
TTYDBG("\r\n")
b read
nop
1:
b 1b
nop
#endif
/*
li t0, 0x80000000+1*1024*16//1024
li t1, 0x80000000
li t2, 0xffffffff
sw t2, 0(t1)
*/
endtest:
/* zhb */
#if 0
TTYDBG("Testing memory...\r\n")
li t7, 1
tmem:
#if 0//whd cache uncache test
/*
2:
li t0, 0xa0000000+1*1024*16//1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
addi t1, 4
bne t1, t0, 1b
nop
TTYDBG("write uncache ok\r\n")
li t0, 0x80000000+1*1024*16//1024
li t1, 0x80000000
li t2, 0
2: sw t2, 0(t1)
addi t1, 4
bne t1, t0, 2b
nop
TTYDBG("write cache ok\r\n")
li t0, 0x80000000+1*1024*16//1024
li t1, 0x80000000
li t2, 0xffffffff
3:
beq t1, t0, 2f
nop
lw a0, 0(t1)
addi t1, 4
//beq a0, t2, 3b
beqz a0, 3b
nop
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
b 3b
nop
2:
li t0, 0xa0000000+1*1024*18//1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
addi t1, 4
bne t1, t0, 1b
nop
TTYDBG("write uncache ok,130\r\n")
li t0, 0x80000000+1*1024*18//1024
li t1, 0x80000000
li t2, 0
2: sw t2, 0(t1)
addi t1, 4
bne t1, t0, 2b
nop
TTYDBG("write cache ok\r\n")
li t0, 0x80000000+1*1024*18//1024
li t1, 0x80000000
li t2, 0xffffffff
3:
beq t1, t0, 2f
nop
lw a0, 0(t1)
addi t1, 4
//beq a0, t2, 3b
beqz a0, 3b
nop
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
b 3b
nop
2:
li t0, 0xa0000000+1*1024*256//1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
addi t1, 4
bne t1, t0, 1b
nop
TTYDBG("write uncache ok 256\r\n")
li t0, 0x80000000+1*1024*256//1024
li t1, 0x80000000
li t2, 0
2: sw t2, 0(t1)
addi t1, 4
bne t1, t0, 2b
nop
TTYDBG("write cache ok\r\n")
li t0, 0x80000000+1*1024*256//1024
li t1, 0x80000000
li t2, 0xffffffff
3:
beq t1, t0, 2f
nop
lw a0, 0(t1)
addi t1, 4
//beq a0, t2, 3b
beqz a0, 3b
nop
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
b 3b
nop
*/
2:
li t0, 0xa0000000+1*1024*512//1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
addi t1, 4
bne t1, t0, 1b
nop
TTYDBG("write uncache ok\r\n")
li t0, 0x80000000+1*1024*512//1024
li t1, 0x80000000
li t2, 0
2: sw t2, 0(t1)
addi t1, 4
bne t1, t0, 2b
nop
TTYDBG("write cache ok\r\n")
li t0, 0x80000000+1*1024*512//1024
li t1, 0x80000000
li t2, 0xffffffff
3:
beq t1, t0, 2f
nop
lw a0, 0(t1)
addi t1, 4
//beq a0, t2, 3b
beqz a0, 3b
nop
bal hexserial
nop
move a0, t1
bal hexserial
nop
TTYDBG("\r\n")
b 3b
nop
#else
//li t0, 0x80000000+1*1024*1024
//li t1, 0x80000000
li t0, 0xa0000000+1*1024*1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
lw t3, 0(t1)
bne t3, t2, 1f
nop
not t2
sw t2, 0(t1)
lw t3, 0(t1)
bne t3, t2, 1f
nop
not t2
subu t2, 1
addu t1, 4
beq t1, t0, 2f
nop
and t4, t1, 0x000fffff
bnez t4, skipdot
li a0, '.'
bal tgt_putchar
nop
skipdot:
b 1b
nop
#endif
1:
TTYDBG("Memory test failed at ");
move a0, t1
bal hexserial
nop
TTYDBG("\r\nWrite=");
move a0, t2
bal hexserial
nop
TTYDBG("\r\nRead=");
move a0, t3
bal hexserial
nop
1:
b 1b
nop
2:
TTYDBG("Testing ok...\r\n");
sub t7,1
beqz t7, 1f
nop
b tmem
nop
1:
/*
b 1b
nop
*/
#endif
/* zhb */
#if 0
/* li t0, 0 */
/* li t1, 0x90000 */
/*1: addiu t0, 1 */
/* bne t0, t1, 1b */
nop
TTYDBG("Testing memory...\r\n")
li t7, 10
tmem:
li t0, 0xa0000000+1*1024*1024
li t1, 0xa0000000
li t2, 0xffffffff
1:
sw t2, 0(t1)
lw t3, 0(t1)
bne t3, t2, 1f
nop
not t2
sw t2, 0(t1)
lw t3, 0(t1)
bne t3, t2, 1f
nop
not t2
subu t2, 1
addu t1, 4
beq t1, t0, 2f
nop
and t4, t1, 0x000fffff
bnez t4, skipdot_0
li a0, '.'
bal tgt_putchar
nop
skipdot_0:
b 1b
nop
1:
TTYDBG("Memory test failed at ");
move a0, t1
bal hexserial
nop
TTYDBG("\r\nWrite=");
move a0, t2
bal hexserial
nop
TTYDBG("\r\nRead=");
move a0, t3
bal hexserial
nop
1:
b 1b
nop
2:
TTYDBG("Testing ok...\r\n");
sub t7,1
beqz t7, 1f
nop
b tmem
nop
1:
b 1b
nop
#endif
#if 0 /* Read adustment */
//#define SLICE_0
#define SLICE_1
TTYDBG ("Enable register space of MEMORY\r\n")
li t2, 0xbfe00180
lw a1, 0x0(t2)
li a0, 0xfffffeff
and a1, a1,a0
sw a1, 0x0(t2)
//CACHE WRITE whd
TTYDBG("Write \r\n")
li t0, 0x80000400
li a0, 0x0
li t2, 0x80000420
li a0, 0x99999999
sw a0, 0x0(t0)
li a0, 0x99999999
sw a0, 0x4(t0)
li a0, 0x66666666
sw a0, 0x8(t0)
li a0, 0x66666666
sw a0, 0xc(t0)
li a0, 0x55555555
sw a0, 0x10(t0)
li a0, 0x55555555
sw a0, 0x14(t0)
li a0, 0xaaaaaaaa
sw a0, 0x18(t0)
li a0, 0xaaaaaaaa
sw a0, 0x1c(t0)
li t0, 0x80000400
cache 23, 0x0(t0) //HitWBInvalidate_S
//SLICE 0: Set Delay of DQS
#ifdef SLICE_0
dli t0, 0
dli t1, 0xff
li v0, 0
li v1, 0
TTYDBG("SLICE 0.\r\n")
TTYDBG("Posedge.\r\n")
pos_set_0:
li t2, 0xaff001f0
ld a0, 0x0(t2)
dli a1, 0xffff00ffffffffff
and a0, a0, a1
dsll a1, t0, 40
or a0, a0, a1
sd a0, 0x0(t2)
//TTYDBG("\r\nLOOP until value change done.\r\n")
li a2, 0x1fffffff #360Mhz
1:
bnez a2, 1b
addi a2, a2, -1
//TTYDBG("LOOP done.\r\n")
TTYDBG(".")
//Test DQS
read_posedge_0:
li t2, 0xa0000400
lw a0, 0x0(t2)
li a1, 0x000000ff
and a0, a0, a1
li a1, 0x99
daddi t0, t0, 1
bne a0, a1, pos_set_0
nop
lw a0, 0x10(t2)
li a1, 0x000000ff
and a0, a0, a1
li a1, 0x55
bne a0, a1, pos_set_0
nop
addi v0, t0, -1
move a0, v0
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t1, pos_set_0
nop
TTYDBG("\r\nNegedge.\r\n")
dli t0, 0
dli t1, 0xff
li v0, 0
li v1, 0
neg_set_0:
li t2, 0xaff00240
ld a0, 0x0(t2)
li a1, 0xffffffffffff00ff
and a0, a0, a1
dsll a1, t0, 8
or a0, a0, a1
sd a0, 0x0(t2)
//TTYDBG("\r\nLOOP until value change done.\r\n")
li a2, 0x1fffffff #360Mhz
1:
bnez a2, 1b
addi a2, a2, -1
//TTYDBG("LOOP done.\r\n")
TTYDBG(".")
//Test DQS
read_negedge_0:
li t2, 0xa0000408
lw a0, 0x0(t2)
li a1, 0x000000ff
and a0, a0, a1
li a1, 0x66
daddi t0, t0, 1
bne a0, a1, neg_set_0
nop
lw a0, 0x10(t2)
li a1, 0x000000ff
and a0, a0, a1
li a1, 0xaa
bne a0, a1, neg_set_0
nop
addi v0, t0, -1
move a0, v0
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t1, neg_set_0
nop
#endif
//SLICE 1: Set Delay of DQS
#ifdef SLICE_1
dli t0, 0
dli t1, 0xff
li v0, 0
li v1, 0
TTYDBG("SLICE 1.\r\n")
TTYDBG("Posedge.\r\n")
pos_set_1:
li t2, 0xaff00200
ld a0, 0x0(t2)
dli a1, 0xffffffffffff00ff
and a0, a0, a1
dsll a1, t0, 8
or a0, a0, a1
sd a0, 0x0(t2)
//TTYDBG("\r\nLOOP until value change done.\r\n")
li a2, 0x1fffffff #360Mhz
1:
bnez a2, 1b
addi a2, a2, -1
//TTYDBG("LOOP done.\r\n")
TTYDBG(".")
//Test DQS
read_posedge_1:
li t2, 0xa0000400
lw a0, 0x0(t2)
li a1, 0x0000ff00
and a0, a0, a1
li a1, 0x9900
daddi t0, t0, 1
bne a0, a1, pos_set_1
nop
lw a0, 0x10(t2)
li a1, 0x0000ff00
and a0, a0, a1
li a1, 0x5500
bne a0, a1, pos_set_1
nop
addi v0, t0, -1
move a0, v0
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t1, pos_set_1
nop
TTYDBG("\r\nNegedge.\r\n")
dli t0, 0
dli t1, 0xff
li v0, 0
li v1, 0
neg_set_1:
li t2, 0xaff00240
ld a0, 0x0(t2)
li a1, 0xffff00ffffffffff
and a0, a0, a1
dsll a1, t0, 40
or a0, a0, a1
sd a0, 0x0(t2)
//TTYDBG("\r\nLOOP until value change done.\r\n")
li a2, 0x1fffffff #360Mhz
1:
bnez a2, 1b
addi a2, a2, -1
//TTYDBG("LOOP done.\r\n")
TTYDBG(".")
//Test DQS
read_negedge_1:
li t2, 0xa0000408
lw a0, 0x0(t2)
li a1, 0x0000ff00
and a0, a0, a1
li a1, 0x6600
daddi t0, t0, 1
bne a0, a1, neg_set_1
nop
lw a0, 0x10(t2)
li a1, 0x0000ff00
and a0, a0, a1
li a1, 0xaa00
bne a0, a1, neg_set_1
nop
addi v0, t0, -1
move a0, v0
bal hexserial
nop
TTYDBG("\r\n")
bne t0, t1, neg_set_1
nop
#endif
#endif
/*
////////////////////
li t2, 0xaff00240
ld a0, 0x0(t2)
li a1, 0xffffffffffff00ff
and a0, a0, a1
sd a0, 0x0(t2)
*/