+ .macro test_call,name
+ .set mips16
+ .text
+ .ent test_\name
+test_\name:
+ jal \name
+ .end test_\name
+ .endm
+
+ .macro call_stub,name
+ .set nomips16
+ .section .mips16.call.\name, "ax", @progbits
+ .ent __call_\name
+__call_\name:
+ la $25,\name
+ jr $25
+ mtc1 $4,$f12
+ .end __call_\name
+
+ test_call \name
+ .endm
+
+ .macro call_fp_stub,name
+ .set nomips16
+ .section .mips16.call.fp.\name, "ax", @progbits
+ .ent __call_fp_\name
+__call_fp_\name:
+ move $18,$31
+ la $25,\name
+ jalr $25
+ mtc1 $4,$f12
+ mfc1 $2,$f0
+ jr $18
+ nop
+ .end __call_fp_\name
+
+ test_call \name
+ .endm
+
+ .macro lstub,name,mode
+ .set \mode
+ .text
+ .ent \name
+\name:
+ jr $31
+ nop
+ .end \name
+ .endm
+
+ .macro hstub,name,mode
+ .globl \name
+ .hidden \name
+ lstub \name, \mode
+ .endm
+
+ .macro gstub,name,mode
+ .globl \name
+ lstub \name, \mode
+ .endm