a8d2e55834
on R5000/Rm52xx machines: - Add a new global variable mips_cache_virtual_alias in mips/cache.c, which indicates that VIPT cache on the CPU could cause virtual alias and software support is required to handle it. (i.e. no VCED/VCEI) - Add several cache flush/invalidate ops around KSEG0 access which might cause virtual alias if mips_cache_virtual_alias is true. (note checking mips_sdcache_line_size isn't valid for R5000/Rm52xx because only R4000/R4400 with L2 cache have VCED/VCEI) - Remove a global variable mips_sdcache_forceinv, which is now superseded by new mips_cache_virtual_alias. While here, also change some R4000/R4400 cache ops: - Don't override mips_cache_alias_mask and mips_cache_prefer_mask with values based on MIPS3_MAX_PCACHE_SIZE for R4000/R4400 with L2 cache because it's still worth to reduce VCED/VCEI. - Flush dcache in pmap_zero_page(9) unconditionally on all MIPS_HAS_R4K_MMU CPUs and remove cache flush code from cpu_lwp_fork() in vm_machdep.c. Thanks to Markus W Kilbinger for testing patches on port-cobalt/port-mips. XXX This fix is just a workaround because it doesn't handle all possible XXX virtual aliases. As discussed on port-mips, maybe the real fix XXX for virtual alias is to change MI UVM to adapt it to VIPT cache. XXX (all VA mappings against the same PA must have the same VAC index etc.) |
||
---|---|---|
.. | ||
ansi.h | ||
aout_machdep.h | ||
asm.h | ||
bsd-aout.h | ||
bswap.h | ||
bus_dma.h | ||
bus_space.h | ||
cache_mipsNN.h | ||
cache_r3k.h | ||
cache_r4k.h | ||
cache_r5k.h | ||
cache_r10k.h | ||
cache_r5900.h | ||
cache_tx39.h | ||
cache.h | ||
cachectl.h | ||
cdefs.h | ||
cpu_counter.h | ||
cpu.h | ||
cpuregs.h | ||
db_machdep.h | ||
ecoff_machdep.h | ||
elf_machdep.h | ||
endian_machdep.h | ||
endian.h | ||
float.h | ||
frame.h | ||
ieee.h | ||
ieeefp.h | ||
int_const.h | ||
int_fmtio.h | ||
int_limits.h | ||
int_mwgwtypes.h | ||
int_types.h | ||
isa_machdep.h | ||
kcore.h | ||
kdbparam.h | ||
limits.h | ||
lock.h | ||
locore.h | ||
Makefile | ||
Makefile.inc | ||
math.h | ||
mcontext.h | ||
mips1_pte.h | ||
mips3_pte.h | ||
mips_opcode.h | ||
mips_param.h | ||
mipsNN.h | ||
pcb.h | ||
pci_machdep.h | ||
pmap.h | ||
pmc.h | ||
proc.h | ||
profile.h | ||
psl.h | ||
pte.h | ||
ptrace.h | ||
r3900regs.h | ||
r5900regs.h | ||
reg.h | ||
regdef.h | ||
regnum.h | ||
reloc.h | ||
sb1regs.h | ||
setjmp.h | ||
signal.h | ||
softintr.h | ||
stdarg.h | ||
svr4_machdep.h | ||
sysarch.h | ||
trap.h | ||
types.h | ||
userret.h | ||
varargs.h | ||
vmparam.h | ||
wchar_limits.h |