2005-04-16 15:20:36 -07:00
/ *
* Code f o r t h e v s y s c a l l p a g e . T h i s v e r s i o n u s e s t h e s y s c a l l i n s t r u c t i o n .
* /
# include < a s m / i a32 _ u n i s t d . h >
2005-09-09 21:28:48 +02:00
# include < a s m / a s m - o f f s e t s . h >
2005-04-16 15:20:36 -07:00
# include < a s m / s e g m e n t . h >
2006-01-11 22:43:54 +01:00
.code32
2005-04-16 15:20:36 -07:00
.text
.section .text .vsyscall , " ax"
.globl __kernel_vsyscall
.type _ _ kernel_ v s y s c a l l ,@function
__kernel_vsyscall :
.LSTART_vsyscall :
push % e b p
.Lpush_ebp :
movl % e c x , % e b p
syscall
movl $ _ _ U S E R 3 2 _ D S , % e c x
movl % e c x , % s s
movl % e b p , % e c x
popl % e b p
.Lpop_ebp :
ret
.LEND_vsyscall :
.size _ _ kernel_ v s y s c a l l ,. - . L S T A R T _ v s y s c a l l
.section .eh_frame , " a" ,@progbits
.LSTARTFRAME :
.long .LENDCIE - .LSTARTCIE
.LSTARTCIE :
.long 0 /* CIE ID */
.byte 1 /* Version number */
.string " zR" / * N U L - t e r m i n a t e d a u g m e n t a t i o n s t r i n g * /
.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
.LENDCIE :
.long .LENDFDE1 - .LSTARTFDE1 /* Length FDE */
.LSTARTFDE1 :
.long .LSTARTFDE1 - .LSTARTFRAME /* CIE pointer */
.long .LSTART_vsyscall - . /* PC-relative start address */
.long .LEND_vsyscall - .LSTART_vsyscall
.uleb128 0 /* Augmentation length */
/ * What f o l l o w s a r e t h e i n s t r u c t i o n s f o r t h e t a b l e g e n e r a t i o n .
We h a v e t o r e c o r d a l l c h a n g e s o f t h e s t a c k p o i n t e r . * /
.byte 0x40 + .Lpush_ebp - .LSTART_vsyscall /* DW_CFA_advance_loc */
.byte 0x0e /* DW_CFA_def_cfa_offset */
.uleb128 8
.byte 0 x8 5 , 0 x02 / * D W _ C F A _ o f f s e t % e b p - 8 * /
.byte 0x40 + .Lpop_ebp - .Lpush_ebp /* DW_CFA_advance_loc */
.byte 0xc5 /* DW_CFA_restore %ebp */
.byte 0x0e /* DW_CFA_def_cfa_offset */
.uleb128 4
.align 4
.LENDFDE1 :
# define S Y S C A L L _ E N T E R _ K E R N E L s y s c a l l
# include " v s y s c a l l - s i g r e t u r n . S "