3 #include "linux_assym.h" /* system definitions */
4 #include <machine/asmacros.h> /* miscellaneous asm macros */
6 #include <amd64/linux/linux_syscall.h> /* system call numbers */
17 * To avoid excess stack frame the signal trampoline code emulates
18 * the 'call' instruction.
20 NON_GPROF_ENTRY(linux_rt_sigcode)
21 movq %rsp, %rbx /* preserve sigframe */
25 add $.startrtsigcode-.getip, %rax /* ret address */
27 jmp *LINUX_RT_SIGF_HANDLER(%rbx)
29 movq $LINUX_SYS_linux_rt_sigreturn,%rax /* linux_rt_sigreturn() */
30 syscall /* enter kernel with args */
35 NON_GPROF_ENTRY(__vdso_clock_gettime)
36 movq $LINUX_SYS_linux_clock_gettime,%rax
40 .set clock_gettime, __vdso_clock_gettime
42 NON_GPROF_ENTRY(__vdso_time)
43 movq $LINUX_SYS_linux_time,%rax
47 .set time, __vdso_time
49 NON_GPROF_ENTRY(__vdso_gettimeofday)
50 movq $LINUX_SYS_gettimeofday,%rax
54 .set gettimeofday, __vdso_gettimeofday
56 NON_GPROF_ENTRY(__vdso_getcpu)
57 movq $-38,%rax /* not implemented */
60 .set getcpu, __vdso_getcpu
63 .section .note.Linux, "a",@note
64 .long 2f - 1f /* namesz */
66 .long 4f - 3f /* descsz */
73 .long LINUX_VERSION_CODE
79 .section .eh_frame,"a",@progbits
81 .long .LENDCIEDLSI0-.LSTARTCIEDLSI0
84 .byte 1 /* Version number */
85 .string "zR" /* NULL-terminated
88 .uleb128 1 /* Code alignment factor */
89 .sleb128 -4 /* Data alignment factor */
90 .byte 8 /* Return address register column */
91 .uleb128 1 /* Augmentation value length */
92 .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
93 .byte 0x0c /* DW_CFA_def_cfa */
96 .byte 0x88 /* DW_CFA_offset, column 0x8 */
100 .long .LENDFDEDLSI0-.LSTARTFDEDLSI0 /* Length FDE */
102 .long .LSTARTFDEDLSI0-.LSTARTFRAMEDLSI0 /* CIE pointer */
103 .long .startrtsigcode-. /* PC-relative start address */
104 .long .endrtsigcode-.startrtsigcode