software/libbase/memtest: cosmetic cleanups.

This commit is contained in:
Florent Kermarrec 2020-12-07 13:23:58 +01:00
parent bed072ef19
commit 3ce74f6e29
1 changed files with 37 additions and 19 deletions

View File

@ -15,7 +15,7 @@
#define MIB (KIB*1024) #define MIB (KIB*1024)
#define GIB (MIB*1024) #define GIB (MIB*1024)
#define ONEZERO 0xAAAAAAAA #define ONEZERO 0xaaaaaaaa
#define ZEROONE 0x55555555 #define ZEROONE 0x55555555
#ifndef MEMTEST_BUS_SIZE #ifndef MEMTEST_BUS_SIZE
@ -47,36 +47,46 @@ int memtest_bus(unsigned int *addr, unsigned long size)
errors = 0; errors = 0;
for(i = 0; i < size/4;i++) { /* Write One/Zero pattern */
for(i=0; i<size/4; i++) {
array[i] = ONEZERO; array[i] = ONEZERO;
} }
/* Flush caches */
flush_cpu_dcache(); flush_cpu_dcache();
#ifdef CONFIG_L2_SIZE #ifdef CONFIG_L2_SIZE
flush_l2_cache(); flush_l2_cache();
#endif #endif
for(i = 0; i < size/4; i++) {
/* Read/Verify One/Zero pattern */
for(i=0; i<size/4; i++) {
rdata = array[i]; rdata = array[i];
if(rdata != ONEZERO) { if(rdata != ONEZERO) {
errors++; errors++;
#ifdef MEMTEST_BUS_DEBUG #ifdef MEMTEST_BUS_DEBUG
printf("[bus: 0x%0x]: 0x%08x vs 0x%08x\n", i, rdata, ONEZERO); printf("memtest_bus error @ 0x%0x: 0x%08x vs 0x%08x\n", i, rdata, ONEZERO);
#endif #endif
} }
} }
/* Write Zero/One pattern */
for(i = 0; i < size/4; i++) { for(i = 0; i < size/4; i++) {
array[i] = ZEROONE; array[i] = ZEROONE;
} }
/* Flush caches */
flush_cpu_dcache(); flush_cpu_dcache();
#ifdef CONFIG_L2_SIZE #ifdef CONFIG_L2_SIZE
flush_l2_cache(); flush_l2_cache();
#endif #endif
/* Read/Verify One/Zero pattern */
for(i = 0; i < size/4; i++) { for(i = 0; i < size/4; i++) {
rdata = array[i]; rdata = array[i];
if(rdata != ZEROONE) { if(rdata != ZEROONE) {
errors++; errors++;
#ifdef MEMTEST_BUS_DEBUG #ifdef MEMTEST_BUS_DEBUG
printf("[bus 0x%0x]: 0x%08x vs 0x%08x\n", i, rdata, ZEROONE); printf("memtest_bus error @ 0x%0x:: 0x%08x vs 0x%08x\n", i, rdata, ZEROONE);
#endif #endif
} }
} }
@ -94,23 +104,27 @@ int memtest_addr(unsigned int *addr, unsigned long size, int random)
errors = 0; errors = 0;
seed_16 = 1; seed_16 = 1;
for(i = 0; i < size/4; i++) { /* Write datas*/
for(i=0; i<size/4; i++) {
seed_16 = seed_to_data_16(seed_16, random); seed_16 = seed_to_data_16(seed_16, random);
array[(unsigned int) seed_16] = i; array[(unsigned int) seed_16] = i;
} }
seed_16 = 1; /* Flush caches */
flush_cpu_dcache(); flush_cpu_dcache();
#ifdef CONFIG_L2_SIZE #ifdef CONFIG_L2_SIZE
flush_l2_cache(); flush_l2_cache();
#endif #endif
for(i = 0; i < size/4; i++) {
/* Read/Verify datas */
seed_16 = 1;
for(i=0; i<size/4; i++) {
seed_16 = seed_to_data_16(seed_16, random); seed_16 = seed_to_data_16(seed_16, random);
rdata = array[(unsigned int) seed_16]; rdata = array[(unsigned int) seed_16];
if(rdata != i) { if(rdata != i) {
errors++; errors++;
#ifdef MEMTEST_ADDR_DEBUG #ifdef MEMTEST_ADDR_DEBUG
printf("[addr 0x%0x]: 0x%08x vs 0x%08x\n", i, rdata, i); printf("memtest_addr error @ 0x%0x: 0x%08x vs 0x%08x\n", i, rdata, i);
#endif #endif
} }
} }
@ -151,7 +165,8 @@ int memtest_data(unsigned int *addr, unsigned long size, int random)
errors = 0; errors = 0;
seed_32 = 1; seed_32 = 1;
for(i = 0; i < size/4; i++) { /* Write datas */
for(i=0; i<size/4; i++) {
seed_32 = seed_to_data_32(seed_32, random); seed_32 = seed_to_data_32(seed_32, random);
array[i] = seed_32; array[i] = seed_32;
if (i%0x8000 == 0) if (i%0x8000 == 0)
@ -160,18 +175,21 @@ int memtest_data(unsigned int *addr, unsigned long size, int random)
print_progress(" Write:", (unsigned long)addr, 4*i); print_progress(" Write:", (unsigned long)addr, 4*i);
printf("\n"); printf("\n");
seed_32 = 1; /* Flush caches */
flush_cpu_dcache(); flush_cpu_dcache();
#ifdef CONFIG_L2_SIZE #ifdef CONFIG_L2_SIZE
flush_l2_cache(); flush_l2_cache();
#endif #endif
for(i = 0; i < size/4; i++) {
/* Read/Verify datas */
seed_32 = 1;
for(i=0; i<size/4; i++) {
seed_32 = seed_to_data_32(seed_32, random); seed_32 = seed_to_data_32(seed_32, random);
rdata = array[i]; rdata = array[i];
if(rdata != seed_32) { if(rdata != seed_32) {
errors++; errors++;
#ifdef MEMTEST_DATA_DEBUG #ifdef MEMTEST_DATA_DEBUG
printf("[data 0x%0x]: 0x%08x vs 0x%08x\n", i, rdata, seed_32); printf("memtest_data error @%0x: 0x%08x vs 0x%08x\n", i, rdata, seed_32);
#endif #endif
} }
if (i%0x8000 == 0) if (i%0x8000 == 0)
@ -197,13 +215,13 @@ void memspeed(unsigned int *addr, unsigned long size, bool read_only)
print_size(size); print_size(size);
printf(")...\n"); printf(")...\n");
/* init timer */ /* Init timer */
timer0_en_write(0); timer0_en_write(0);
timer0_reload_write(0); timer0_reload_write(0);
timer0_load_write(0xffffffff); timer0_load_write(0xffffffff);
timer0_en_write(1); timer0_en_write(1);
/* write speed */ /* Measure Write speed */
if (!read_only) { if (!read_only) {
timer0_update_value_write(1); timer0_update_value_write(1);
start = timer0_value_read(); start = timer0_value_read();
@ -220,13 +238,13 @@ void memspeed(unsigned int *addr, unsigned long size, bool read_only)
printf("\n"); printf("\n");
} }
/* flush CPU and L2 caches */ /* flush caches */
flush_cpu_dcache(); flush_cpu_dcache();
#ifdef CONFIG_L2_SIZE #ifdef CONFIG_L2_SIZE
flush_l2_cache(); flush_l2_cache();
#endif #endif
/* read speed */ /* Measure Read speed */
timer0_en_write(1); timer0_en_write(1);
timer0_update_value_write(1); timer0_update_value_write(1);
start = timer0_value_read(); start = timer0_value_read();