2007-02-02 16:36:27 +09:00
/ *
* Beat h y p e r v i s o r c a l l I / F
*
* ( C) C o p y r i g h t 2 0 0 7 T O S H I B A C O R P O R A T I O N
*
* This c o d e i s b a s e d o n a r c h / p o w e r p c / p l a t f o r m s / p s e r i e s / h v C a l l . S .
*
* 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 a s p u b l i s h e d b y
* the 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 the License, or
* ( at 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 .
*
* 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 a l o n g
* with t h i s p r o g r a m ; if not, write to the Free Software Foundation, Inc.,
* 5 1 Franklin 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 U S A .
* /
# include < a s m / p p c _ a s m . h >
/* Not implemented on Beat, now */
# define H C A L L _ I N S T _ P R E C A L L
# define H C A L L _ I N S T _ P O S T C A L L
.text
# define H V S C . l o n g 0 x44 0 0 0 0 2 2
/* Note: takes only 7 input parameters at maximum */
_ GLOBAL( b e a t _ h c a l l _ n o r e t s )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
mr r11 ,r3
mr r3 ,r4
mr r4 ,r5
mr r5 ,r6
mr r6 ,r7
mr r7 ,r8
mr r8 ,r9
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes 8 input parameters at maximum */
_ GLOBAL( b e a t _ h c a l l _ n o r e t s8 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
mr r11 ,r3
mr r3 ,r4
mr r4 ,r5
mr r5 ,r6
mr r6 ,r7
mr r7 ,r8
mr r8 ,r9
2012-06-25 13:33:14 +00:00
ld r10 ,S T K _ P A R A M ( R 1 0 ) ( r1 )
2007-02-02 16:36:27 +09:00
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 1 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 1 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 2 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 2 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
std r5 , 8 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 3 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 3 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
std r5 , 8 ( r12 )
std r6 , 1 6 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 4 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 4 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
std r5 , 8 ( r12 )
std r6 , 1 6 ( r12 )
std r7 , 2 4 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 5 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 5 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
std r5 , 8 ( r12 )
std r6 , 1 6 ( r12 )
std r7 , 2 4 ( r12 )
std r8 , 3 2 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /
/* Note: takes only 6 input parameters, 6 output parameters at maximum */
_ GLOBAL( b e a t _ h c a l l 6 )
HMT_ M E D I U M
mfcr r0
stw r0 ,8 ( r1 )
HCALL_ I N S T _ P R E C A L L
2012-06-25 13:33:14 +00:00
std r4 ,S T K _ P A R A M ( R 4 ) ( r1 ) / * s a v e r e t b u f f e r * /
2007-02-02 16:36:27 +09:00
mr r11 ,r3
mr r3 ,r5
mr r4 ,r6
mr r5 ,r7
mr r6 ,r8
mr r7 ,r9
mr r8 ,r10
HVSC / * i n v o k e t h e h y p e r v i s o r * /
HCALL_ I N S T _ P O S T C A L L
2012-06-25 13:33:14 +00:00
ld r12 ,S T K _ P A R A M ( R 4 ) ( r1 )
2007-02-02 16:36:27 +09:00
std r4 , 0 ( r12 )
std r5 , 8 ( r12 )
std r6 , 1 6 ( r12 )
std r7 , 2 4 ( r12 )
std r8 , 3 2 ( r12 )
std r9 , 4 0 ( r12 )
lwz r0 ,8 ( r1 )
mtcrf 0 x f f ,r0
blr / * r e t u r n r3 = s t a t u s * /