1 .globl func_add1, func_add1_end
11 .globl func_add3, func_add3_end
14 {.mmi; alloc loc0 = ar.pfs, 2, 1, 2, 0
18 {.mii; ld8 r8 = [in1], 8 // load the function pointer
20 mov rp = loc0 // trash rp
22 {.mmi; ld8 r9 = [r8], 8 // load the entry-point
26 {.mii; ld8 gp = [r8] // load the gp
34 {.mmi; add r2 = 16, sp
36 ld8 r3 = [r2] // r3 = saved rp
43 {.mib; st8 [sp] = in0 // trash rp save location
50 .globl func_vframe, func_vframe_end
53 {.mii; alloc r16 = ar.pfs, 1, 2, 0, 0 // 0
57 {.mmi; sub sp = sp, in0
66 tbit.nz p6, p0 = in0, 4
67 (p6) br.cond.sptk.many .exit
69 {.mmi; ld8 r16 = [loc1]
71 mov r3 = loc0 // 8 move saved rp to r3
74 {.mmi; mov sp = loc1 // 10
75 st8 [loc1] = r0 // trash saved pfs
83 {.mmi; ld8 r16 = [loc1]
89 st8 [loc1] = r0 // trash saved pfs
100 /* We do not need executable stack. */
101 .section .note.GNU-stack,"",@progbits