Files
intel-linux-sgx/sdk/cpprt/linux/libunwind/tests/ia64-dyn-asm.S
Li, Xun c505e6129a Linux 2.6 Open Source Gold Release
Added support for Reproducible Enclave Build using Docker file.
Added support for Intel AVX-512 instructions and Intel SHA Extensions New Instructions (SHA-NI) in trusted libraries.
Support both EPID and ECDSA based quote for quoting related interfaces in sgx_uae_service library.
Updated key exchange library to support both EPID and ECDSA based remote attestation.
Support new interface to check platform information blob from remote attestation response message.
Fixed bugs.

Signed-off-by: Li, Xun <xun.li@intel.com>
2019-07-05 14:12:24 +08:00

103 lines
1.7 KiB
ArmAsm

.globl func_add1, func_add1_end
.proc func_add1
func_add1:
{.mib; add r8 = 1, r32
nop.i 0
br.ret.sptk.many rp
}
func_add1_end:
.endp func_add1
.globl func_add3, func_add3_end
.proc func_add3
func_add3:
{.mmi; alloc loc0 = ar.pfs, 2, 1, 2, 0
mov r2 = sp
add sp = -16, sp
} ;;
{.mii; ld8 r8 = [in1], 8 // load the function pointer
mov r3 = rp
mov rp = loc0 // trash rp
} ;;
{.mmi; ld8 r9 = [r8], 8 // load the entry-point
st8 [r2] = r3
mov out0 = in0
} ;;
{.mii; ld8 gp = [r8] // load the gp
mov b6 = r9
mov out1 = in1
}
{.mib; nop 0
nop 0
br.call.sptk rp = b6
}
{.mmi; add r2 = 16, sp
;;
ld8 r3 = [r2] // r3 = saved rp
mov ar.pfs = loc0
} ;;
{.mii; nop 0
mov rp = r3
adds sp = 16, sp
} ;;
{.mib; st8 [sp] = in0 // trash rp save location
add r8 = 2, r8
br.ret.sptk.many rp
}
func_add3_end:
.endp func_add3
.globl func_vframe, func_vframe_end
.proc func_vframe
func_vframe:
{.mii; alloc r16 = ar.pfs, 1, 2, 0, 0 // 0
mov loc0 = rp
mov loc1 = sp
} ;;
{.mmi; sub sp = sp, in0
st8 [loc1] = r16
mov r2 = -99 // 0
} ;;
{.mii; nop 0
mov rp = r2
mov ar.pfs = r0
}
{.mib; mov r16 = r2
tbit.nz p6, p0 = in0, 4
(p6) br.cond.sptk.many .exit
} ;;
{.mmi; ld8 r16 = [loc1]
;;
mov r3 = loc0 // 8 move saved rp to r3
mov ar.pfs = r16
} ;;
{.mmi; mov sp = loc1 // 10
st8 [loc1] = r0 // trash saved pfs
mov loc0 = r2
} ;;
{.mib; mov r8 = 10
mov rp = r3
br.ret.sptk.many rp
}
.exit:
{.mmi; ld8 r16 = [loc1]
;;
sub sp = 32, sp
mov ar.pfs = r16
} ;;
{.mmi; mov sp = loc1
st8 [loc1] = r0 // trash saved pfs
mov rp = loc0
}
{.mib; nop 0
mov r8 = 4
br.ret.sptk.many rp
}
func_vframe_end:
.endp func_vframe
#ifdef __linux__
/* We do not need executable stack. */
.section .note.GNU-stack,"",@progbits
#endif