| .macro makestub,type,func,section |
| .text |
| .set \type |
| .type \func,@function |
| .ent \func |
| \func: |
| jr $31 |
| .end \func |
| |
| .section \section,"ax",@progbits |
| .set nomips16 |
| .type stub_for_\func,@function |
| .ent stub_for_\func |
| stub_for_\func: |
| .set noat |
| la $1,\func |
| jr $1 |
| .set at |
| .end stub_for_\func |
| .endm |
| |
| .macro makestubs,id |
| makestub nomips16,f\id,.mips16.call.F\id |
| makestub nomips16,g\id,.mips16.call.fp.G\id |
| makestub mips16,h\id,.mips16.fn.H\id |
| .endm |
| |
| .macro makecaller,type,func |
| .text |
| .set \type |
| .globl \func |
| .type \func,@function |
| .ent \func |
| \func: |
| jal f1 |
| jal f2 |
| jal g1 |
| jal g2 |
| jal h1 |
| jal h2 |
| .end \func |
| .endm |
| |
| makestubs 1 |
| makestubs 2 |
| makestubs 3 |
| |
| makecaller nomips16,caller1 |
| makecaller mips16,caller2 |