It is pretty simple to make the WHOLE kseg0 cached or uncached. However, I only want part of kseg0 uncached. I must uncache that region because it gives me too much trouble with DMA data, however, I don't want to uncache the whole kseg0 segment in order to get better performance. Kseg0 is not mapped through TLB, so it seems I can't achieve my goal through TLB. Cite from the book See Mips Run, "if you feel that your system needs to make uncached references to cacheable memory, then I strongly recommand that you divide memory into regions that are always accessed uncached and regions that are always accessed through the cache - and don't let them overlap. " But how ? Thanks, Jimmy