acid: update acid libraries for amd64
This commit is contained in:
parent
16acf605e2
commit
de356dd855
6 changed files with 113 additions and 84 deletions
|
@ -34,12 +34,12 @@ defn imagecacheline(h) {
|
|||
while h != 0 do {
|
||||
complex Image h;
|
||||
|
||||
d=(Dev)(*(devtab+4*h.type));
|
||||
d=(Dev)devtab[h.type];
|
||||
p = "*closed*";
|
||||
if h.c != 0 then
|
||||
p = path(h.c.path);
|
||||
q = h.qid;
|
||||
print (h\X, " ref=", h.ref, " pgref=", h.pgref, "\t#", d.dc\r, h.dev\D, " (",
|
||||
print (h\A, " ref=", h.ref, " pgref=", h.pgref, "\t#", d.dc\r, h.dev\D, " (",
|
||||
q.path, " ", q.vers\D, " ", q.type\X, ") ", p, "\n");
|
||||
h = h.hash;
|
||||
}
|
||||
|
@ -59,12 +59,12 @@ defn chan(c) {
|
|||
local d, q;
|
||||
|
||||
c = (Chan)c;
|
||||
d=(Dev)(*(devtab+4*c.type));
|
||||
d= (Dev)devtab[c.type];
|
||||
q=c.qid;
|
||||
print("chan(", c\X, "): ref=", c.ref\D, " #", d.dc\r, c.dev\D, " (", q.path, " ", q.vers\D, " ", q.type\X, ")");
|
||||
print("chan(", c\A, "): ref=", c.ref\D, " #", d.dc\r, c.dev\D, " (", q.path, " ", q.vers\D, " ", q.type\X, ")");
|
||||
print(" fid=", c.fid\D, " iounit=", c.iounit\D);
|
||||
if c.ref != 0 then {
|
||||
print(" ", path(c.path), " mchan=", c.mchan\X);
|
||||
print(" ", path(c.path), " mchan=", c.mchan\A);
|
||||
if c.mchan != 0 then {
|
||||
print(" ", path(c.mchan.path));
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ defn badchans() {
|
|||
}
|
||||
}
|
||||
if bad != "" then
|
||||
print("chan(", c\X, "):", bad, "\n");
|
||||
print("chan(", c\A, "):", bad, "\n");
|
||||
}
|
||||
c = (Chan)c.link;
|
||||
}
|
||||
|
@ -190,7 +190,7 @@ defn mntcache() {
|
|||
m = cache.hash[i];
|
||||
while m != 0 do {
|
||||
complex Mntcache m;
|
||||
print(m\X, " dev ", m.dev\D, " type ", m.type, " qid (",
|
||||
print(m\A, " dev ", m.dev\D, " type ", m.type, " qid (",
|
||||
m.qid.path, " ", m.qid.vers\D, ")\n");
|
||||
c = findchan(m.dev, m.type, m.qid.path);
|
||||
if c != 0 then {
|
||||
|
@ -219,7 +219,7 @@ defn proc(p) {
|
|||
} else {
|
||||
s = *(s\s);
|
||||
}
|
||||
print(p\X, " ", p.pid, ": ", *(p.text\s), " ", *(p.user\s), " pc ", p.pc\X, " ", s, " (", *(statename[p.state]\s), ") ut ", p.time[0]\D, " st ", p.time[1]\D, " qpc ", p.qpc\X, "\n");
|
||||
print(p\A, " ", p.pid, ": ", *(p.text\s), " ", *(p.user\s), " pc ", p.pc, " ", s, " (", *(statename[p.state]\s), ") ut ", p.time[0]\D, " st ", p.time[1]\D, " qpc ", p.qpc, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,6 +240,9 @@ defn procenv(p) {
|
|||
}
|
||||
|
||||
KSTACK=4096;
|
||||
if objtype=="amd64" then {
|
||||
KSTACK=16*1024;
|
||||
}
|
||||
|
||||
defn procstksize(p) {
|
||||
complex Proc p;
|
||||
|
@ -258,7 +261,7 @@ defn procstk(p) {
|
|||
|
||||
if p.state != 0 then { // 0 is Dead
|
||||
l = p.sched;
|
||||
if objtype=="386" then
|
||||
if objtype=="386" || objtype=="amd64" then
|
||||
_stk(gotolabel, *l, linkreg(0), 0);
|
||||
else
|
||||
_stk(*(l+4), *l, linkreg(0), 0);
|
||||
|
@ -313,7 +316,7 @@ defn psegment(s) {
|
|||
complex Segment s;
|
||||
|
||||
if s != 0 then {
|
||||
print(s\X, " ", segtypes[s.type&SG_TYPE], " ", s.base\X, "-", s.top\X, " image ", s.image\X, "\n");
|
||||
print(s\A, " ", segtypes[s.type&SG_TYPE], " ", s.base, "-", s.top, " image ", s.image, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -362,24 +365,34 @@ defn segaddr(s, a) {
|
|||
}
|
||||
|
||||
complex Page pg;
|
||||
return (KZERO|(pg.pa+(a%BY2PG)))\X;
|
||||
return (KZERO|(pg.pa+(a%BY2PG)))\A;
|
||||
}
|
||||
|
||||
defn kzero() {
|
||||
return main - (main & 0x0FFFFFFF);
|
||||
}
|
||||
|
||||
// PC only
|
||||
PTEMAPMEM = (1024*1024);
|
||||
BY2PG = 4096;
|
||||
PTEPERTAB = (PTEMAPMEM/BY2PG);
|
||||
defn up() {
|
||||
local mach;
|
||||
if objtype == "386" then {
|
||||
local mach;
|
||||
|
||||
MACHADDR = KZERO+0x15000;
|
||||
mach = MACHADDR;
|
||||
complex Mach mach;
|
||||
return mach.externup;
|
||||
MACHADDR = KZERO+0x15000;
|
||||
mach = MACHADDR;
|
||||
complex Mach mach;
|
||||
return mach.externup;
|
||||
}
|
||||
if objtype == "amd64" then {
|
||||
local proc;
|
||||
|
||||
proc = *R14;
|
||||
complex Proc proc;
|
||||
return proc;
|
||||
}
|
||||
print("up() not implemented for", objtype, "\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
defn intrcount() {
|
||||
|
@ -397,8 +410,6 @@ defn intrcount() {
|
|||
}
|
||||
}
|
||||
|
||||
print("/sys/lib/acid/kernel");
|
||||
|
||||
defn needacid(s){
|
||||
print("\trc(\"cd /sys/src/9/", kdir, "; mk ", s, ".acid\")\n");
|
||||
print("\tinclude(\"/sys/src/9/", kdir, "/", s, ".acid\")\n");
|
||||
|
@ -413,6 +424,10 @@ if (map()[2]) != {} then { // map has more than two elements -> active proc
|
|||
map({"*data", KZERO, 0xffffffff, KZERO});
|
||||
kdir="pc";
|
||||
}
|
||||
if objtype == "amd64" then {
|
||||
map({"*data", KZERO, 0xffffffffffffffff, KZERO});
|
||||
kdir="pc64";
|
||||
}
|
||||
if (objtype == "mips" || objtype == "mips2") then {
|
||||
kdir = "ch";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue