• Vineet Gupta's avatar
    ARC: Brown paper bag bug in macro for checking cache color · 3e87974d
    Vineet Gupta authored
    The VM_EXEC check in update_mmu_cache() was getting optimized away
    because of a stupid error in definition of macro addr_not_cache_congruent()
    
    The intention was to have the equivalent of following:
    
    	if (a || (1 ? b : 0))
    
    but we ended up with following:
    
    	if (a || 1 ? b : 0)
    
    And because precedence of '||' is more that that of '?', gcc was optimizing
    away evaluation of <a>
    
    Nasty Repercussions:
    1. For non-aliasing configs it would mean some extraneous dcache flushes
       for non-code pages if U/K mappings were not congruent.
    2. For aliasing config, some needed dcache flush for code pages might
       be missed if U/K mappings were congruent.
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    3e87974d
cacheflush.h 3.68 KB