Index: fusl/arch/mips/crt_arch.h |
diff --git a/fusl/arch/mips/crt_arch.h b/fusl/arch/mips/crt_arch.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f4ba02aeafc49a190db4e188db5fc77ae06bc373 |
--- /dev/null |
+++ b/fusl/arch/mips/crt_arch.h |
@@ -0,0 +1,32 @@ |
+__asm__( |
+".set push\n" |
+".set noreorder\n" |
+".text \n" |
+".global _" START "\n" |
+".global " START "\n" |
+".global " START "_data\n" |
+".type _" START ", @function\n" |
+".type " START ", @function\n" |
+".type " START "_data, @function\n" |
+"_" START ":\n" |
+"" START ":\n" |
+" bal 1f \n" |
+" move $fp, $0 \n" |
+"" START "_data: \n" |
+" .gpword " START "_data \n" |
+" .gpword " START "_c \n" |
+".weak _DYNAMIC \n" |
+".hidden _DYNAMIC \n" |
+" .gpword _DYNAMIC \n" |
+"1: lw $gp, 0($ra) \n" |
+" subu $gp, $ra, $gp \n" |
+" move $4, $sp \n" |
+" lw $5, 8($ra) \n" |
+" addu $5, $5, $gp \n" |
+" lw $25, 4($ra) \n" |
+" addu $25, $25, $gp \n" |
+" and $sp, $sp, -8 \n" |
+" jalr $25 \n" |
+" subu $sp, $sp, 16 \n" |
+".set pop \n" |
+); |