link instruction does not work for more than 32768 bytes locals on M68000
This commit is contained in:
		
							parent
							
								
									3868470366
								
							
						
					
					
						commit
						edf2f575a2
					
				
					 4 changed files with 16 additions and 4 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue