* More changes to better obey ABI rules

git-svn-id: trunk@23588 -
This commit is contained in:
pierre 2013-02-10 13:01:49 +00:00
parent 77bbb8b5bc
commit bb1e7646cb

View File

@ -58,26 +58,36 @@ _dynamic_start:
*/ */
_start: _start:
.ent _start .ent _start
.frame $sp,36,$ra
/* load fp */ /* load fp */
.set noreorder .set noreorder
.cpload $25 .cpload $25
/* Record $sp into $s8 */ /* Record $sp into $t1,
move $s8,$sp to cope with unknown alignment value. */
move $t1,$sp
/* align stack */ /* align stack */
li $at,-8 li $at,-8
and $sp,$sp,$at 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 */ /* Compute and save sp offset */
subu $t1,$s8,$sp subu $t1,$t1,$sp
sw $t1,24($sp) sw $t1,20($sp)
/* Save $ra register */
sw $ra,28($sp)
/* Save $gp register */ /* 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 */ /* Set __stkptr variable */
move $s8,$sp move $s8,$sp
@ -104,14 +114,16 @@ _start:
sb $t2,($t1) sb $t2,($t1)
/* Jump to PASCALMAIN */ /* Jump to PASCALMAIN */
la $t9,PASCALMAIN la $t9,PASCALMAIN
jalr $t9 jal $t9
nop nop
/* Restore $ra */ /* Restore $ra */
lw $ra,28($sp) lw $ra,32($sp)
/* Restore $s8 */
lw $s8,28($sp)
/* Restore old $sp */ /* Restore old $sp */
lw $t1,24($sp) lw $t1,20($sp)
addu $sp,$sp,$t1 addu $sp,$sp,$t1
/* Return to caller */ /* Return to caller */
jr $ra jr $ra