www.pudn.com > leon3.rar > ramfill.c
extern rsysreg(int addr);
extern wsysreg(int *addr, int data);
cache_disable()
{
asm(" sta %g0, [%g0] 2 ");
}
cache_enable()
{
asm(" set 0x81000f, %o0; sta %o0, [%g0] 2 ");
}
ramfill()
{
int dbytes, ibytes, isets, dsets;
int icconf, dcconf;
int cachectrl;
icconf = rsysreg(8);
dcconf = rsysreg(12);
isets = ((icconf >> 24) & 3) + 1;
dsets = ((dcconf >> 24) & 3) + 1;
ibytes = (1 << (((icconf >> 20) & 0xF) + 10)) * isets;
dbytes = (1 << (((dcconf >> 20) & 0xF) + 10)) * dsets;
cache_disable();
ifill(ibytes);
dfill(dbytes);
flush();
cache_enable();
}