1/*
2 * Code for the vDSO.  This version uses the old int $0x80 method.
3 *
4 * First get the common code for the sigreturn entry points.
5 * This must come first.
6 */
7#include "sigreturn.S"
8
9	.text
10	.globl __kernel_vsyscall
11	.type __kernel_vsyscall,@function
12	ALIGN
13__kernel_vsyscall:
14.LSTART_vsyscall:
15	int $0x80
16	ret
17.LEND_vsyscall:
18	.size __kernel_vsyscall,.-.LSTART_vsyscall
19	.previous
20
21	.section .eh_frame,"a",@progbits
22.LSTARTFRAMEDLSI:
23	.long .LENDCIEDLSI-.LSTARTCIEDLSI
24.LSTARTCIEDLSI:
25	.long 0			/* CIE ID */
26	.byte 1			/* Version number */
27	.string "zR"		/* NUL-terminated augmentation string */
28	.uleb128 1		/* Code alignment factor */
29	.sleb128 -4		/* Data alignment factor */
30	.byte 8			/* Return address register column */
31	.uleb128 1		/* Augmentation value length */
32	.byte 0x1b		/* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
33	.byte 0x0c		/* DW_CFA_def_cfa */
34	.uleb128 4
35	.uleb128 4
36	.byte 0x88		/* DW_CFA_offset, column 0x8 */
37	.uleb128 1
38	.align 4
39.LENDCIEDLSI:
40	.long .LENDFDEDLSI-.LSTARTFDEDLSI /* Length FDE */
41.LSTARTFDEDLSI:
42	.long .LSTARTFDEDLSI-.LSTARTFRAMEDLSI /* CIE pointer */
43	.long .LSTART_vsyscall-.	/* PC-relative start address */
44	.long .LEND_vsyscall-.LSTART_vsyscall
45	.uleb128 0
46	.align 4
47.LENDFDEDLSI:
48	.previous
49
50	/*
51	 * Pad out the segment to match the size of the sysenter.S version.
52	 */
53VDSO32_vsyscall_eh_frame_size = 0x40
54	.section .data,"aw",@progbits
55	.space VDSO32_vsyscall_eh_frame_size-(.LENDFDEDLSI-.LSTARTFRAMEDLSI), 0
56	.previous
57