Figure out KZERO. [rsc] --rw-rw-r-- M 489211 glenda sys 6370 Nov 7 10:00 sys/lib/acid/kernel /n/sourcesdump/2005/1107/plan9/sys/lib/acid/kernel:319,329 - /n/sourcesdump/2005/1108/plan9/sys/lib/acid/kernel:319,332 } complex Page pg; - return (0x80000000|(pg.pa+(a%BY2PG)))\X; + return (KZERO|(pg.pa+(a%BY2PG)))\X; } + defn kzero() { + return main - (main & 0x0FFFFFFF); + } + // PC only - MACHADDR = 0x80004000; PTEMAPMEM = (1024*1024); BY2PG = 4096; PTEPERTAB = (PTEMAPMEM/BY2PG); /n/sourcesdump/2005/1107/plan9/sys/lib/acid/kernel:330,335 - /n/sourcesdump/2005/1108/plan9/sys/lib/acid/kernel:333,339 defn up() { local mach; + MACHADDR = KZERO+0x4000; mach = MACHADDR; complex Mach mach; return mach.externup; /n/sourcesdump/2005/1107/plan9/sys/lib/acid/kernel:362,372 - /n/sourcesdump/2005/1108/plan9/sys/lib/acid/kernel:366,378 print("\tinclude(\"/sys/src/9/", kdir, "/", s, ".acid\")\n"); } + defn kinit() { if (map()[2]) != {} then { // map has more than two elements -> active proc kdir = "unknown"; - + KZERO = kzero(); + if objtype == "386" then { - map({"*data", 0x80000000, 0xffffffff, 0x80000000}); + map({"*data", KZERO, 0xffffffff, KZERO}); kdir="pc"; } if (objtype == "mips" || objtype == "mips2") then { /n/sourcesdump/2005/1107/plan9/sys/lib/acid/kernel:373,381 - /n/sourcesdump/2005/1108/plan9/sys/lib/acid/kernel:379,387 kdir = "ch"; } if objtype == "alpha" then { - map({"*data", 0x80000000, 0xffffffff, 0x80000000}); + map({"*data", KZERO, 0xffffffff, KZERO}); kdir = "alpha"; } needacid("proc"); } - + }