]> git.dujemihanovic.xyz Git - u-boot.git/commit
ARC: cache: explicitly initialize "*_exists" variables
authorEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Thu, 30 Nov 2017 14:41:32 +0000 (17:41 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Mon, 11 Dec 2017 08:36:22 +0000 (11:36 +0300)
commit3cf239394a5ca3ada68c683ef5d19e16f9bfd170
tree1eb24af365ad0f37914a810ddb07dcf7853512b9
parent64f47426315112e67af1214474659e0a55383dcc
ARC: cache: explicitly initialize "*_exists" variables

dcache_exists, icache_exists, slc_exists and ioc_exists global
variables in "arch/arc/lib/cache.c" remain uninitialized if
SoC doesn't have corresponding HW.

This happens because we use the next constructions for their
definition and initialization:
-------------------------->>---------------------
int ioc_exists __section(".data");

if (/* condition */)
ioc_exists = 1;
-------------------------->>---------------------

That's quite a non-trivial issue as one may think of it.
The point is we intentionally put those variables in ".data" section
so they might survive relocation (remember we initilaize them very early
before relocation and continue to use after reloaction). While being
non-initialized and not explicitly put in .data section they would end-up
in ".bss" section which by definition is filled with zeroes.
But since we place those variables in .data section we need to care
about their proper initialization ourselves.

Also while at it we change their type to "bool" as more appropriate.

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/lib/cache.c