2011-11-01 03:39:14 +04:00
/ *
* Hexagon V M i n s t r u c t i o n s u p p o r t
*
2012-09-20 01:22:02 +04:00
* Copyright ( c ) 2 0 1 0 - 2 0 1 1 , T h e L i n u x F o u n d a t i o n . A l l r i g h t s r e s e r v e d .
2011-11-01 03:39:14 +04:00
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or modify
* it u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n 2 a n d
* only v e r s i o n 2 a s p u b l i s h e d b y t h e F r e e S o f t w a r e F o u n d a t i o n .
*
* This p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l ,
* but W I T H O U T A N Y W A R R A N T Y ; without even the implied warranty of
* MERCHANTABILITY o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e
* GNU G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s .
*
* You s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e
* along w i t h t h i s p r o g r a m ; if not, write to the Free Software
* Foundation, I n c . , 5 1 F r a n k l i n S t r e e t , F i f t h F l o o r , B o s t o n , M A
* 0 2 1 1 0 - 1 3 0 1 , USA.
* /
# include < l i n u x / l i n k a g e . h >
# include < a s m / h e x a g o n _ v m . h >
/ *
* C w r a p p e r s f o r v i r t u a l m a c h i n e " i n s t r u c t i o n s " . T h e s e
* could b e , a n d p e r h a p s s o m e d a y w i l l b e , h a n d l e d a s i n - l i n e
* macros, b u t f o r t r a c i n g / d e b u g g i n g i t ' s h a n d y t o h a v e
* a s i n g l e p o i n t o f i n v o c a t i o n f o r e a c h o f t h e m .
* Conveniently, t h e y t a k e p a r a m t e r s a n d r e t u r n v a l u e s
* consistent w i t h t h e A B I c a l l i n g c o n v e n t i o n .
* /
ENTRY( _ _ v m r t e )
trap1 ( #H V M _ T R A P 1 _ V M R T E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m s e t v e c )
trap1 ( #H V M _ T R A P 1 _ V M S E T V E C ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m s e t i e )
trap1 ( #H V M _ T R A P 1 _ V M S E T I E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m g e t i e )
trap1 ( #H V M _ T R A P 1 _ V M G E T I E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m i n t o p )
trap1 ( #H V M _ T R A P 1 _ V M I N T O P ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m c l r m a p )
trap1 ( #H V M _ T R A P 1 _ V M C L R M A P ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m n e w m a p )
r1 = #V M _ N E W M A P _ T Y P E _ P G T A B L E S ;
trap1 ( #H V M _ T R A P 1 _ V M N E W M A P ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m c a c h e )
trap1 ( #H V M _ T R A P 1 _ V M C A C H E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m g e t t i m e )
trap1 ( #H V M _ T R A P 1 _ V M G E T T I M E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m s e t t i m e )
trap1 ( #H V M _ T R A P 1 _ V M S E T T I M E ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m w a i t )
trap1 ( #H V M _ T R A P 1 _ V M W A I T ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m y i e l d )
trap1 ( #H V M _ T R A P 1 _ V M Y I E L D ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m s t a r t )
trap1 ( #H V M _ T R A P 1 _ V M S T A R T ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m s t o p )
trap1 ( #H V M _ T R A P 1 _ V M S T O P ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m v p i d )
trap1 ( #H V M _ T R A P 1 _ V M V P I D ) ;
jumpr R 3 1 ;
/* Probably not actually going to use these; see vm_entry.S */
ENTRY( _ _ v m s e t r e g s )
trap1 ( #H V M _ T R A P 1 _ V M S E T R E G S ) ;
jumpr R 3 1 ;
ENTRY( _ _ v m g e t r e g s )
trap1 ( #H V M _ T R A P 1 _ V M G E T R E G S ) ;
jumpr R 3 1 ;