link instruction does not work for more than 32768 bytes locals on M68000

This commit is contained in:
ceriel 1989-11-15 16:10:18 +00:00
parent 3868470366
commit edf2f575a2
4 changed files with 16 additions and 4 deletions

View file

@ -125,7 +125,10 @@ f_regsave()
#ifdef TBL68020
fprintf(codefile,"link\ta6,#-%ld\n",nlocals);
#else
fprintf(codefile,"tst.b -%ld(sp)\nlink\ta6,#-%ld\n",nlocals+40,nlocals);
if (nlocals > 32768) {
fprintf(codefile, "move.l a6,-(sp)\nmove.l sp,a6\nsub #%ld,sp\ntst.b -40(sp)\n", nlocals);
}
else fprintf(codefile,"link\ta6,#-%ld\ntst.b -40(sp)\n",nlocals);
#endif
if (regnr > 1) {
fputs("movem.l ", codefile);

View file

@ -125,7 +125,10 @@ f_regsave()
#ifdef TBL68020
fprintf(codefile,"link\ta6,#-%ld\n",nlocals);
#else
fprintf(codefile,"tst.b -%ld(sp)\nlink\ta6,#-%ld\n",nlocals+40,nlocals);
if (nlocals > 32768) {
fprintf(codefile, "move.l a6,-(sp)\nmove.l sp,a6\nsub #%ld,sp\ntst.b -40(sp)\n", nlocals);
}
else fprintf(codefile,"link\ta6,#-%ld\ntst.b -40(sp)\n",nlocals);
#endif
if (regnr > 1) {
fputs("movem.l ", codefile);

View file

@ -125,7 +125,10 @@ f_regsave()
#ifdef TBL68020
fprintf(codefile,"link\ta6,#-%ld\n",nlocals);
#else
fprintf(codefile,"tst.b -%ld(sp)\nlink\ta6,#-%ld\n",nlocals+40,nlocals);
if (nlocals > 32768) {
fprintf(codefile, "move.l a6,-(sp)\nmove.l sp,a6\nsub #%ld,sp\ntst.b -40(sp)\n", nlocals);
}
else fprintf(codefile,"link\ta6,#-%ld\ntst.b -40(sp)\n",nlocals);
#endif
if (regnr > 1) {
fputs("movem.l ", codefile);

View file

@ -125,7 +125,10 @@ f_regsave()
#ifdef TBL68020
fprintf(codefile,"link\ta6,#-%ld\n",nlocals);
#else
fprintf(codefile,"tst.b -%ld(sp)\nlink\ta6,#-%ld\n",nlocals+40,nlocals);
if (nlocals > 32768) {
fprintf(codefile, "move.l a6,-(sp)\nmove.l sp,a6\nsub #%ld,sp\ntst.b -40(sp)\n", nlocals);
}
else fprintf(codefile,"link\ta6,#-%ld\ntst.b -40(sp)\n",nlocals);
#endif
if (regnr > 1) {
fputs("movem.l ", codefile);