Deleted Added
full compact
1c1
< /* $FreeBSD: stable/10/sys/i386/linux/linux_locore.s 187948 2009-01-31 11:37:21Z obrien $ */
---
> /* $FreeBSD: stable/10/sys/i386/linux/linux_locore.s 293514 2016-01-09 15:44:38Z dchagin $ */
7a8,13
> #include "assym.s"
>
> /*
> * To avoid excess stack frame the signal trampoline code emulates
> * the 'call' instruction.
> */
9,13c15,23
< call *LINUX_SIGF_HANDLER(%esp)
< leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */
< mov LINUX_SC_GS(%ebx),%gs
< movl %esp, %ebx /* pass sigframe */
< push %eax /* fake ret addr */
---
> movl %esp, %ebx /* preserve sigframe */
> call .getip0
> .getip0:
> popl %eax
> add $.startsigcode-.getip0, %eax /* ret address */
> push %eax
> jmp *LINUX_SIGF_HANDLER(%ebx)
> .startsigcode:
> popl %eax /* gcc unwind code need this */
15a26
> .endsigcode:
17,20c28,29
< ALIGN_TEXT
< /* XXXXX */
< linux_rt_sigcode:
< call *LINUX_RT_SIGF_HANDLER(%esp)
---
>
> NON_GPROF_ENTRY(linux_rt_sigcode)
23,24c32,39
< mov LINUX_SC_GS(%ecx),%gs
< push %eax /* fake ret addr */
---
> movl %esp, %edi
> call .getip1
> .getip1:
> popl %eax
> add $.startrtsigcode-.getip1, %eax /* ret address */
> push %eax
> jmp *LINUX_RT_SIGF_HANDLER(%edi)
> .startrtsigcode:
26a42
> .endrtsigcode:
28,30d43
< ALIGN_TEXT
< /* XXXXX */
< linux_esigcode:
32,37c45,149
< .data
< .globl linux_szsigcode, linux_sznonrtsigcode
< linux_szsigcode:
< .long linux_esigcode-linux_sigcode
< linux_sznonrtsigcode:
< .long linux_rt_sigcode-linux_sigcode
---
> NON_GPROF_ENTRY(linux_vsyscall)
> .startvsyscall:
> int $0x80
> ret
> .endvsyscall:
>
>
> .section .note.Linux, "a",@note
> .long 2f - 1f /* namesz */
> .balign 4
> .long 4f - 3f /* descsz */
> .long 0
> 1:
> .asciz "Linux"
> 2:
> .balign 4
> 3:
> .long LINUX_VERSION_CODE
> 4:
> .balign 4
> .previous
>
>
> #define do_cfa_expr(offset) \
> .byte 0x0f; /* DW_CFA_def_cfa_expression */ \
> .uleb128 11f-10f; /* length */ \
> 10: .byte 0x74; /* DW_OP_breg4 */ \
> .sleb128 offset; /* offset */ \
> .byte 0x06; /* DW_OP_deref */ \
> 11:
>
>
> /* CIE */
> .section .eh_frame,"a",@progbits
> .LSTARTFRAMEDLSI1:
> .long .LENDCIEDLSI1-.LSTARTCIEDLSI1
> .LSTARTCIEDLSI1:
> .long 0 /* CIE ID */
> .byte 1 /* Version number */
> .string "zRS" /* NULL-terminated
> * augmentation string
> */
> .uleb128 1 /* Code alignment factor */
> .sleb128 -4 /* Data alignment factor */
> .byte 8 /* Return address
> * register column
> */
> .uleb128 1 /* Augmentation value length */
> .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
> .byte 0 /* DW_CFA_nop */
> .align 4
> .LENDCIEDLSI1:
>
> /* FDE */
> .long .LENDFDEDLSI1-.LSTARTFDEDLSI1 /* Length FDE */
> .LSTARTFDEDLSI1:
> .long .LSTARTFDEDLSI1-.LSTARTFRAMEDLSI1 /* CIE pointer */
> .long .startsigcode-. /* PC-relative start address */
> .long .endsigcode-.startsigcode
> .uleb128 0 /* Augmentation */
> do_cfa_expr(LINUX_SIGF_SC-8)
> .align 4
> .LENDFDEDLSI1:
>
> .long .LENDFDEDLSI2-.LSTARTFDEDLSI2 /* Length FDE */
> .LSTARTFDEDLSI2:
> .long .LSTARTFDEDLSI2-.LSTARTFRAMEDLSI1 /* CIE pointer */
> .long .startrtsigcode-. /* PC-relative start address */
> .long .endrtsigcode-.startrtsigcode
> .uleb128 0 /* Augmentation */
> do_cfa_expr(LINUX_RT_SIGF_SC-4+LINUX_SC_ESP)
> .align 4
> .LENDFDEDLSI2:
> .previous
>
> .section .eh_frame,"a",@progbits
> .LSTARTFRAMEDLSI2:
> .long .LENDCIEDLSI2-.LSTARTCIEDLSI2
> .LSTARTCIEDLSI2:
> .long 0 /* CIE ID */
> .byte 1 /* Version number */
> .string "zR" /* NULL-terminated
> * augmentation string
> */
> .uleb128 1 /* Code alignment factor */
> .sleb128 -4 /* Data alignment factor */
> .byte 8 /* Return address register column */
> .uleb128 1 /* Augmentation value length */
> .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
> .byte 0x0c /* DW_CFA_def_cfa */
> .uleb128 4
> .uleb128 4
> .byte 0x88 /* DW_CFA_offset, column 0x8 */
> .uleb128 1
> .align 4
> .LENDCIEDLSI2:
> .long .LENDFDEDLSI3-.LSTARTFDEDLSI3 /* Length FDE */
> .LSTARTFDEDLSI3:
> .long .LSTARTFDEDLSI3-.LSTARTFRAMEDLSI2 /* CIE pointer */
> .long .startvsyscall-. /* PC-relative start address */
> .long .endvsyscall-.startvsyscall
> .uleb128 0
> .align 4
> .LENDFDEDLSI3:
> .previous