kernel/eka/memmodel/epoc/multiple/arm/xmmu.cpp
branchRCL_3
changeset 257 3e88ff8f41d5
parent 256 c1f20ce4abcf
equal deleted inserted replaced
256:c1f20ce4abcf 257:3e88ff8f41d5
   713 		if(l1type==2 || l1type==3 || l1type==4)
   713 		if(l1type==2 || l1type==3 || l1type==4)
   714 			{
   714 			{
   715 			// we have an L1 data cache...
   715 			// we have an L1 data cache...
   716 			TUint32 csir = InternalCache::SizeIdRegister(0,0);
   716 			TUint32 csir = InternalCache::SizeIdRegister(0,0);
   717 			TUint sets = ((csir>>13)&0x7fff)+1;
   717 			TUint sets = ((csir>>13)&0x7fff)+1;
   718 			TUint ways = ((csir>>3)&0x3ff);
   718 			TUint ways = ((csir>>3)&0x3ff)+1;
   719 			ways+=1;
       
   720 			TUint lineSizeShift = (csir&7)+4;
   719 			TUint lineSizeShift = (csir&7)+4;
   721 			// assume L1 data cache is VIPT and alias checks broken and so we need data cache colouring...
   720 			// assume L1 data cache is VIPT and alias checks broken and so we need data cache colouring...
   722 			dColourCount = (sets<<lineSizeShift)>>KPageShift;
   721 			dColourCount = (sets<<lineSizeShift)>>KPageShift;
   723 			if(l1type==4) // unified cache, so set instruction cache colour as well...
   722 			if(l1type==4) // unified cache, so set instruction cache colour as well...
   724 				iColourCount = (sets<<lineSizeShift)>>KPageShift;
   723 				iColourCount = (sets<<lineSizeShift)>>KPageShift;
   728 		if(l1type==1 || l1type==3)
   727 		if(l1type==1 || l1type==3)
   729 			{
   728 			{
   730 			// we have a separate L1 instruction cache...
   729 			// we have a separate L1 instruction cache...
   731 			TUint32 csir = InternalCache::SizeIdRegister(1,0);
   730 			TUint32 csir = InternalCache::SizeIdRegister(1,0);
   732 			TUint sets = ((csir>>13)&0x7fff)+1;
   731 			TUint sets = ((csir>>13)&0x7fff)+1;
   733 			TUint ways = ((csir>>3)&0x3ff);
   732 			TUint ways = ((csir>>3)&0x3ff)+1;
   734 			ways+=1;
       
   735 			TUint lineSizeShift = (csir&7)+4;
   733 			TUint lineSizeShift = (csir&7)+4;
   736 			iColourCount = (sets<<lineSizeShift)>>KPageShift;
   734 			iColourCount = (sets<<lineSizeShift)>>KPageShift;
   737 			__KTRACE_OPT2(KBOOT,KMMU,Kern::Printf("L1ICache = 0x%x,0x%x,%d colourCount=%d",sets,ways,lineSizeShift,(sets<<lineSizeShift)>>KPageShift));
   735 			__KTRACE_OPT2(KBOOT,KMMU,Kern::Printf("L1ICache = 0x%x,0x%x,%d colourCount=%d",sets,ways,lineSizeShift,(sets<<lineSizeShift)>>KPageShift));
   738 			}
   736 			}
   739 		}
   737 		}