1/* 2 * Code for the vDSO. This version uses the syscall instruction. 3 * 4 * First get the common code for the sigreturn entry points. 5 * This must come first. 6 */ 7#define SYSCALL_ENTER_KERNEL syscall 8#include "sigreturn.S" 9 10#include <asm/segment.h> 11 12 .text 13 .globl __kernel_vsyscall 14 .type __kernel_vsyscall,@function 15 ALIGN 16__kernel_vsyscall: 17.LSTART_vsyscall: 18 push %ebp 19.Lpush_ebp: 20 movl %ecx, %ebp 21 syscall 22 movl %ebp, %ecx 23 popl %ebp 24.Lpop_ebp: 25 ret 26.LEND_vsyscall: 27 .size __kernel_vsyscall,.-.LSTART_vsyscall 28 29 .section .eh_frame,"a",@progbits 30.LSTARTFRAME: 31 .long .LENDCIE-.LSTARTCIE 32.LSTARTCIE: 33 .long 0 /* CIE ID */ 34 .byte 1 /* Version number */ 35 .string "zR" /* NUL-terminated augmentation string */ 36 .uleb128 1 /* Code alignment factor */ 37 .sleb128 -4 /* Data alignment factor */ 38 .byte 8 /* Return address register column */ 39 .uleb128 1 /* Augmentation value length */ 40 .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ 41 .byte 0x0c /* DW_CFA_def_cfa */ 42 .uleb128 4 43 .uleb128 4 44 .byte 0x88 /* DW_CFA_offset, column 0x8 */ 45 .uleb128 1 46 .align 4 47.LENDCIE: 48 49 .long .LENDFDE1-.LSTARTFDE1 /* Length FDE */ 50.LSTARTFDE1: 51 .long .LSTARTFDE1-.LSTARTFRAME /* CIE pointer */ 52 .long .LSTART_vsyscall-. /* PC-relative start address */ 53 .long .LEND_vsyscall-.LSTART_vsyscall 54 .uleb128 0 /* Augmentation length */ 55 /* What follows are the instructions for the table generation. 56 We have to record all changes of the stack pointer. */ 57 .byte 0x40 + .Lpush_ebp-.LSTART_vsyscall /* DW_CFA_advance_loc */ 58 .byte 0x0e /* DW_CFA_def_cfa_offset */ 59 .uleb128 8 60 .byte 0x85, 0x02 /* DW_CFA_offset %ebp -8 */ 61 .byte 0x40 + .Lpop_ebp-.Lpush_ebp /* DW_CFA_advance_loc */ 62 .byte 0xc5 /* DW_CFA_restore %ebp */ 63 .byte 0x0e /* DW_CFA_def_cfa_offset */ 64 .uleb128 4 65 .align 4 66.LENDFDE1: 67 .previous 68 69 /* 70 * Pad out the segment to match the size of the sysenter.S version. 71 */ 72VDSO32_vsyscall_eh_frame_size = 0x40 73 .section .data,"aw",@progbits 74 .space VDSO32_vsyscall_eh_frame_size-(.LENDFDE1-.LSTARTFRAME), 0 75 .previous 76