In sys/sparc64/sparc64/spitfire.c, prevent signed shift overflow by

casting to the appropriate type.  (Note this fix cannot be done in
sys/sparc64/sparc64/spitfire.c, since that file is also included by
assembly source files.)

Reviewed by:	marius
MFC after:	3 days
This commit is contained in:
Dimitry Andric 2014-02-25 07:28:51 +00:00
parent 455b654622
commit ad3d02dd2a

View File

@ -130,7 +130,7 @@ spitfire_icache_page_inval(vm_paddr_t pa)
: "=r" (tag) : "r" (addr), "n" (ASI_ICACHE_TAG));
if (((tag >> IC_VALID_SHIFT) & IC_VALID_MASK) == 0)
continue;
tag &= IC_TAG_MASK << IC_TAG_SHIFT;
tag &= (u_long)IC_TAG_MASK << IC_TAG_SHIFT;
if (tag == target) {
PMAP_STATS_INC(spitfire_icache_npage_inval_match);
stxa_sync(addr, ASI_ICACHE_TAG, tag);