diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2002-03-15 21:44:19 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2002-03-15 21:44:19 +0000 |
commit | 272e5ac533a4d733e5bb17d6eb9b1a8ce4c26df5 (patch) | |
tree | 1f73911329d48df3f982381c1abebeeb499bdb8a /sys/arch/hppa/gsc/if_ie_gsc.c | |
parent | 95b13325476dd5114a97010e5cffb1a38740bb62 (diff) |
rewrite a pmap to use multilevel page tables.
lower 12 bits contain the perms, no unused bits left,
but a couple for off-tlb use (as the ref implemented now).
do not use the hvt, which might get some use later
if proven to speed thigs up, tlb handlers would po
another dozen of insns though, but if that's worth its...
move on the data seg and map kernel text rdonly (idea form fredette),
since all of the page0 mods done before that we are all fine
except for some viper fluff, but later w/ that.
this also picks up a bit more of ddb magic for bpt and ss.
tlb handlers can use a little bit more of attention,
but things, visually, seem to be much faster already, --
sorry, no benchmarks for now.
* effort sponsored in part by the `henry st. old ale house'
* and mr.pete and mr.lee in particular in thier generous entrirety.
* the proj took a little more that 72man*h as it was expected,
* but within murhy's law estimations.
Diffstat (limited to 'sys/arch/hppa/gsc/if_ie_gsc.c')
-rw-r--r-- | sys/arch/hppa/gsc/if_ie_gsc.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/arch/hppa/gsc/if_ie_gsc.c b/sys/arch/hppa/gsc/if_ie_gsc.c index c37b285d2d7..a630796325f 100644 --- a/sys/arch/hppa/gsc/if_ie_gsc.c +++ b/sys/arch/hppa/gsc/if_ie_gsc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_ie_gsc.c,v 1.10 2002/03/14 01:26:31 millert Exp $ */ +/* $OpenBSD: if_ie_gsc.c,v 1.11 2002/03/15 21:44:18 mickey Exp $ */ /* * Copyright (c) 1998,1999 Michael Shalayeff @@ -85,7 +85,7 @@ static int ie_gsc_media[] = { }; #define IE_NMEDIA (sizeof(ie_gsc_media) / sizeof(ie_gsc_media[0])) -static char mem[IE_SIZE+16]; +char *ie_mem; void ie_gsc_reset(struct ie_softc *sc, int what); void ie_gsc_attend(struct ie_softc *sc); @@ -154,7 +154,7 @@ ie_gsc_attend(sc) { register volatile struct ie_gsc_regs *r = (struct ie_gsc_regs *)sc->ioh; - fdcache(0, (vaddr_t)&mem, sizeof(mem)); + fdcache(0, (vaddr_t)ie_mem, IE_SIZE); r->ie_attn = 0; } @@ -328,8 +328,8 @@ ie_gsc_attach(parent, self, aux) sc->sc_maddr = kvtop((caddr_t)sc->bh); #else - bzero(mem, sizeof(mem)); - sc->bh = ((u_int)&mem + 15) & ~0xf; + printf("%x ", ie_mem); + sc->bh = (u_int)ie_mem; sc->sc_maddr = sc->bh; #endif sc->sysbus = 0x40 | IE_SYSBUS_82586 | IE_SYSBUS_INTLOW | IE_SYSBUS_TRG | IE_SYSBUS_BE; |