system_call.S 1.4 KB
Newer Older
L
Linus Torvalds 已提交
1
/*
R
Roland McGrath 已提交
2
 * Code for the vDSO.  This version uses the old int $0x80 method.
L
Linus Torvalds 已提交
3
 *
R
Roland McGrath 已提交
4 5
 * First get the common code for the sigreturn entry points.
 * This must come first.
L
Linus Torvalds 已提交
6
 */
R
Roland McGrath 已提交
7
#include "sigreturn.S"
L
Linus Torvalds 已提交
8 9 10 11

	.text
	.globl __kernel_vsyscall
	.type __kernel_vsyscall,@function
R
Roland McGrath 已提交
12
	ALIGN
L
Linus Torvalds 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
__kernel_vsyscall:
.LSTART_vsyscall:
	int $0x80
	ret
.LEND_vsyscall:
	.size __kernel_vsyscall,.-.LSTART_vsyscall
	.previous

	.section .eh_frame,"a",@progbits
.LSTARTFRAMEDLSI:
	.long .LENDCIEDLSI-.LSTARTCIEDLSI
.LSTARTCIEDLSI:
	.long 0			/* CIE ID */
	.byte 1			/* Version number */
	.string "zR"		/* NUL-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
.LENDCIEDLSI:
	.long .LENDFDEDLSI-.LSTARTFDEDLSI /* Length FDE */
.LSTARTFDEDLSI:
	.long .LSTARTFDEDLSI-.LSTARTFRAMEDLSI /* CIE pointer */
	.long .LSTART_vsyscall-.	/* PC-relative start address */
	.long .LEND_vsyscall-.LSTART_vsyscall
	.uleb128 0
	.align 4
.LENDFDEDLSI:
	.previous

R
Roland McGrath 已提交
50 51 52
	/*
	 * Pad out the segment to match the size of the sysenter.S version.
	 */
53
VDSO32_vsyscall_eh_frame_size = 0x40
R
Roland McGrath 已提交
54 55 56
	.section .data,"aw",@progbits
	.space VDSO32_vsyscall_eh_frame_size-(.LENDFDEDLSI-.LSTARTFRAMEDLSI), 0
	.previous