601 lines
12 KiB
Plaintext
601 lines
12 KiB
Plaintext
You may want to change mach.c in this directory.
|
|
|
|
Archives MUST have a table of contents. Arch in subdirectory arch
|
|
automatically makes one when you change an archive.
|
|
|
|
Several changes in the assembler were needed to have it generate the
|
|
necessary output.
|
|
A contextual diff follows. You can apply them as follows:
|
|
patch -d /usr/em/philips/mach/68000/as < READ_ME
|
|
|
|
*** comm0.h.old Thu Dec 6 16:18:39 1984
|
|
--- comm0.h Thu Dec 6 17:49:51 1984
|
|
***************
|
|
*** 213,218
|
|
|
|
/*
|
|
* extra type bits out of S_ETC, internal use only
|
|
* S_COM:
|
|
* - symbols declared by .comm
|
|
* S_VAR:
|
|
|
|
--- 213,219 -----
|
|
|
|
/*
|
|
* extra type bits out of S_ETC, internal use only
|
|
+ #ifndef DUK
|
|
* S_COM:
|
|
* - symbols declared by .comm
|
|
#endif DUK
|
|
***************
|
|
*** 215,220
|
|
* extra type bits out of S_ETC, internal use only
|
|
* S_COM:
|
|
* - symbols declared by .comm
|
|
* S_VAR:
|
|
* - type not known at end of PASS_1 (S_VAR|S_UND)
|
|
* - value not known at end of PASS_2 (S_VAR|S_ABS)
|
|
|
|
--- 216,222 -----
|
|
#ifndef DUK
|
|
* S_COM:
|
|
* - symbols declared by .comm
|
|
+ #endif DUK
|
|
* S_VAR:
|
|
* - type not known at end of PASS_1 (S_VAR|S_UND)
|
|
* - value not known at end of PASS_2 (S_VAR|S_ABS)
|
|
***************
|
|
*** 221,226
|
|
* S_DOT:
|
|
* - dot expression
|
|
*/
|
|
#define S_COM 0x0100
|
|
#define S_VAR 0x0200
|
|
#define S_DOT 0x0400
|
|
|
|
--- 223,229 -----
|
|
* S_DOT:
|
|
* - dot expression
|
|
*/
|
|
+ #ifndef DUK
|
|
#define S_COM 0x0100
|
|
#endif DUK
|
|
#define S_VAR 0x0200
|
|
***************
|
|
*** 222,227
|
|
* - dot expression
|
|
*/
|
|
#define S_COM 0x0100
|
|
#define S_VAR 0x0200
|
|
#define S_DOT 0x0400
|
|
/* should be tested by preprocessor
|
|
|
|
--- 225,231 -----
|
|
*/
|
|
#ifndef DUK
|
|
#define S_COM 0x0100
|
|
+ #endif DUK
|
|
#define S_VAR 0x0200
|
|
#define S_DOT 0x0400
|
|
/* should be tested by preprocessor
|
|
*** comm2.y.old Thu Dec 6 16:19:07 1984
|
|
--- comm2.y Thu Dec 6 16:02:19 1984
|
|
***************
|
|
*** 229,234
|
|
{
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
newrelo($1.typ, (int)$<y_word>0);
|
|
#endif
|
|
emitx($1.val, (int)$<y_word>0);
|
|
|
|
--- 229,239 -----
|
|
{
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
+ #ifdef DUK
|
|
+ newrelo($1.typ,
|
|
+ (int)$<y_word>0 | RELBR | RELWR
|
|
+ );
|
|
+ #else DUK
|
|
newrelo($1.typ, (int)$<y_word>0);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 230,235
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
newrelo($1.typ, (int)$<y_word>0);
|
|
#endif
|
|
emitx($1.val, (int)$<y_word>0);
|
|
}
|
|
|
|
--- 235,241 -----
|
|
);
|
|
#else DUK
|
|
newrelo($1.typ, (int)$<y_word>0);
|
|
+ #endif DUK
|
|
#endif
|
|
emitx($1.val, (int)$<y_word>0);
|
|
}
|
|
***************
|
|
*** 237,242
|
|
{
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
newrelo($3.typ, (int)$<y_word>0);
|
|
#endif
|
|
emitx($3.val, (int)$<y_word>0);
|
|
|
|
--- 243,253 -----
|
|
{
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
+ #ifdef DUK
|
|
+ newrelo($3.typ,
|
|
+ (int)$<y_word>0 | RELBR | RELWR
|
|
+ );
|
|
+ #else DUK
|
|
newrelo($3.typ, (int)$<y_word>0);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 238,243
|
|
#ifdef RELOCATION
|
|
if (rflag != 0 && PASS_RELO)
|
|
newrelo($3.typ, (int)$<y_word>0);
|
|
#endif
|
|
emitx($3.val, (int)$<y_word>0);
|
|
}
|
|
|
|
--- 249,255 -----
|
|
);
|
|
#else DUK
|
|
newrelo($3.typ, (int)$<y_word>0);
|
|
+ #endif DUK
|
|
#endif
|
|
emitx($3.val, (int)$<y_word>0);
|
|
}
|
|
*** comm3.c.old Wed Jul 11 09:22:24 1984
|
|
--- comm3.c Fri Dec 7 13:06:26 1984
|
|
***************
|
|
*** 11,16
|
|
|
|
struct outhead outhead = {
|
|
O_MAGIC, O_STAMP, 0
|
|
#ifdef BYTES_REVERSED
|
|
| HF_BREV
|
|
#endif
|
|
|
|
--- 11,17 -----
|
|
|
|
struct outhead outhead = {
|
|
O_MAGIC, O_STAMP, 0
|
|
+ #ifndef DUK
|
|
#ifdef BYTES_REVERSED
|
|
| HF_BREV
|
|
#endif
|
|
***************
|
|
*** 17,22
|
|
#ifdef WORDS_REVERSED
|
|
| HF_WREV
|
|
#endif
|
|
};
|
|
|
|
#include "y.tab.h"
|
|
|
|
--- 18,24 -----
|
|
#ifdef WORDS_REVERSED
|
|
| HF_WREV
|
|
#endif
|
|
+ #endif DUK
|
|
};
|
|
|
|
#include "y.tab.h"
|
|
*** comm5.c.old Thu Dec 6 16:19:40 1984
|
|
--- comm5.c Thu Oct 11 14:03:27 1984
|
|
***************
|
|
*** 162,167
|
|
#endif
|
|
case STRING:
|
|
p = stringbuf;
|
|
*p++ = n = getc(tempfile); break;
|
|
case OP_EQ:
|
|
case OP_NE:
|
|
|
|
--- 162,172 -----
|
|
#endif
|
|
case STRING:
|
|
p = stringbuf;
|
|
+ #ifdef DUK
|
|
+ *p++ = n = getc(tempfile);
|
|
+ p[n] = '\0';
|
|
+ break;
|
|
+ #else DUK
|
|
*p++ = n = getc(tempfile); break;
|
|
#endif DUK
|
|
case OP_EQ:
|
|
***************
|
|
*** 163,168
|
|
case STRING:
|
|
p = stringbuf;
|
|
*p++ = n = getc(tempfile); break;
|
|
case OP_EQ:
|
|
case OP_NE:
|
|
case OP_LE:
|
|
|
|
--- 168,174 -----
|
|
break;
|
|
#else DUK
|
|
*p++ = n = getc(tempfile); break;
|
|
+ #endif DUK
|
|
case OP_EQ:
|
|
case OP_NE:
|
|
case OP_LE:
|
|
***************
|
|
*** 354,359
|
|
break;
|
|
if (c == '\\')
|
|
c = inescape();
|
|
if (p >= &stringbuf[STRINGMAX])
|
|
fatal("string buffer overflow");
|
|
*p++ = c;
|
|
|
|
--- 360,368 -----
|
|
break;
|
|
if (c == '\\')
|
|
c = inescape();
|
|
+ #ifdef DUK
|
|
+ if (p >= &stringbuf[STRINGMAX - 1])
|
|
+ #else DUK
|
|
if (p >= &stringbuf[STRINGMAX])
|
|
#endif DUK
|
|
fatal("string buffer overflow");
|
|
***************
|
|
*** 355,360
|
|
if (c == '\\')
|
|
c = inescape();
|
|
if (p >= &stringbuf[STRINGMAX])
|
|
fatal("string buffer overflow");
|
|
*p++ = c;
|
|
}
|
|
|
|
--- 364,370 -----
|
|
if (p >= &stringbuf[STRINGMAX - 1])
|
|
#else DUK
|
|
if (p >= &stringbuf[STRINGMAX])
|
|
+ #endif DUK
|
|
fatal("string buffer overflow");
|
|
*p++ = c;
|
|
}
|
|
***************
|
|
*** 359,364
|
|
*p++ = c;
|
|
}
|
|
stringbuf[0] = p - stringbuf - 1;
|
|
return(STRING);
|
|
}
|
|
|
|
|
|
--- 369,377 -----
|
|
*p++ = c;
|
|
}
|
|
stringbuf[0] = p - stringbuf - 1;
|
|
+ #ifdef DUK
|
|
+ *p = '\0';
|
|
+ #endif DUK
|
|
return(STRING);
|
|
}
|
|
|
|
*** comm6.c.old Thu Dec 6 16:20:22 1984
|
|
--- comm6.c Wed Oct 3 15:59:31 1984
|
|
***************
|
|
*** 106,111
|
|
sp = §[typ - S_MIN];
|
|
sp->s_item = ip;
|
|
sp->s_lign = ALIGNSECT;
|
|
ip->i_type = typ | S_EXT;
|
|
ip->i_valu = 0;
|
|
} else if (typ >= S_MIN) {
|
|
|
|
--- 106,114 -----
|
|
sp = §[typ - S_MIN];
|
|
sp->s_item = ip;
|
|
sp->s_lign = ALIGNSECT;
|
|
+ #ifdef DUK
|
|
+ ip->i_type = typ;
|
|
+ #else DUK
|
|
ip->i_type = typ | S_EXT;
|
|
#endif DUK
|
|
ip->i_valu = 0;
|
|
***************
|
|
*** 107,112
|
|
sp->s_item = ip;
|
|
sp->s_lign = ALIGNSECT;
|
|
ip->i_type = typ | S_EXT;
|
|
ip->i_valu = 0;
|
|
} else if (typ >= S_MIN) {
|
|
sp = §[typ - S_MIN];
|
|
|
|
--- 110,116 -----
|
|
ip->i_type = typ;
|
|
#else DUK
|
|
ip->i_type = typ | S_EXT;
|
|
+ #endif DUK
|
|
ip->i_valu = 0;
|
|
} else if (typ >= S_MIN) {
|
|
sp = §[typ - S_MIN];
|
|
***************
|
|
*** 180,185
|
|
* for possible relocation
|
|
*/
|
|
ip->i_valu = outhead.oh_nname;
|
|
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
|
#endif
|
|
}
|
|
|
|
--- 184,192 -----
|
|
* for possible relocation
|
|
*/
|
|
ip->i_valu = outhead.oh_nname;
|
|
+ #ifdef DUK
|
|
+ newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val);
|
|
+ #else DUK
|
|
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 181,186
|
|
*/
|
|
ip->i_valu = outhead.oh_nname;
|
|
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
|
#endif
|
|
}
|
|
|
|
|
|
--- 188,194 -----
|
|
newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val);
|
|
#else DUK
|
|
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
|
+ #endif DUK
|
|
#endif
|
|
}
|
|
|
|
***************
|
|
*** 255,260
|
|
short s;
|
|
{
|
|
struct outrelo outrelo;
|
|
|
|
if (rflag == 0)
|
|
return;
|
|
|
|
--- 263,271 -----
|
|
short s;
|
|
{
|
|
struct outrelo outrelo;
|
|
+ #ifdef DUK
|
|
+ int iscomm;
|
|
+ #endif DUK
|
|
|
|
if (rflag == 0)
|
|
return;
|
|
***************
|
|
*** 272,277
|
|
* b=a
|
|
* a: .data2 0
|
|
*/
|
|
s &= ~S_COM;
|
|
if ((n & RELPC) == 0 && s == S_ABS)
|
|
return;
|
|
|
|
--- 283,291 -----
|
|
* b=a
|
|
* a: .data2 0
|
|
*/
|
|
+ #ifdef DUK
|
|
+ iscomm = s & S_COM;
|
|
+ #endif DUK
|
|
s &= ~S_COM;
|
|
if ((n & RELPC) == 0 && s == S_ABS)
|
|
return;
|
|
***************
|
|
*** 285,290
|
|
outrelo.or_type = (char)n;
|
|
outrelo.or_sect = (char)DOTTYP;
|
|
#ifndef ASLD
|
|
if (s == S_UND) {
|
|
assert(relonami != 0);
|
|
outrelo.or_nami = relonami-1;
|
|
|
|
--- 299,307 -----
|
|
outrelo.or_type = (char)n;
|
|
outrelo.or_sect = (char)DOTTYP;
|
|
#ifndef ASLD
|
|
+ #ifdef DUK
|
|
+ if (s == S_UND || iscomm) {
|
|
+ #else DUK
|
|
if (s == S_UND) {
|
|
#endif DUK
|
|
assert(relonami != 0);
|
|
***************
|
|
*** 286,291
|
|
outrelo.or_sect = (char)DOTTYP;
|
|
#ifndef ASLD
|
|
if (s == S_UND) {
|
|
assert(relonami != 0);
|
|
outrelo.or_nami = relonami-1;
|
|
relonami = 0;
|
|
|
|
--- 303,309 -----
|
|
if (s == S_UND || iscomm) {
|
|
#else DUK
|
|
if (s == S_UND) {
|
|
+ #endif DUK
|
|
assert(relonami != 0);
|
|
outrelo.or_nami = relonami-1;
|
|
relonami = 0;
|
|
*** comm7.c.old Thu Dec 6 16:20:50 1984
|
|
--- comm7.c Wed Oct 3 16:35:31 1984
|
|
***************
|
|
*** 19,24
|
|
return(ip->i_valu);
|
|
return(ip->i_valu + sect[typ].s_base);
|
|
#else
|
|
if ((ip->i_type & S_TYP) == S_UND) {
|
|
if (pass == PASS_3) {
|
|
if (relonami != 0)
|
|
|
|
--- 19,27 -----
|
|
return(ip->i_valu);
|
|
return(ip->i_valu + sect[typ].s_base);
|
|
#else
|
|
+ #ifdef DUK
|
|
+ if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
|
|
+ #else DUK
|
|
if ((ip->i_type & S_TYP) == S_UND) {
|
|
#endif DUK
|
|
if (pass == PASS_3) {
|
|
***************
|
|
*** 20,25
|
|
return(ip->i_valu + sect[typ].s_base);
|
|
#else
|
|
if ((ip->i_type & S_TYP) == S_UND) {
|
|
if (pass == PASS_3) {
|
|
if (relonami != 0)
|
|
serror("relocation error");
|
|
|
|
--- 23,29 -----
|
|
if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
|
|
#else DUK
|
|
if ((ip->i_type & S_TYP) == S_UND) {
|
|
+ #endif DUK
|
|
if (pass == PASS_3) {
|
|
if (relonami != 0)
|
|
serror("relocation error");
|
|
*** mach0.c.old Thu Dec 6 16:21:11 1984
|
|
--- mach0.c Fri Sep 14 14:15:54 1984
|
|
***************
|
|
*** 1,3
|
|
/* @(#)mach0.c 1.5 */
|
|
/*
|
|
* Motorola 68000/68010 options
|
|
|
|
--- 1,4 -----
|
|
+ #define DUK
|
|
/* @(#)mach0.c 1.5 */
|
|
/*
|
|
* Motorola 68000/68010 options
|
|
*** mach4.c.old Thu Dec 6 16:21:30 1984
|
|
--- mach4.c Thu Dec 6 16:05:00 1984
|
|
***************
|
|
*** 21,26
|
|
fit(fitw($4.val));
|
|
emit2($1 | $2);
|
|
#ifdef RELOCATION
|
|
newrelo($4.typ, RELPC|RELO2);
|
|
#endif
|
|
emit2(loww($4.val));
|
|
|
|
--- 21,29 -----
|
|
fit(fitw($4.val));
|
|
emit2($1 | $2);
|
|
#ifdef RELOCATION
|
|
+ #ifdef DUK
|
|
+ newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
|
|
+ #else DUK
|
|
newrelo($4.typ, RELPC|RELO2);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 22,27
|
|
emit2($1 | $2);
|
|
#ifdef RELOCATION
|
|
newrelo($4.typ, RELPC|RELO2);
|
|
#endif
|
|
emit2(loww($4.val));
|
|
}
|
|
|
|
--- 25,31 -----
|
|
newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
|
|
#else DUK
|
|
newrelo($4.typ, RELPC|RELO2);
|
|
+ #endif DUK
|
|
#endif
|
|
emit2(loww($4.val));
|
|
}
|
|
*** mach5.c.old Thu Dec 6 16:21:54 1984
|
|
--- mach5.c Thu Dec 6 16:07:05 1984
|
|
***************
|
|
*** 37,42
|
|
#ifdef RELOCATION
|
|
RELOMOVE(relonami, rel_1);
|
|
if (flag & ~0xFF)
|
|
newrelo(exp_1.typ, flag>>8);
|
|
#endif
|
|
if (flag & PUTL)
|
|
|
|
--- 37,45 -----
|
|
#ifdef RELOCATION
|
|
RELOMOVE(relonami, rel_1);
|
|
if (flag & ~0xFF)
|
|
+ #ifdef DUK
|
|
+ newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR);
|
|
+ #else DUK
|
|
newrelo(exp_1.typ, flag>>8);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 38,43
|
|
RELOMOVE(relonami, rel_1);
|
|
if (flag & ~0xFF)
|
|
newrelo(exp_1.typ, flag>>8);
|
|
#endif
|
|
if (flag & PUTL)
|
|
emit4(exp_1.val);
|
|
|
|
--- 41,47 -----
|
|
newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR);
|
|
#else DUK
|
|
newrelo(exp_1.typ, flag>>8);
|
|
+ #endif DUK
|
|
#endif
|
|
if (flag & PUTL)
|
|
emit4(exp_1.val);
|
|
***************
|
|
*** 357,362
|
|
fit(fitw(exp.val));
|
|
emit2(opc);
|
|
#ifdef RELOCATION
|
|
newrelo(exp.typ, RELPC|RELO2);
|
|
#endif
|
|
emit2(loww(exp.val));
|
|
|
|
--- 361,369 -----
|
|
fit(fitw(exp.val));
|
|
emit2(opc);
|
|
#ifdef RELOCATION
|
|
+ #ifdef DUK
|
|
+ newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
|
|
+ #else DUK
|
|
newrelo(exp.typ, RELPC|RELO2);
|
|
#endif DUK
|
|
#endif
|
|
***************
|
|
*** 358,363
|
|
emit2(opc);
|
|
#ifdef RELOCATION
|
|
newrelo(exp.typ, RELPC|RELO2);
|
|
#endif
|
|
emit2(loww(exp.val));
|
|
}
|
|
|
|
--- 365,371 -----
|
|
newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
|
|
#else DUK
|
|
newrelo(exp.typ, RELPC|RELO2);
|
|
+ #endif DUK
|
|
#endif
|
|
emit2(loww(exp.val));
|
|
}
|