2005-04-17 02:20:36 +04:00
/ *
* This f i l e i s s u b j e c t t o t h e t e r m s a n d c o n d i t i o n s o f t h e G N U G e n e r a l P u b l i c
* License. S e e t h e f i l e " C O P Y I N G " i n t h e m a i n d i r e c t o r y o f t h i s a r c h i v e
* for m o r e d e t a i l s .
*
* Copyright ( C ) 1 9 9 5 , 9 6 , 9 7 , 9 8 , 9 9 , 2 0 0 0 , 0 1 b y R a l f B a e c h l e
* Copyright ( C ) 1 9 9 9 , 2 0 0 0 S i l i c o n G r a p h i c s , I n c .
* Copyright ( C ) 2 0 0 1 M I P S T e c h n o l o g i e s , I n c .
* /
# include < l i n u x / e r r n o . h >
# include < a s m / a s m . h >
# include < a s m / a s m m a c r o . h >
2006-07-07 17:07:18 +04:00
# include < a s m / i r q f l a g s . h >
2005-04-17 02:20:36 +04:00
# include < a s m / m i p s r e g s . h >
# include < a s m / r e g d e f . h >
# include < a s m / s t a c k f r a m e . h >
# include < a s m / t h r e a d _ i n f o . h >
# include < a s m / u n i s t d . h >
/* This duplicates the definition from <linux/sched.h> */
# define P T _ T R A C E S Y S 0 x00 0 0 0 0 0 2 / * t r a c i n g s y s t e m c a l l s * /
/* This duplicates the definition from <asm/signal.h> */
# define S I G I L L 4 / * I l l e g a l i n s t r u c t i o n ( A N S I ) . * /
# ifndef C O N F I G _ M I P S 3 2 _ O 3 2
/* No O32, so define handle_sys here */
# define h a n d l e _ s y s n 3 2 h a n d l e _ s y s
# endif
.align 5
NESTED( h a n d l e _ s y s n 3 2 , P T _ S I Z E , s p )
# ifndef C O N F I G _ M I P S 3 2 _ O 3 2
.set noat
SAVE_ S O M E
2006-09-26 18:43:40 +04:00
TRACE_ I R Q S _ O N _ R E L O A D
2005-04-17 02:20:36 +04:00
STI
.set at
# endif
dsubu t 0 , v0 , _ _ N R _ N 3 2 _ L i n u x # c h e c k s y s c a l l n u m b e r
sltiu t 0 , t 0 , _ _ N R _ N 3 2 _ L i n u x _ s y s c a l l s + 1
# ifndef C O N F I G _ M I P S 3 2 _ O 3 2
ld t 1 , P T _ E P C ( s p ) # s k i p s y s c a l l o n r e t u r n
daddiu t 1 , 4 # s k i p t o n e x t i n s t r u c t i o n
sd t 1 , P T _ E P C ( s p )
# endif
beqz t 0 , n o t _ n 3 2 _ s c a l l
dsll t 0 , v0 , 3 # o f f s e t i n t o t a b l e
ld t 2 , ( s y s n 3 2 _ c a l l _ t a b l e - ( _ _ N R _ N 3 2 _ L i n u x * 8 ) ) ( t 0 )
sd a3 , P T _ R 2 6 ( s p ) # s a v e a 3 f o r s y s c a l l r e s t a r t i n g
li t 1 , _ T I F _ S Y S C A L L _ T R A C E | _ T I F _ S Y S C A L L _ A U D I T
LONG_ L t 0 , T I _ F L A G S ( $ 2 8 ) # s y s c a l l t r a c i n g e n a b l e d ?
and t 0 , t 1 , t 0
bnez t 0 , n 3 2 _ s y s c a l l _ t r a c e _ e n t r y
jalr t 2 # D o T h e R e a l T h i n g ( T M )
li t 0 , - E M A X E R R N O - 1 # e r r o r ?
sltu t 0 , t 0 , v0
sd t 0 , P T _ R 7 ( s p ) # s e t e r r o r f l a g
beqz t 0 , 1 f
dnegu v0 # e r r o r
sd v0 , P T _ R 0 ( s p ) # s e t f l a g f o r s y s c a l l r e s t a r t i n g
1 : sd v0 , P T _ R 2 ( s p ) # r e s u l t
local_ i r q _ d i s a b l e # m a k e s u r e n e e d _ r e s c h e d a n d
# signals d o n t c h a n g e b e t w e e n
# sampling a n d r e t u r n
LONG_ L a2 , T I _ F L A G S ( $ 2 8 ) # c u r r e n t - > w o r k
li t 0 , _ T I F _ A L L W O R K _ M A S K
and t 0 , a2 , t 0
bnez t 0 , n 3 2 _ s y s c a l l _ e x i t _ w o r k
j r e s t o r e _ p a r t i a l
n32_syscall_exit_work :
j s y s c a l l _ e x i t _ w o r k _ p a r t i a l
/* ------------------------------------------------------------------------ */
n32_syscall_trace_entry :
SAVE_ S T A T I C
move s0 , t 2
move a0 , s p
li a1 , 0
jal d o _ s y s c a l l _ t r a c e
2005-11-30 19:24:57 +03:00
move t 0 , s0
RESTORE_ S T A T I C
2005-04-17 02:20:36 +04:00
ld a0 , P T _ R 4 ( s p ) # R e s t o r e a r g u m e n t r e g i s t e r s
ld a1 , P T _ R 5 ( s p )
ld a2 , P T _ R 6 ( s p )
ld a3 , P T _ R 7 ( s p )
ld a4 , P T _ R 8 ( s p )
ld a5 , P T _ R 9 ( s p )
2005-11-30 19:24:57 +03:00
jalr t 0
2005-04-17 02:20:36 +04:00
li t 0 , - E M A X E R R N O - 1 # e r r o r ?
sltu t 0 , t 0 , v0
sd t 0 , P T _ R 7 ( s p ) # s e t e r r o r f l a g
beqz t 0 , 1 f
dnegu v0 # e r r o r
sd v0 , P T _ R 0 ( s p ) # s e t f l a g f o r s y s c a l l r e s t a r t i n g
1 : sd v0 , P T _ R 2 ( s p ) # r e s u l t
j s y s c a l l _ e x i t
not_n32_scall :
/ * This i s n o t a n n 3 2 c o m p a t i b i l i t y s y s c a l l , p a s s i t o n t o
the n 6 4 s y s c a l l h a n d l e r s . * /
j h a n d l e _ s y s64
END( h a n d l e _ s y s n 3 2 )
EXPORT( s y s n 3 2 _ c a l l _ t a b l e )
PTR s y s _ r e a d / * 6 0 0 0 * /
PTR s y s _ w r i t e
PTR s y s _ o p e n
PTR s y s _ c l o s e
PTR s y s _ n e w s t a t
PTR s y s _ n e w f s t a t / * 6 0 0 5 * /
PTR s y s _ n e w l s t a t
PTR s y s _ p o l l
PTR s y s _ l s e e k
PTR o l d _ m m a p
PTR s y s _ m p r o t e c t / * 6 0 1 0 * /
PTR s y s _ m u n m a p
PTR s y s _ b r k
PTR s y s32 _ r t _ s i g a c t i o n
PTR s y s32 _ r t _ s i g p r o c m a s k
PTR c o m p a t _ s y s _ i o c t l / * 6 0 1 5 * /
PTR s y s _ p r e a d64
PTR s y s _ p w r i t e 6 4
PTR c o m p a t _ s y s _ r e a d v
PTR c o m p a t _ s y s _ w r i t e v
PTR s y s _ a c c e s s / * 6 0 2 0 * /
PTR s y s _ p i p e
PTR c o m p a t _ s y s _ s e l e c t
PTR s y s _ s c h e d _ y i e l d
PTR s y s _ m r e m a p
PTR s y s _ m s y n c / * 6 0 2 5 * /
PTR s y s _ m i n c o r e
PTR s y s _ m a d v i s e
PTR s y s _ s h m g e t
PTR s y s32 _ s h m a t
PTR s y s _ s h m c t l / * 6 0 3 0 * /
PTR s y s _ d u p
PTR s y s _ d u p2
PTR s y s _ p a u s e
PTR c o m p a t _ s y s _ n a n o s l e e p
PTR c o m p a t _ s y s _ g e t i t i m e r / * 6 0 3 5 * /
PTR c o m p a t _ s y s _ s e t i t i m e r
PTR s y s _ a l a r m
PTR s y s _ g e t p i d
PTR s y s32 _ s e n d f i l e
PTR s y s _ s o c k e t / * 6 0 4 0 * /
PTR s y s _ c o n n e c t
PTR s y s _ a c c e p t
PTR s y s _ s e n d t o
PTR s y s _ r e c v f r o m
PTR c o m p a t _ s y s _ s e n d m s g / * 6 0 4 5 * /
PTR c o m p a t _ s y s _ r e c v m s g
PTR s y s _ s h u t d o w n
PTR s y s _ b i n d
PTR s y s _ l i s t e n
PTR s y s _ g e t s o c k n a m e / * 6 0 5 0 * /
PTR s y s _ g e t p e e r n a m e
PTR s y s _ s o c k e t p a i r
PTR c o m p a t _ s y s _ s e t s o c k o p t
PTR s y s _ g e t s o c k o p t
PTR s y s _ c l o n e / * 6 0 5 5 * /
PTR s y s _ f o r k
PTR s y s32 _ e x e c v e
PTR s y s _ e x i t
2005-02-17 00:18:52 +03:00
PTR c o m p a t _ s y s _ w a i t 4
2005-04-17 02:20:36 +04:00
PTR s y s _ k i l l / * 6 0 6 0 * /
PTR s y s32 _ n e w u n a m e
PTR s y s _ s e m g e t
PTR s y s _ s e m o p
PTR s y s _ s e m c t l
PTR s y s _ s h m d t / * 6 0 6 5 * /
PTR s y s _ m s g g e t
PTR s y s _ m s g s n d
PTR s y s _ m s g r c v
PTR s y s _ m s g c t l
PTR c o m p a t _ s y s _ f c n t l / * 6 0 7 0 * /
PTR s y s _ f l o c k
PTR s y s _ f s y n c
PTR s y s _ f d a t a s y n c
PTR s y s _ t r u n c a t e
PTR s y s _ f t r u n c a t e / * 6 0 7 5 * /
2006-02-21 09:59:00 +03:00
PTR c o m p a t _ s y s _ g e t d e n t s
2005-04-17 02:20:36 +04:00
PTR s y s _ g e t c w d
PTR s y s _ c h d i r
PTR s y s _ f c h d i r
PTR s y s _ r e n a m e / * 6 0 8 0 * /
PTR s y s _ m k d i r
PTR s y s _ r m d i r
PTR s y s _ c r e a t
PTR s y s _ l i n k
PTR s y s _ u n l i n k / * 6 0 8 5 * /
PTR s y s _ s y m l i n k
PTR s y s _ r e a d l i n k
PTR s y s _ c h m o d
PTR s y s _ f c h m o d
PTR s y s _ c h o w n / * 6 0 9 0 * /
PTR s y s _ f c h o w n
PTR s y s _ l c h o w n
PTR s y s _ u m a s k
PTR s y s32 _ g e t t i m e o f d a y
PTR c o m p a t _ s y s _ g e t r l i m i t / * 6 0 9 5 * /
PTR c o m p a t _ s y s _ g e t r u s a g e
PTR s y s32 _ s y s i n f o
PTR c o m p a t _ s y s _ t i m e s
2005-09-29 02:11:15 +04:00
PTR s y s32 _ p t r a c e
2005-04-17 02:20:36 +04:00
PTR s y s _ g e t u i d / * 6 1 0 0 * /
PTR s y s _ s y s l o g
PTR s y s _ g e t g i d
PTR s y s _ s e t u i d
PTR s y s _ s e t g i d
PTR s y s _ g e t e u i d / * 6 1 0 5 * /
PTR s y s _ g e t e g i d
PTR s y s _ s e t p g i d
PTR s y s _ g e t p p i d
PTR s y s _ g e t p g r p
PTR s y s _ s e t s i d / * 6 1 1 0 * /
PTR s y s _ s e t r e u i d
PTR s y s _ s e t r e g i d
PTR s y s _ g e t g r o u p s
PTR s y s _ s e t g r o u p s
PTR s y s _ s e t r e s u i d / * 6 1 1 5 * /
PTR s y s _ g e t r e s u i d
PTR s y s _ s e t r e s g i d
PTR s y s _ g e t r e s g i d
PTR s y s _ g e t p g i d
PTR s y s _ s e t f s u i d / * 6 1 2 0 * /
PTR s y s _ s e t f s g i d
PTR s y s _ g e t s i d
PTR s y s _ c a p g e t
PTR s y s _ c a p s e t
PTR s y s32 _ r t _ s i g p e n d i n g / * 6 1 2 5 * /
2006-02-19 01:47:26 +03:00
PTR c o m p a t _ s y s _ r t _ s i g t i m e d w a i t
2006-07-28 00:05:49 +04:00
PTR s y s32 _ r t _ s i g q u e u e i n f o
2006-02-19 01:47:26 +03:00
PTR s y s n 3 2 _ r t _ s i g s u s p e n d
2005-04-17 02:20:36 +04:00
PTR s y s32 _ s i g a l t s t a c k
PTR c o m p a t _ s y s _ u t i m e / * 6 1 3 0 * /
PTR s y s _ m k n o d
PTR s y s32 _ p e r s o n a l i t y
2005-04-17 04:04:21 +04:00
PTR s y s32 _ u s t a t
2005-04-17 02:20:36 +04:00
PTR c o m p a t _ s y s _ s t a t f s
PTR c o m p a t _ s y s _ f s t a t f s / * 6 1 3 5 * /
PTR s y s _ s y s f s
PTR s y s _ g e t p r i o r i t y
PTR s y s _ s e t p r i o r i t y
PTR s y s _ s c h e d _ s e t p a r a m
PTR s y s _ s c h e d _ g e t p a r a m / * 6 1 4 0 * /
PTR s y s _ s c h e d _ s e t s c h e d u l e r
PTR s y s _ s c h e d _ g e t s c h e d u l e r
PTR s y s _ s c h e d _ g e t _ p r i o r i t y _ m a x
PTR s y s _ s c h e d _ g e t _ p r i o r i t y _ m i n
PTR s y s32 _ s c h e d _ r r _ g e t _ i n t e r v a l / * 6 1 4 5 * /
PTR s y s _ m l o c k
PTR s y s _ m u n l o c k
PTR s y s _ m l o c k a l l
PTR s y s _ m u n l o c k a l l
PTR s y s _ v h a n g u p / * 6 1 5 0 * /
PTR s y s _ p i v o t _ r o o t
PTR s y s32 _ s y s c t l
PTR s y s _ p r c t l
2006-03-26 13:37:29 +04:00
PTR c o m p a t _ s y s _ a d j t i m e x
2005-04-17 02:20:36 +04:00
PTR c o m p a t _ s y s _ s e t r l i m i t / * 6 1 5 5 * /
PTR s y s _ c h r o o t
PTR s y s _ s y n c
PTR s y s _ a c c t
PTR s y s32 _ s e t t i m e o f d a y
2006-10-16 19:49:37 +04:00
PTR c o m p a t _ s y s _ m o u n t / * 6 1 6 0 * /
2005-04-17 02:20:36 +04:00
PTR s y s _ u m o u n t
PTR s y s _ s w a p o n
PTR s y s _ s w a p o f f
PTR s y s _ r e b o o t
PTR s y s _ s e t h o s t n a m e / * 6 1 6 5 * /
PTR s y s _ s e t d o m a i n n a m e
PTR s y s _ n i _ s y s c a l l / * w a s c r e a t e _ m o d u l e * /
PTR s y s _ i n i t _ m o d u l e
PTR s y s _ d e l e t e _ m o d u l e
PTR s y s _ n i _ s y s c a l l / * 6 1 7 0 , w a s g e t _ k e r n e l _ s y m s * /
PTR s y s _ n i _ s y s c a l l / * w a s q u e r y _ m o d u l e * /
PTR s y s _ q u o t a c t l
PTR s y s _ n f s s e r v c t l
PTR s y s _ n i _ s y s c a l l / * r e s . f o r g e t p m s g * /
PTR s y s _ n i _ s y s c a l l / * 6 1 7 5 f o r p u t p m s g * /
PTR s y s _ n i _ s y s c a l l / * r e s . f o r a f s _ s y s c a l l * /
PTR s y s _ n i _ s y s c a l l / * r e s . f o r s e c u r i t y * /
PTR s y s _ g e t t i d
PTR s y s32 _ r e a d a h e a d
PTR s y s _ s e t x a t t r / * 6 1 8 0 * /
PTR s y s _ l s e t x a t t r
PTR s y s _ f s e t x a t t r
PTR s y s _ g e t x a t t r
PTR s y s _ l g e t x a t t r
PTR s y s _ f g e t x a t t r / * 6 1 8 5 * /
PTR s y s _ l i s t x a t t r
PTR s y s _ l l i s t x a t t r
PTR s y s _ f l i s t x a t t r
PTR s y s _ r e m o v e x a t t r
PTR s y s _ l r e m o v e x a t t r / * 6 1 9 0 * /
PTR s y s _ f r e m o v e x a t t r
PTR s y s _ t k i l l
PTR s y s _ n i _ s y s c a l l
PTR c o m p a t _ s y s _ f u t e x
PTR c o m p a t _ s y s _ s c h e d _ s e t a f f i n i t y / * 6 1 9 5 * /
PTR c o m p a t _ s y s _ s c h e d _ g e t a f f i n i t y
PTR s y s _ c a c h e f l u s h
PTR s y s _ c a c h e c t l
PTR s y s _ s y s m i p s
PTR s y s _ i o _ s e t u p / * 6 2 0 0 * /
PTR s y s _ i o _ d e s t r o y
PTR s y s _ i o _ g e t e v e n t s
PTR s y s _ i o _ s u b m i t
PTR s y s _ i o _ c a n c e l
PTR s y s _ e x i t _ g r o u p / * 6 2 0 5 * /
PTR s y s _ l o o k u p _ d c o o k i e
PTR s y s _ e p o l l _ c r e a t e
PTR s y s _ e p o l l _ c t l
PTR s y s _ e p o l l _ w a i t
PTR s y s _ r e m a p _ f i l e _ p a g e s / * 6 2 1 0 * /
PTR s y s n 3 2 _ r t _ s i g r e t u r n
2005-04-13 13:11:22 +04:00
PTR c o m p a t _ s y s _ f c n t l 6 4
2005-04-17 02:20:36 +04:00
PTR s y s _ s e t _ t i d _ a d d r e s s
PTR s y s _ r e s t a r t _ s y s c a l l
PTR s y s _ s e m t i m e d o p / * 6 2 1 5 * /
PTR s y s _ f a d v i s e 6 4 _ 6 4
PTR c o m p a t _ s y s _ s t a t f s64
PTR c o m p a t _ s y s _ f s t a t f s64
PTR s y s _ s e n d f i l e 6 4
2005-02-17 00:25:03 +03:00
PTR s y s32 _ t i m e r _ c r e a t e / * 6 2 2 0 * /
PTR c o m p a t _ s y s _ t i m e r _ s e t t i m e
PTR c o m p a t _ s y s _ t i m e r _ g e t t i m e
2005-04-17 02:20:36 +04:00
PTR s y s _ t i m e r _ g e t o v e r r u n
PTR s y s _ t i m e r _ d e l e t e
2005-02-17 00:25:03 +03:00
PTR c o m p a t _ s y s _ c l o c k _ s e t t i m e / * 6 2 2 5 * /
PTR c o m p a t _ s y s _ c l o c k _ g e t t i m e
PTR c o m p a t _ s y s _ c l o c k _ g e t r e s
PTR c o m p a t _ s y s _ c l o c k _ n a n o s l e e p
2005-04-17 02:20:36 +04:00
PTR s y s _ t g k i l l
PTR c o m p a t _ s y s _ u t i m e s / * 6 2 3 0 * /
PTR s y s _ n i _ s y s c a l l / * s y s _ m b i n d * /
PTR s y s _ n i _ s y s c a l l / * s y s _ g e t _ m e m p o l i c y * /
PTR s y s _ n i _ s y s c a l l / * s y s _ s e t _ m e m p o l i c y * /
PTR c o m p a t _ s y s _ m q _ o p e n
PTR s y s _ m q _ u n l i n k / * 6 2 3 5 * /
PTR c o m p a t _ s y s _ m q _ t i m e d s e n d
PTR c o m p a t _ s y s _ m q _ t i m e d r e c e i v e
PTR c o m p a t _ s y s _ m q _ n o t i f y
PTR c o m p a t _ s y s _ m q _ g e t s e t a t t r
PTR s y s _ n i _ s y s c a l l / * 6 2 4 0 , s y s _ v s e r v e r * /
2005-02-17 00:21:29 +03:00
PTR s y s n 3 2 _ w a i t i d
2005-04-17 02:20:36 +04:00
PTR s y s _ n i _ s y s c a l l / * a v a i l a b l e , w a s s e t a l t r o o t * /
PTR s y s _ a d d _ k e y
PTR s y s _ r e q u e s t _ k e y
PTR s y s _ k e y c t l / * 6 2 4 5 * /
2005-04-13 21:43:59 +04:00
PTR s y s _ s e t _ t h r e a d _ a r e a
2005-08-05 14:31:47 +04:00
PTR s y s _ i n o t i f y _ i n i t
PTR s y s _ i n o t i f y _ a d d _ w a t c h
PTR s y s _ i n o t i f y _ r m _ w a t c h
2006-02-08 16:38:50 +03:00
PTR s y s _ m i g r a t e _ p a g e s / * 6 2 5 0 * /
PTR s y s _ o p e n a t
PTR s y s _ m k d i r a t
PTR s y s _ m k n o d a t
PTR s y s _ f c h o w n a t
PTR s y s _ f u t i m e s a t / * 6 2 5 5 * /
PTR s y s _ n e w f s t a t a t
PTR s y s _ u n l i n k a t
PTR s y s _ r e n a m e a t
PTR s y s _ l i n k a t
PTR s y s _ s y m l i n k a t / * 6 2 6 0 * /
PTR s y s _ r e a d l i n k a t
PTR s y s _ f c h m o d a t
PTR s y s _ f a c c e s s a t
PTR s y s _ p s e l e c t 6
PTR s y s _ p p o l l / * 6 2 6 5 * /
PTR s y s _ u n s h a r e
2006-03-31 12:27:20 +04:00
PTR s y s _ s p l i c e
2006-04-01 10:49:21 +04:00
PTR s y s _ s y n c _ f i l e _ r a n g e
2006-04-15 13:16:19 +04:00
PTR s y s _ t e e
2006-09-06 17:42:02 +04:00
PTR s y s _ v m s p l i c e / * 6 2 7 0 * /
2006-07-02 19:31:14 +04:00
PTR s y s _ m o v e _ p a g e s
2006-09-06 17:42:02 +04:00
PTR c o m p a t _ s y s _ s e t _ r o b u s t _ l i s t
PTR c o m p a t _ s y s _ g e t _ r o b u s t _ l i s t
2006-10-19 02:52:17 +04:00
PTR s y s _ n i _ s y s c a l l
2006-10-30 00:07:40 +03:00
PTR s y s _ g e t c p u
PTR s y s _ e p o l l _ p w a i t