Files
mips/src/asm/tests/test_uncached_cachemiss_bug.c
T
jens 0a6af28dab - added tests
git-svn-id: http://moon:8086/svn/mips@172 a8ebac50-d88d-4704-bea3-6648445a41b3
2021-04-09 16:59:24 +00:00

46 lines
830 B
C

#include <stdlib.h>
#include <stdio.h>
#include "../libsys/utils.h"
uint32_t _test_uncached_cachemiss_bug(uint32_t* pMem)
{
uint32_t result;
pMem[0] = 0x12345678;
pMem[1] = 0xFFFFFFFF;
DCACHE_invalidate_all();
__asm__
(
"move $s0, %[pMem]\n"
"lw $a0, 32($s0)\n"
"or $s1, $a0, $0\n"
"or $a2, $0, $0\n"
"addiu $a2, 1\n"
"sw $a2, 32($s0)\n"
// "lw $a1, 0(%[pMem])\n"
"lw $a0, 32($s0)\n"
"lw $a2, 4(%[pMem])\n"
"lw $a1, 0(%[pMem])\n"
"nop\n"
"sw $s1, 8($s0)\n"
"or %[result], $a0, $0\n"
: [result] "=r" (result)
: [pMem] "r" (pMem)
: "a0", "a1", "a2", "s0", "s1"
);
return result;
}
uint32_t test_uncached_cachemiss_bug()
{
uint32_t buf[256], res;
res = _test_uncached_cachemiss_bug(buf);
return res;
}