diff options
| -rw-r--r-- | CHANGES | 2 | ||||
| -rw-r--r-- | include/version.h | 2 | ||||
| -rw-r--r-- | utils/libmach/5.c | 6 | ||||
| -rw-r--r-- | utils/libmach/5db.c | 2 | ||||
| -rw-r--r-- | utils/libmach/5obj.c | 7 | ||||
| -rw-r--r-- | utils/libmach/8.c | 21 | ||||
| -rw-r--r-- | utils/libmach/8obj.c | 7 | ||||
| -rw-r--r-- | utils/libmach/k.c | 3 | ||||
| -rw-r--r-- | utils/libmach/kobj.c | 7 | ||||
| -rw-r--r-- | utils/libmach/v.c | 1 | ||||
| -rw-r--r-- | utils/libmach/vobj.c | 7 |
11 files changed, 41 insertions, 24 deletions
@@ -1,3 +1,5 @@ +20120509 + utils/libmach: add missing user stack top initialisers, minor changes to sync with 9 20120507 mkfiles/mkfile-MacOSX-386 change cc to gcc emu/MacOSX/win.c null out drawcursor diff --git a/include/version.h b/include/version.h index deba09d0..d648718b 100644 --- a/include/version.h +++ b/include/version.h @@ -1 +1 @@ -#define VERSION "Fourth Edition (20120507)" +#define VERSION "Fourth Edition (20120509)" diff --git a/utils/libmach/5.c b/utils/libmach/5.c index 1210d7f2..a96f9385 100644 --- a/utils/libmach/5.c +++ b/utils/libmach/5.c @@ -16,7 +16,6 @@ Reglist armreglist[] = { - {"LINK", REGOFF(link), RINT|RRDONLY, 'X'}, {"TYPE", REGOFF(type), RINT|RRDONLY, 'X'}, {"PSR", REGOFF(psr), RINT|RRDONLY, 'X'}, {"PC", PC, RINT, 'X'}, @@ -50,12 +49,13 @@ Mach marm = 0, /* fp register set size */ "PC", /* name of PC */ "SP", /* name of SP */ - "R15", /* name of link register */ + "R14", /* name of link register */ "setR12", /* static base register name */ 0, /* static base register value */ 0x1000, /* page size */ 0xC0000000, /* kernel base */ - 0, /* kernel text mask */ + 0xC0000000, /* kernel text mask */ + 0x3FFFFFFF, /* user stack top */ 4, /* quantization of pc */ 4, /* szaddr */ 4, /* szreg */ diff --git a/utils/libmach/5db.c b/utils/libmach/5db.c index 535739e8..d3628749 100644 --- a/utils/libmach/5db.c +++ b/utils/libmach/5db.c @@ -60,7 +60,7 @@ static int arminstlen(Map*, uvlong); */ Machdata armmach = { - {0, 0, 0, 0xD}, /* break point */ + {0x70, 0x00, 0x20, 0xD1}, /* break point */ /* D1200070 */ 4, /* break point size */ leswab, /* short to local byte order */ diff --git a/utils/libmach/5obj.c b/utils/libmach/5obj.c index e7e3437c..3051b8e0 100644 --- a/utils/libmach/5obj.c +++ b/utils/libmach/5obj.c @@ -36,9 +36,12 @@ _read5(Biobuf *bp, Prog *p) if(as < 0) return 0; p->kind = aNone; + p->sig = 0; if(as == ANAME || as == ASIGNAME){ - if(as == ASIGNAME) - skip(bp, 4); /* signature */ + if(as == ASIGNAME){ + Bread(bp, &p->sig, 4); + p->sig = leswal(p->sig); + } p->kind = aName; p->type = type2char(Bgetc(bp)); /* type */ p->sym = Bgetc(bp); /* sym */ diff --git a/utils/libmach/8.c b/utils/libmach/8.c index 9c7bff11..c636bd00 100644 --- a/utils/libmach/8.c +++ b/utils/libmach/8.c @@ -15,7 +15,7 @@ #define REGSIZE sizeof(struct Ureg) #define FP_CTL(x) (REGSIZE+4*(x)) #define FP_REG(x) (FP_CTL(7)+10*(x)) -#define FPREGSIZE (6*4+8*10) +#define FPREGSIZE (7*4+8*10) Reglist i386reglist[] = { {"DI", REGOFF(di), RINT, 'X'}, @@ -44,14 +44,14 @@ Reglist i386reglist[] = { {"E4", FP_CTL(4), RFLT, 'X'}, {"E5", FP_CTL(5), RFLT, 'X'}, {"E6", FP_CTL(6), RFLT, 'X'}, - {"F0", FP_REG(7), RFLT, '3'}, - {"F1", FP_REG(6), RFLT, '3'}, - {"F2", FP_REG(5), RFLT, '3'}, - {"F3", FP_REG(4), RFLT, '3'}, - {"F4", FP_REG(3), RFLT, '3'}, - {"F5", FP_REG(2), RFLT, '3'}, - {"F6", FP_REG(1), RFLT, '3'}, - {"F7", FP_REG(0), RFLT, '3'}, + {"F0", FP_REG(0), RFLT, '3'}, + {"F1", FP_REG(1), RFLT, '3'}, + {"F2", FP_REG(2), RFLT, '3'}, + {"F3", FP_REG(3), RFLT, '3'}, + {"F4", FP_REG(4), RFLT, '3'}, + {"F5", FP_REG(5), RFLT, '3'}, + {"F6", FP_REG(6), RFLT, '3'}, + {"F7", FP_REG(7), RFLT, '3'}, { 0 } }; @@ -69,7 +69,8 @@ Mach mi386 = 0, /* static base register value */ 0x1000, /* page size */ 0x80100000, /* kernel base */ - 0, /* kernel text mask */ + 0x80000000, /* kernel text mask */ + 0x7FFFFFFF, /* user stack top */ 1, /* quantization of pc */ 4, /* szaddr */ 4, /* szreg */ diff --git a/utils/libmach/8obj.c b/utils/libmach/8obj.c index 9e322f12..0ec13c4a 100644 --- a/utils/libmach/8obj.c +++ b/utils/libmach/8obj.c @@ -42,9 +42,12 @@ _read8(Biobuf *bp, Prog* p) return 0; as |= ((c & 0xff) << 8); p->kind = aNone; + p->sig = 0; if(as == ANAME || as == ASIGNAME){ - if(as == ASIGNAME) - skip(bp, 4); /* signature */ + if(as == ASIGNAME){ + Bread(bp, &p->sig, 4); + p->sig = leswal(p->sig); + } p->kind = aName; p->type = type2char(Bgetc(bp)); /* type */ p->sym = Bgetc(bp); /* sym */ diff --git a/utils/libmach/k.c b/utils/libmach/k.c index 30ae15a0..9b0a45e7 100644 --- a/utils/libmach/k.c +++ b/utils/libmach/k.c @@ -108,7 +108,8 @@ Mach msparc = 0, /* value */ 0x1000, /* page size */ 0xE0000000, /* kernel base */ - 0, /* kernel text mask */ + 0xE0000000, /* kernel text mask */ + 0x7FFFFFFF, /* user stack top */ 4, /* quantization of pc */ 4, /* szaddr */ 4, /* szreg */ diff --git a/utils/libmach/kobj.c b/utils/libmach/kobj.c index f8d7e613..d2a6ad27 100644 --- a/utils/libmach/kobj.c +++ b/utils/libmach/kobj.c @@ -38,9 +38,12 @@ _readk(Biobuf *bp, Prog *p) if(as < 0) return 0; p->kind = aNone; + p->sig = 0; if(as == ANAME || as == ASIGNAME){ - if(as == ASIGNAME) - skip(bp, 4); /* signature */ + if(as == ASIGNAME){ + Bread(bp, &p->sig, 4); + p->sig = beswal(p->sig); + } p->kind = aName; p->type = type2char(Bgetc(bp)); /* type */ p->sym = Bgetc(bp); /* sym */ diff --git a/utils/libmach/v.c b/utils/libmach/v.c index add94113..3b2daf87 100644 --- a/utils/libmach/v.c +++ b/utils/libmach/v.c @@ -108,6 +108,7 @@ Mach mmips = 0x1000, /* page size */ 0xC0000000, /* kernel base */ 0x40000000, /* kernel text mask */ + 0x7FFFFFFF, /* user stack top */ 4, /* quantization of pc */ 4, /* szaddr */ 4, /* szreg */ diff --git a/utils/libmach/vobj.c b/utils/libmach/vobj.c index f676d219..2feeb8ca 100644 --- a/utils/libmach/vobj.c +++ b/utils/libmach/vobj.c @@ -36,9 +36,12 @@ _readv(Biobuf *bp, Prog *p) if(as < 0) return 0; p->kind = aNone; + p->sig = 0; if(as == ANAME || as == ASIGNAME){ - if(as == ASIGNAME) - skip(bp, 4); /* signature */ + if(as == ASIGNAME){ + Bread(bp, &p->sig, 4); + p->sig = beswal(p->sig); + } p->kind = aName; p->type = type2char(Bgetc(bp)); /* type */ p->sym = Bgetc(bp); /* sym */ |
