The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/amd64/linux32/linux32_locore.asm

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $FreeBSD$ */
    2 
    3 #include "linux32_assym.h"                      /* system definitions */
    4 #include <machine/asmacros.h>                   /* miscellaneous asm macros */
    5 
    6 #include <amd64/linux32/linux32_syscall.h>      /* system call numbers */
    7 
    8 .data
    9 
   10         .globl linux_platform
   11 linux_platform:
   12         .asciz "i686"
   13 
   14 .text
   15 .code32
   16 
   17 ENTRY(linux32_vdso_sigcode)
   18         .cfi_startproc
   19         .cfi_signal_frame
   20         .cfi_def_cfa    %esp, LINUX_SIGF_SC
   21         .cfi_offset     %gs, L_SC_GS
   22         .cfi_offset     %fs, L_SC_FS
   23         .cfi_offset     %es, L_SC_ES
   24         .cfi_offset     %ds, L_SC_DS
   25         .cfi_offset     %cs, L_SC_CS
   26         .cfi_offset     %ss, L_SC_SS
   27 #ifdef __clang__
   28         .cfi_offset     %flags, L_SC_EFLAGS
   29 #else
   30         .cfi_offset     %eflags, L_SC_EFLAGS
   31 #endif
   32         .cfi_offset     %edi, L_SC_EDI
   33         .cfi_offset     %esi, L_SC_ESI
   34         .cfi_offset     %ebp, L_SC_EBP
   35         .cfi_offset     %ebx, L_SC_EBX
   36         .cfi_offset     %edx, L_SC_EDX
   37         .cfi_offset     %ecx, L_SC_ECX
   38         .cfi_offset     %eax, L_SC_EAX
   39         .cfi_offset     %eip, L_SC_EIP
   40         .cfi_offset     %esp, L_SC_ESP
   41 
   42         movl    %esp, %ebx                      /* sigframe for sigreturn */
   43         call    *%edi                           /* call signal handler */
   44         popl    %eax                            /* gcc unwind code need this */
   45         .cfi_def_cfa    %esp, LINUX_SIGF_SC-4
   46         movl    $LINUX32_SYS_linux_sigreturn, %eax
   47         int     $0x80
   48 0:      jmp     0b
   49         .cfi_endproc
   50 END(linux32_vdso_sigcode)
   51 
   52 
   53 ENTRY(linux32_vdso_rt_sigcode)
   54         .cfi_startproc
   55         .cfi_signal_frame
   56         .cfi_def_cfa    %esp, LINUX_RT_SIGF_UC + LINUX_RT_SIGF_SC
   57         .cfi_offset     %gs, L_SC_GS
   58         .cfi_offset     %fs, L_SC_FS
   59         .cfi_offset     %es, L_SC_ES
   60         .cfi_offset     %ds, L_SC_DS
   61         .cfi_offset     %cs, L_SC_CS
   62         .cfi_offset     %ss, L_SC_SS
   63 #ifdef __clang__
   64         .cfi_offset     %flags, L_SC_EFLAGS
   65 #else
   66         .cfi_offset     %eflags, L_SC_EFLAGS
   67 #endif
   68         .cfi_offset     %edi, L_SC_EDI
   69         .cfi_offset     %esi, L_SC_ESI
   70         .cfi_offset     %ebp, L_SC_EBP
   71         .cfi_offset     %ebx, L_SC_EBX
   72         .cfi_offset     %edx, L_SC_EDX
   73         .cfi_offset     %ecx, L_SC_ECX
   74         .cfi_offset     %eax, L_SC_EAX
   75         .cfi_offset     %eip, L_SC_EIP
   76         .cfi_offset     %esp, L_SC_ESP
   77 
   78         leal    LINUX_RT_SIGF_UC(%esp), %ebx    /* linux ucontext for rt_sigreturn */
   79         call    *%edi                           /* call signal handler */
   80         movl    $LINUX32_SYS_linux_rt_sigreturn, %eax
   81         int     $0x80
   82 0:      jmp     0b
   83         .cfi_endproc
   84 END(linux32_vdso_rt_sigcode)
   85 
   86 ENTRY(__kernel_sigreturn)
   87         .cfi_startproc
   88         .cfi_signal_frame
   89         movl    %esp, %ebx                      /* sigframe for sigreturn */
   90         call    *%edi                           /* call signal handler */
   91         popl    %eax                            /* gcc unwind code need this */
   92         movl    $LINUX32_SYS_linux_sigreturn, %eax
   93         int     $0x80
   94 0:      jmp     0b
   95         .cfi_endproc
   96 END(__kernel_sigreturn)
   97 
   98 ENTRY(__kernel_rt_sigreturn)
   99         .cfi_startproc
  100         .cfi_signal_frame
  101         leal    LINUX_RT_SIGF_UC(%esp), %ebx    /* linux ucontext for rt_sigreturn */
  102         call    *%edi                           /* call signal handler */
  103         movl    $LINUX32_SYS_linux_rt_sigreturn, %eax
  104         int     $0x80
  105 0:      jmp     0b
  106         .cfi_endproc
  107 END(__kernel_rt_sigreturn)
  108 
  109 ENTRY(__kernel_vsyscall)
  110         .cfi_startproc
  111         int $0x80
  112         ret
  113         .cfi_endproc
  114 END(__kernel_vsyscall)
  115 
  116 #if 0
  117         .section .note.Linux, "a",@note
  118         .long 2f - 1f           /* namesz */
  119         .balign 4
  120         .long 4f - 3f           /* descsz */
  121         .long 0
  122 1:
  123         .asciz "Linux"
  124 2:
  125         .balign 4
  126 3:
  127         .long LINUX_VERSION_CODE
  128 4:
  129         .balign 4
  130         .previous
  131 #endif

Cache object: afee4bb371645e26f39e486d7b43b7c4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.