2011-09-19 17:44:57 +00:00
/ *
* PowerNV O P A L A P I w r a p p e r s
*
* Copyright 2 0 1 1 I B M C o r p .
*
* 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 i t 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
* as 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 ; either version
* 2 of t h e L i c e n s e , o r ( a t y o u r o p t i o n ) a n y l a t e r v e r s i o n .
* /
# include < a s m / p p c _ a s m . h >
# include < a s m / h v c a l l . h >
# include < a s m / a s m - o f f s e t s . h >
# include < a s m / o p a l . h >
/ * TODO :
*
* - Trace i r q s i n / o f f ( n e e d s s a v i n g / r e s t o r i n g a l l a r g s , a r g h . . . )
* - Get r11 f e e d u p b y D a v e s o I c a n h a v e b e t t e r r e g i s t e r u s a g e
* /
# define O P A L _ C A L L ( n a m e , t o k e n ) \
_ GLOBAL( n a m e ) ; \
mflr r0 ; \
mfcr r12 ; \
std r0 ,1 6 ( r1 ) ; \
std r12 ,8 ( r1 ) ; \
std r1 ,P A C A R 1 ( r13 ) ; \
li r0 ,0 ; \
mfmsr r12 ; \
ori r0 ,r0 ,M S R _ E E ; \
std r12 ,P A C A S A V E D M S R ( r13 ) ; \
andc r12 ,r12 ,r0 ; \
mtmsrd r12 ,1 ; \
LOAD_ R E G _ A D D R ( r0 ,. o p a l _ r e t u r n ) ; \
mtlr r0 ; \
li r0 ,M S R _ D R | M S R _ I R ; \
andc r12 ,r12 ,r0 ; \
li r0 ,t o k e n ; \
mtspr S P R N _ H S R R 1 ,r12 ; \
LOAD_ R E G _ A D D R ( r11 ,o p a l ) ; \
ld r12 ,8 ( r11 ) ; \
ld r2 ,0 ( r11 ) ; \
mtspr S P R N _ H S R R 0 ,r12 ; \
hrfid
_ STATIC( o p a l _ r e t u r n )
ld r2 ,P A C A T O C ( r13 ) ;
ld r4 ,8 ( r1 ) ;
ld r5 ,1 6 ( r1 ) ;
ld r6 ,P A C A S A V E D M S R ( r13 ) ;
mtspr S P R N _ S R R 0 ,r5 ;
mtspr S P R N _ S R R 1 ,r6 ;
mtcr r4 ;
rfid
OPAL_ C A L L ( o p a l _ c o n s o l e _ w r i t e , O P A L _ C O N S O L E _ W R I T E ) ;
OPAL_ C A L L ( o p a l _ c o n s o l e _ r e a d , O P A L _ C O N S O L E _ R E A D ) ;
OPAL_ C A L L ( o p a l _ c o n s o l e _ w r i t e _ b u f f e r _ s p a c e , O P A L _ C O N S O L E _ W R I T E _ B U F F E R _ S P A C E ) ;
OPAL_ C A L L ( o p a l _ r t c _ r e a d , O P A L _ R T C _ R E A D ) ;
OPAL_ C A L L ( o p a l _ r t c _ w r i t e , O P A L _ R T C _ W R I T E ) ;
OPAL_ C A L L ( o p a l _ c e c _ p o w e r _ d o w n , O P A L _ C E C _ P O W E R _ D O W N ) ;
OPAL_ C A L L ( o p a l _ c e c _ r e b o o t , O P A L _ C E C _ R E B O O T ) ;
OPAL_ C A L L ( o p a l _ r e a d _ n v r a m , O P A L _ R E A D _ N V R A M ) ;
OPAL_ C A L L ( o p a l _ w r i t e _ n v r a m , O P A L _ W R I T E _ N V R A M ) ;
OPAL_ C A L L ( o p a l _ h a n d l e _ i n t e r r u p t , O P A L _ H A N D L E _ I N T E R R U P T ) ;
OPAL_ C A L L ( o p a l _ p o l l _ e v e n t s , O P A L _ P O L L _ E V E N T S ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ h u b _ t c e _ m e m o r y , O P A L _ P C I _ S E T _ H U B _ T C E _ M E M O R Y ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ p h b _ t c e _ m e m o r y , O P A L _ P C I _ S E T _ P H B _ T C E _ M E M O R Y ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ r e a d _ b y t e , O P A L _ P C I _ C O N F I G _ R E A D _ B Y T E ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ r e a d _ h a l f _ w o r d , O P A L _ P C I _ C O N F I G _ R E A D _ H A L F _ W O R D ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ r e a d _ w o r d , O P A L _ P C I _ C O N F I G _ R E A D _ W O R D ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ w r i t e _ b y t e , O P A L _ P C I _ C O N F I G _ W R I T E _ B Y T E ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ w r i t e _ h a l f _ w o r d , O P A L _ P C I _ C O N F I G _ W R I T E _ H A L F _ W O R D ) ;
OPAL_ C A L L ( o p a l _ p c i _ c o n f i g _ w r i t e _ w o r d , O P A L _ P C I _ C O N F I G _ W R I T E _ W O R D ) ;
OPAL_ C A L L ( o p a l _ s e t _ x i v e , O P A L _ S E T _ X I V E ) ;
OPAL_ C A L L ( o p a l _ g e t _ x i v e , O P A L _ G E T _ X I V E ) ;
OPAL_ C A L L ( o p a l _ r e g i s t e r _ e x c e p t i o n _ h a n d l e r , O P A L _ R E G I S T E R _ O P A L _ E X C E P T I O N _ H A N D L E R ) ;
OPAL_ C A L L ( o p a l _ p c i _ e e h _ f r e e z e _ s t a t u s , O P A L _ P C I _ E E H _ F R E E Z E _ S T A T U S ) ;
OPAL_ C A L L ( o p a l _ p c i _ e e h _ f r e e z e _ c l e a r , O P A L _ P C I _ E E H _ F R E E Z E _ C L E A R ) ;
OPAL_ C A L L ( o p a l _ p c i _ s h p c , O P A L _ P C I _ S H P C ) ;
OPAL_ C A L L ( o p a l _ p c i _ p h b _ m m i o _ e n a b l e , O P A L _ P C I _ P H B _ M M I O _ E N A B L E ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ p h b _ m e m _ w i n d o w , O P A L _ P C I _ S E T _ P H B _ M E M _ W I N D O W ) ;
OPAL_ C A L L ( o p a l _ p c i _ m a p _ p e _ m m i o _ w i n d o w , O P A L _ P C I _ M A P _ P E _ M M I O _ W I N D O W ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ p h b _ t a b l e _ m e m o r y , O P A L _ P C I _ S E T _ P H B _ T A B L E _ M E M O R Y ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ p e , O P A L _ P C I _ S E T _ P E ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ p e l t v , O P A L _ P C I _ S E T _ P E L T V ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ m v e , O P A L _ P C I _ S E T _ M V E ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ m v e _ e n a b l e , O P A L _ P C I _ S E T _ M V E _ E N A B L E ) ;
OPAL_ C A L L ( o p a l _ p c i _ g e t _ x i v e _ r e i s s u e , O P A L _ P C I _ G E T _ X I V E _ R E I S S U E ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ x i v e _ r e i s s u e , O P A L _ P C I _ S E T _ X I V E _ R E I S S U E ) ;
OPAL_ C A L L ( o p a l _ p c i _ s e t _ x i v e _ p e , O P A L _ P C I _ S E T _ X I V E _ P E ) ;
OPAL_ C A L L ( o p a l _ g e t _ x i v e _ s o u r c e , O P A L _ G E T _ X I V E _ S O U R C E ) ;
OPAL_ C A L L ( o p a l _ g e t _ m s i _ 3 2 , O P A L _ G E T _ M S I _ 3 2 ) ;
OPAL_ C A L L ( o p a l _ g e t _ m s i _ 6 4 , O P A L _ G E T _ M S I _ 6 4 ) ;
OPAL_ C A L L ( o p a l _ s t a r t _ c p u , O P A L _ S T A R T _ C P U ) ;
OPAL_ C A L L ( o p a l _ q u e r y _ c p u _ s t a t u s , O P A L _ Q U E R Y _ C P U _ S T A T U S ) ;
OPAL_ C A L L ( o p a l _ w r i t e _ o p p a n e l , O P A L _ W R I T E _ O P P A N E L ) ;
OPAL_ C A L L ( o p a l _ p c i _ m a p _ p e _ d m a _ w i n d o w , O P A L _ P C I _ M A P _ P E _ D M A _ W I N D O W ) ;
OPAL_ C A L L ( o p a l _ p c i _ m a p _ p e _ d m a _ w i n d o w _ r e a l , O P A L _ P C I _ M A P _ P E _ D M A _ W I N D O W _ R E A L ) ;
OPAL_ C A L L ( o p a l _ p c i _ r e s e t , O P A L _ P C I _ R E S E T ) ;
2011-11-29 18:22:50 +00:00
OPAL_ C A L L ( o p a l _ p c i _ g e t _ h u b _ d i a g _ d a t a , O P A L _ P C I _ G E T _ H U B _ D I A G _ D A T A ) ;
OPAL_ C A L L ( o p a l _ p c i _ g e t _ p h b _ d i a g _ d a t a , O P A L _ P C I _ G E T _ P H B _ D I A G _ D A T A ) ;
OPAL_ C A L L ( o p a l _ p c i _ f e n c e _ p h b , O P A L _ P C I _ F E N C E _ P H B ) ;
OPAL_ C A L L ( o p a l _ p c i _ r e i n i t , O P A L _ P C I _ R E I N I T ) ;
OPAL_ C A L L ( o p a l _ p c i _ m a s k _ p e _ e r r o r , O P A L _ P C I _ M A S K _ P E _ E R R O R ) ;
OPAL_ C A L L ( o p a l _ s e t _ s l o t _ l e d _ s t a t u s , O P A L _ S E T _ S L O T _ L E D _ S T A T U S ) ;
OPAL_ C A L L ( o p a l _ g e t _ e p o w _ s t a t u s , O P A L _ G E T _ E P O W _ S T A T U S ) ;
OPAL_ C A L L ( o p a l _ s e t _ s y s t e m _ a t t e n t i o n _ l e d , O P A L _ S E T _ S Y S T E M _ A T T E N T I O N _ L E D ) ;