]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/amd64/linux/linux_locore.asm
linux: remove the always curthread argument from lconvpath
[FreeBSD/FreeBSD.git] / sys / amd64 / linux / linux_locore.asm
1 /* $FreeBSD$ */
2
3 #include "linux_assym.h"                        /* system definitions */
4 #include <machine/asmacros.h>                   /* miscellaneous asm macros */
5
6 #include <amd64/linux/linux_syscall.h>          /* system call numbers */
7
8         .data
9
10         .globl linux_platform
11 linux_platform:
12         .asciz "x86_64"
13
14
15         .text
16 /*
17  * To avoid excess stack frame the signal trampoline code emulates
18  * the 'call' instruction.
19  */
20 ENTRY(linux_rt_sigcode)
21         movq    %rsp, %rbx                      /* preserve sigframe */
22         call    .getip
23 .getip:
24         popq    %rax
25         add     $.startrtsigcode-.getip, %rax   /* ret address */
26         pushq   %rax
27         jmp     *LINUX_RT_SIGF_HANDLER(%rbx)
28 .startrtsigcode:
29         movq    $LINUX_SYS_linux_rt_sigreturn,%rax   /* linux_rt_sigreturn() */
30         syscall                                 /* enter kernel with args */
31         hlt
32 .endrtsigcode:
33 0:      jmp     0b
34
35 #if 0
36         .section .note.Linux, "a",@note
37         .long 2f - 1f           /* namesz */
38         .balign 4
39         .long 4f - 3f           /* descsz */
40         .long 0
41 1:
42         .asciz "Linux"
43 2:
44         .balign 4
45 3:
46         .long LINUX_VERSION_CODE
47 4:
48         .balign 4
49         .previous
50 #endif
51
52         .section .eh_frame,"a",@progbits
53 .LSTARTFRAMEDLSI0:
54         .long .LENDCIEDLSI0-.LSTARTCIEDLSI0
55 .LSTARTCIEDLSI0:
56         .long 0                                 /* CIE ID */
57         .byte 1                                 /* Version number */
58         .string "zR"                            /* NULL-terminated
59                                                  * augmentation string
60                                                  */
61         .uleb128 1                              /* Code alignment factor */
62         .sleb128 -4                             /* Data alignment factor */
63         .byte 8                                 /* Return address register column */
64         .uleb128 1                              /* Augmentation value length */
65         .byte 0x1b                              /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
66         .byte 0x0c                              /* DW_CFA_def_cfa */
67         .uleb128 4
68         .uleb128 4
69         .byte 0x88                              /* DW_CFA_offset, column 0x8 */
70         .uleb128 1
71         .align 4
72 .LENDCIEDLSI0:
73         .long .LENDFDEDLSI0-.LSTARTFDEDLSI0     /* Length FDE */
74 .LSTARTFDEDLSI0:
75         .long .LSTARTFDEDLSI0-.LSTARTFRAMEDLSI0 /* CIE pointer */
76         .long .startrtsigcode-.                 /* PC-relative start address */
77         .long .endrtsigcode-.startrtsigcode
78         .uleb128 0
79         .align 4
80 .LENDFDEDLSI0:
81         .previous