* news5000 support.

* mips3_VCE[DI] now support L2CacheLSize != 32.
This commit is contained in:
tsubai 1999-12-22 05:54:18 +00:00
parent efaa549162
commit ea69e534d2
2 changed files with 32 additions and 23 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: locore_mips3.S,v 1.13 1999/11/30 11:53:24 shin Exp $ */
/* $NetBSD: locore_mips3.S,v 1.14 1999/12/22 05:54:18 tsubai Exp $ */
/*
* Copyright (c) 1997 Jonathan Stone (hereinafter referred to as the author)
@ -1145,7 +1145,15 @@ LEAF_NOPROFILE(mips3_TLBMissException)
lw k1, _C_LABEL(Sysmapsize) # index within range?
srl k0, k0, PGSHIFT
sltu k1, k0, k1
#ifdef newsmips
/* news5000 has ROM work area at 0xfff00000. */
bne k1, zero, 1f
nop
j checkromwork
1:
#else
beq k1, zero, outofworld # No. Failing beyond. . .
#endif
lw k1, _C_LABEL(Sysmap)
srl k0, k0, 1
sll k0, k0, 3 # compute offset from index
@ -1980,28 +1988,26 @@ XLEAF(mips3_VCEI) /* XXXX */
and k0, -16
sw k0, vce_savek0 # save virtual address
cache 1, 0(k0) # writeback primary line
lw k1, _C_LABEL(mips_L1DCacheSize)
addiu k1, -1
and k0, k0, k1 # mask to cache index
nop
nop
cache 7, 0(k0) # read L2Cache tag
and k0, PGOFSET
mfc0 k1, MIPS_COP_0_TAG_LO
and k1, 0x00000380 # VIndex[9..7]
sll k1, k1, 5 # [14..12] <---
or k0, k0, k1
or k0, 0x80000000 # physical K0SEG address
xor k0, 0x1000 # other page of cache
cache 1, 0(k0)
xor k0, 0x10 # other half of cache line
cache 1, 0(k0)
xor k0, 0x1000 # other half in same page
cache 1, 0(k0)
sltiu k1, k1, 0x3fff
bnez k1, 1f # not R4400
xor k0, 0x2000 # clear out same cache lines
cache 1, 0(k0) # in the other half of the
xor k0, 0x1000 # R4400 primary cache
cache 1, 0(k0)
xor k0, 0x10
cache 1, 0(k0)
xor k0, 0x1000
cache 1, 0(k0)
# end R4400
lw k1, _C_LABEL(mips_L2CacheLSize)
beq k1, zero, 2f # XXX needed?
subu k1, zero, k1
and k0, k0, k1 # align to L2CacheLSize
1:
cache 1, 0(k0) # flush 32 bytes
cache 1, 16(k0)
addiu k1, 32
bltz k1, 1b
addiu k0, 32
2:
lw k0, vce_savek0 # get original address
cache 31, 0(k0)
nop

View File

@ -1,4 +1,4 @@
/* $NetBSD: mips_machdep.c,v 1.60 1999/11/29 11:12:14 uch Exp $ */
/* $NetBSD: mips_machdep.c,v 1.61 1999/12/22 05:54:18 tsubai Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@ -52,7 +52,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.60 1999/11/29 11:12:14 uch Exp $");
__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.61 1999/12/22 05:54:18 tsubai Exp $");
#include "opt_compat_netbsd.h"
#include "opt_compat_ultrix.h"
@ -316,6 +316,9 @@ mips3_vector_init()
#ifdef arc /* XXX */
mips_L2CacheSize = mips_L2CachePresent ? 1024 * 1024 : 0;
#endif
#ifdef newsmips /* XXX */
mips_L2CacheSize = 1024 * 1024;
#endif
mips3_FlushCache();
}