50 lines
726 B
ArmAsm
50 lines
726 B
ArmAsm
.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
|