diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-22 17:49:28 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-22 17:49:28 +0100 |
commit | 8caec8564d6221146e055937b6ae344a647c7c82 (patch) | |
tree | 2fe394982af83cc2cb80b2c82587bdbf3486811a /sys/src | |
parent | 80658d6ccf522200c286f02e947f3c9d2afe7ea9 (diff) |
vl, libmach, kernel: mips has 16K alignment for segments (for bigpages)
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/9/port/sysproc.c | 7 | ||||
-rw-r--r-- | sys/src/cmd/vl/obj.c | 8 | ||||
-rw-r--r-- | sys/src/libmach/v.c | 6 |
3 files changed, 13 insertions, 8 deletions
diff --git a/sys/src/9/port/sysproc.c b/sys/src/9/port/sysproc.c index 4b26d0970..b2e017c12 100644 --- a/sys/src/9/port/sysproc.c +++ b/sys/src/9/port/sysproc.c @@ -284,9 +284,14 @@ sysexec(va_list list) text = l2be(exec.text); entry = l2be(exec.entry); if(n==sizeof(Exec) && (magic == AOUT_MAGIC)){ - if(magic == S_MAGIC){ + switch(magic){ + case S_MAGIC: text += 8; align = 0x200000ull; /* 2MB segment alignment for amd64 */ + break; + case V_MAGIC: + align = 0x4000ull; /* MIPS has 16K page alignment */ + break; } if(text >= (USTKTOP-USTKSIZE)-(UTZERO+sizeof(Exec)) || entry < UTZERO+sizeof(Exec) diff --git a/sys/src/cmd/vl/obj.c b/sys/src/cmd/vl/obj.c index 4404f682f..6002b7417 100644 --- a/sys/src/cmd/vl/obj.c +++ b/sys/src/cmd/vl/obj.c @@ -14,7 +14,7 @@ char *thestring = "mips"; /* * -H0 -T0x40004C -D0x10000000 is abbrev unix * -H1 -T0x80020000 -R4 is bootp() format for 3k - * -H2 -T4128 -R4096 is plan9 format + * -H2 -T0x4020 -R0x4000 is plan9 format * -H3 -T0x80020000 -R8 is bootp() format for 4k * -H4 -T0x400000 -R4 is sgi unix coff executable * -H5 -T0x4000A0 -R4 is sgi unix elf executable @@ -124,12 +124,12 @@ main(int argc, char *argv[]) break; case 2: /* plan 9 */ HEADR = 32L; - if(INITTEXT == -1) - INITTEXT = 4128; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) - INITRND = 4096; + INITRND = 16*1024; + if(INITTEXT == -1) + INITTEXT = INITRND+HEADR; break; case 3: /* boot for 4k */ HEADR = 20L+56L+3*40L; diff --git a/sys/src/libmach/v.c b/sys/src/libmach/v.c index a03799aac..43695e08c 100644 --- a/sys/src/libmach/v.c +++ b/sys/src/libmach/v.c @@ -109,9 +109,9 @@ Mach mmips = "R31", /* name of link register */ "setR30", /* static base register name */ 0, /* value */ - 0x1000, /* page size */ - 0xC0000000ULL, /* kernel base */ - 0x40000000ULL, /* kernel text mask */ + 16*1024, /* page size */ + 0x80000000ULL, /* kernel base */ + 0x80000000ULL, /* kernel text mask */ 0x7FFFFFFFULL, /* user stack top */ 4, /* quantization of pc */ 4, /* szaddr */ |