mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 06:49:27 +02:00
* More changes to better obey ABI rules
git-svn-id: trunk@23588 -
This commit is contained in:
parent
77bbb8b5bc
commit
bb1e7646cb
@ -58,26 +58,36 @@ _dynamic_start:
|
||||
*/
|
||||
_start:
|
||||
.ent _start
|
||||
.frame $sp,36,$ra
|
||||
/* load fp */
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.cpload $25
|
||||
|
||||
/* Record $sp into $s8 */
|
||||
move $s8,$sp
|
||||
/* Record $sp into $t1,
|
||||
to cope with unknown alignment value. */
|
||||
move $t1,$sp
|
||||
|
||||
/* align stack */
|
||||
li $at,-8
|
||||
and $sp,$sp,$at
|
||||
addiu $sp,$sp,-32
|
||||
addiu $sp,$sp,-36
|
||||
|
||||
/* Save needed regs:
|
||||
$t1, at offset 20
|
||||
$gp ($28), at offset 24
|
||||
$s8 ($30), at offset 28
|
||||
$ra ($31), at offset 32
|
||||
*/
|
||||
|
||||
/* Compute and save sp offset */
|
||||
subu $t1,$s8,$sp
|
||||
sw $t1,24($sp)
|
||||
|
||||
/* Save $ra register */
|
||||
sw $ra,28($sp)
|
||||
subu $t1,$t1,$sp
|
||||
sw $t1,20($sp)
|
||||
/* Save $gp register */
|
||||
.cprestore 20
|
||||
.cprestore 24
|
||||
/* Save previous $s8 at offset 28 */
|
||||
sw $s8,28($sp)
|
||||
/* Save $ra register */
|
||||
sw $ra,32($sp)
|
||||
|
||||
/* Set __stkptr variable */
|
||||
move $s8,$sp
|
||||
@ -104,14 +114,16 @@ _start:
|
||||
sb $t2,($t1)
|
||||
/* Jump to PASCALMAIN */
|
||||
la $t9,PASCALMAIN
|
||||
jalr $t9
|
||||
jal $t9
|
||||
nop
|
||||
|
||||
/* Restore $ra */
|
||||
lw $ra,28($sp)
|
||||
lw $ra,32($sp)
|
||||
/* Restore $s8 */
|
||||
lw $s8,28($sp)
|
||||
|
||||
/* Restore old $sp */
|
||||
lw $t1,24($sp)
|
||||
lw $t1,20($sp)
|
||||
addu $sp,$sp,$t1
|
||||
/* Return to caller */
|
||||
jr $ra
|
||||
|
Loading…
Reference in New Issue
Block a user