summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-04-12 16:05:05 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-04-12 16:05:05 +0200
commit647a1da10867b87f90e7f917d7c33ba69ed2a705 (patch)
tree6c4a7012de4fa57570421f31c8e57e26150f5d84 /sys
parent81e6b7e9c958bd5da3c93e204fff59e6868bd0fc (diff)
segment: fix print buffer overflow, map fixed segments uncached, add to zynq kernel
Diffstat (limited to 'sys')
-rw-r--r--sys/src/9/port/devsegment.c8
-rw-r--r--sys/src/9/port/fault.c2
-rw-r--r--sys/src/9/zynq/zynq1
3 files changed, 6 insertions, 5 deletions
diff --git a/sys/src/9/port/devsegment.c b/sys/src/9/port/devsegment.c
index 7e5a18e72..41967e829 100644
--- a/sys/src/9/port/devsegment.c
+++ b/sys/src/9/port/devsegment.c
@@ -319,7 +319,7 @@ static long
segmentread(Chan *c, void *a, long n, vlong voff)
{
Globalseg *g;
- char buf[32];
+ char buf[128];
if(c->qid.type == QTDIR)
return devdirread(c, a, n, (Dirtab *)0, 0L, segmentgen);
@@ -329,11 +329,11 @@ segmentread(Chan *c, void *a, long n, vlong voff)
g = c->aux;
if(g->s == nil)
error("segment not yet allocated");
- if(g->s->type&SG_TYPE == SG_FIXED)
- sprint(buf, "va %#p %#p fixed %#p\n", g->s->base, g->s->top-g->s->base,
+ if((g->s->type&SG_TYPE) == SG_FIXED)
+ snprint(buf, sizeof(buf), "va %#p %#p fixed %#p\n", g->s->base, g->s->top-g->s->base,
g->s->map[0]->pages[0]->pa);
else
- sprint(buf, "va %#p %#p\n", g->s->base, g->s->top-g->s->base);
+ snprint(buf, sizeof(buf), "va %#p %#p\n", g->s->base, g->s->top-g->s->base);
return readstr(voff, a, n, buf);
case Qdata:
g = c->aux;
diff --git a/sys/src/9/port/fault.c b/sys/src/9/port/fault.c
index f1ce5c223..966c2992d 100644
--- a/sys/src/9/port/fault.c
+++ b/sys/src/9/port/fault.c
@@ -267,7 +267,6 @@ fixfault(Segment *s, uintptr addr, int read, int doputmmu)
copypage(old, *pg);
putpage(old);
}
- case SG_FIXED: /* Never paged out */
mmuphys = PPN((*pg)->pa) | PTEWRITE | PTEVALID;
(*pg)->modref = PG_MOD|PG_REF;
break;
@@ -280,6 +279,7 @@ fixfault(Segment *s, uintptr addr, int read, int doputmmu)
new->ref = 1;
*pg = new;
}
+ case SG_FIXED: /* Never paged out */
if (checkaddr && addr == addr2check)
(*checkaddr)(addr, s, *pg);
mmuphys = PPN((*pg)->pa) |PTEWRITE|PTEUNCACHED|PTEVALID;
diff --git a/sys/src/9/zynq/zynq b/sys/src/9/zynq/zynq
index e631c3a19..3241844a4 100644
--- a/sys/src/9/zynq/zynq
+++ b/sys/src/9/zynq/zynq
@@ -21,6 +21,7 @@ dev
draw screen
mouse
usb
+ segment
link
etherzynq