vmx: clean up mksegment, memset only if segment existed (devsegment clears new ones)
This commit is contained in:
parent
d7120ecb77
commit
f5d1fce9b5
1 changed files with 7 additions and 11 deletions
|
@ -320,9 +320,6 @@ gend(void *v)
|
||||||
return (u8int *) v + gavail(v);
|
return (u8int *) v + gavail(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *tmp, *vgamem;
|
|
||||||
uvlong tmpoff, vgamemoff;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mksegment(char *sn)
|
mksegment(char *sn)
|
||||||
{
|
{
|
||||||
|
@ -355,8 +352,9 @@ mksegment(char *sn)
|
||||||
close(fd);
|
close(fd);
|
||||||
gmem = segattach(0, sn, nil, sz);
|
gmem = segattach(0, sn, nil, sz);
|
||||||
if(gmem == (void*)-1) sysfatal("segattach: %r");
|
if(gmem == (void*)-1) sysfatal("segattach: %r");
|
||||||
|
}else{
|
||||||
|
memset(gmem, 0, sz > 1<<24 ? 1<<24 : sz);
|
||||||
}
|
}
|
||||||
memset(gmem, 0, sz > 1<<24 ? 1<<24 : sz);
|
|
||||||
p = gmem;
|
p = gmem;
|
||||||
for(r = mmap; r != nil; r = r->next){
|
for(r = mmap; r != nil; r = r->next){
|
||||||
if(r->segname == nil) continue;
|
if(r->segname == nil) continue;
|
||||||
|
@ -365,14 +363,12 @@ mksegment(char *sn)
|
||||||
p += r->end - r->start;
|
p += r->end - r->start;
|
||||||
r->ve = p;
|
r->ve = p;
|
||||||
}
|
}
|
||||||
vgamem = p;
|
/* vga */
|
||||||
vgamemoff = p - gmem;
|
r = regptr(0xa0000);
|
||||||
regptr(0xa0000)->segoff = vgamemoff;
|
r->segoff = p - gmem;
|
||||||
regptr(0xa0000)->v = vgamem;
|
r->v = p;
|
||||||
p += 256*1024;
|
p += 256*1024;
|
||||||
regptr(0xa0000)->ve = p;
|
r->ve = p;
|
||||||
tmp = p;
|
|
||||||
tmpoff = p - gmem;
|
|
||||||
|
|
||||||
for(r = mmap; r != nil; r = r->next)
|
for(r = mmap; r != nil; r = r->next)
|
||||||
modregion(r);
|
modregion(r);
|
||||||
|
|
Loading…
Reference in a new issue