Commit 4d8edbfe authored by James Hogan's avatar James Hogan

metag: cachepart: take into account small cache bits

The CORE_CONFIG2 register has bits to indicate that the data or code
cache is small, i.e. that the size described in the field should be
divided by 64. Take this into account in get_icache_size() and
get_dcache_size().
Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
parent 9e712963
...@@ -24,15 +24,21 @@ ...@@ -24,15 +24,21 @@
unsigned int get_dcache_size(void) unsigned int get_dcache_size(void)
{ {
unsigned int config2 = metag_in32(METAC_CORE_CONFIG2); unsigned int config2 = metag_in32(METAC_CORE_CONFIG2);
return 0x1000 << ((config2 & METAC_CORECFG2_DCSZ_BITS) unsigned int sz = 0x1000 << ((config2 & METAC_CORECFG2_DCSZ_BITS)
>> METAC_CORECFG2_DCSZ_S); >> METAC_CORECFG2_DCSZ_S);
if (config2 & METAC_CORECFG2_DCSMALL_BIT)
sz >>= 6;
return sz;
} }
unsigned int get_icache_size(void) unsigned int get_icache_size(void)
{ {
unsigned int config2 = metag_in32(METAC_CORE_CONFIG2); unsigned int config2 = metag_in32(METAC_CORE_CONFIG2);
return 0x1000 << ((config2 & METAC_CORE_C2ICSZ_BITS) unsigned int sz = 0x1000 << ((config2 & METAC_CORE_C2ICSZ_BITS)
>> METAC_CORE_C2ICSZ_S); >> METAC_CORE_C2ICSZ_S);
if (config2 & METAC_CORECFG2_ICSMALL_BIT)
sz >>= 6;
return sz;
} }
unsigned int get_global_dcache_size(void) unsigned int get_global_dcache_size(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment