mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Corrects previously incorrect $sp change in MipsCompilationCallback.
The address for $sp, and addresses for sdc1/ldc1 must be 8-byte aligned Patch by Petar Jovanovic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142930 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
51583ce4b6
commit
02dc51806e
@ -57,11 +57,11 @@ void MipsCompilationCallback();
|
||||
".globl " ASMPREFIX "MipsCompilationCallback\n"
|
||||
ASMPREFIX "MipsCompilationCallback:\n"
|
||||
".ent " ASMPREFIX "MipsCompilationCallback\n"
|
||||
".frame $29, 32, $31\n"
|
||||
".frame $sp, 32, $ra\n"
|
||||
".set noreorder\n"
|
||||
".cpload $t9\n"
|
||||
|
||||
"addiu $sp, $sp, -60\n"
|
||||
"addiu $sp, $sp, -64\n"
|
||||
".cprestore 16\n"
|
||||
|
||||
// Save argument registers a0, a1, a2, a3, f12, f14 since they may contain
|
||||
@ -76,8 +76,8 @@ void MipsCompilationCallback();
|
||||
"sw $a3, 32($sp)\n"
|
||||
"sw $ra, 36($sp)\n"
|
||||
"sw $t8, 40($sp)\n"
|
||||
"sdc1 $f12, 44($sp)\n"
|
||||
"sdc1 $f14, 52($sp)\n"
|
||||
"sdc1 $f12, 48($sp)\n"
|
||||
"sdc1 $f14, 56($sp)\n"
|
||||
|
||||
// t8 points at the end of function stub. Pass the beginning of the stub
|
||||
// to the MipsCompilationCallbackC.
|
||||
@ -92,9 +92,9 @@ void MipsCompilationCallback();
|
||||
"lw $a3, 32($sp)\n"
|
||||
"lw $ra, 36($sp)\n"
|
||||
"lw $t8, 40($sp)\n"
|
||||
"ldc1 $f12, 44($sp)\n"
|
||||
"ldc1 $f14, 52($sp)\n"
|
||||
"addiu $sp, $sp, 60\n"
|
||||
"ldc1 $f12, 48($sp)\n"
|
||||
"ldc1 $f14, 56($sp)\n"
|
||||
"addiu $sp, $sp, 64\n"
|
||||
|
||||
// Jump to the (newly modified) stub to invoke the real function.
|
||||
"addiu $t8, $t8, -16\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user