1/*
2 * Code for the vsyscall page.  This version uses the old int $0x80 method.
3 *
4 * NOTE:
5 * 1) __kernel_vsyscall _must_ be first in this page.
6 * 2) there are alignment constraints on this stub, see vsyscall-sigreturn.S
7 *    for details.
8 */
9
10	.text
11	.globl __kernel_vsyscall
12	.type __kernel_vsyscall,@function
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 * Get the common code for the sigreturn entry points.
52 */
53#include "vsyscall-sigreturn.S"
54