2018-10-09 10:18:30 +08:00
/* SPDX-License-Identifier: GPL-2.0 */
/ *
* Copyright ( C ) 2 0 1 2 R e g e n t s o f t h e U n i v e r s i t y o f C a l i f o r n i a
* Copyright ( C ) 2 0 1 7 S i F i v e
*
* 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 , v e r s i o n 2 .
*
* 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 .
* /
# include < l i n u x / l i n k a g e . h >
# include < a s m / a s m . h >
# include < a s m / c s r . h >
# include < a s m / a s m - o f f s e t s . h >
ENTRY( _ _ f s t a t e _ s a v e )
li a2 , T A S K _ T H R E A D _ F 0
add a0 , a0 , a2
li t 1 , S R _ F S
2019-10-28 13:10:32 +01:00
csrs C S R _ S T A T U S , t 1
2018-10-09 10:18:30 +08:00
frcsr t 0
fsd f0 , T A S K _ T H R E A D _ F 0 _ F 0 ( a0 )
fsd f1 , T A S K _ T H R E A D _ F 1 _ F 0 ( a0 )
fsd f2 , T A S K _ T H R E A D _ F 2 _ F 0 ( a0 )
fsd f3 , T A S K _ T H R E A D _ F 3 _ F 0 ( a0 )
fsd f4 , T A S K _ T H R E A D _ F 4 _ F 0 ( a0 )
fsd f5 , T A S K _ T H R E A D _ F 5 _ F 0 ( a0 )
fsd f6 , T A S K _ T H R E A D _ F 6 _ F 0 ( a0 )
fsd f7 , T A S K _ T H R E A D _ F 7 _ F 0 ( a0 )
fsd f8 , T A S K _ T H R E A D _ F 8 _ F 0 ( a0 )
fsd f9 , T A S K _ T H R E A D _ F 9 _ F 0 ( a0 )
fsd f10 , T A S K _ T H R E A D _ F 1 0 _ F 0 ( a0 )
fsd f11 , T A S K _ T H R E A D _ F 1 1 _ F 0 ( a0 )
fsd f12 , T A S K _ T H R E A D _ F 1 2 _ F 0 ( a0 )
fsd f13 , T A S K _ T H R E A D _ F 1 3 _ F 0 ( a0 )
fsd f14 , T A S K _ T H R E A D _ F 1 4 _ F 0 ( a0 )
fsd f15 , T A S K _ T H R E A D _ F 1 5 _ F 0 ( a0 )
fsd f16 , T A S K _ T H R E A D _ F 1 6 _ F 0 ( a0 )
fsd f17 , T A S K _ T H R E A D _ F 1 7 _ F 0 ( a0 )
fsd f18 , T A S K _ T H R E A D _ F 1 8 _ F 0 ( a0 )
fsd f19 , T A S K _ T H R E A D _ F 1 9 _ F 0 ( a0 )
fsd f20 , T A S K _ T H R E A D _ F 2 0 _ F 0 ( a0 )
fsd f21 , T A S K _ T H R E A D _ F 2 1 _ F 0 ( a0 )
fsd f22 , T A S K _ T H R E A D _ F 2 2 _ F 0 ( a0 )
fsd f23 , T A S K _ T H R E A D _ F 2 3 _ F 0 ( a0 )
fsd f24 , T A S K _ T H R E A D _ F 2 4 _ F 0 ( a0 )
fsd f25 , T A S K _ T H R E A D _ F 2 5 _ F 0 ( a0 )
fsd f26 , T A S K _ T H R E A D _ F 2 6 _ F 0 ( a0 )
fsd f27 , T A S K _ T H R E A D _ F 2 7 _ F 0 ( a0 )
fsd f28 , T A S K _ T H R E A D _ F 2 8 _ F 0 ( a0 )
fsd f29 , T A S K _ T H R E A D _ F 2 9 _ F 0 ( a0 )
fsd f30 , T A S K _ T H R E A D _ F 3 0 _ F 0 ( a0 )
fsd f31 , T A S K _ T H R E A D _ F 3 1 _ F 0 ( a0 )
sw t 0 , T A S K _ T H R E A D _ F C S R _ F 0 ( a0 )
2019-10-28 13:10:32 +01:00
csrc C S R _ S T A T U S , t 1
2018-10-09 10:18:30 +08:00
ret
ENDPROC( _ _ f s t a t e _ s a v e )
ENTRY( _ _ f s t a t e _ r e s t o r e )
li a2 , T A S K _ T H R E A D _ F 0
add a0 , a0 , a2
li t 1 , S R _ F S
lw t 0 , T A S K _ T H R E A D _ F C S R _ F 0 ( a0 )
2019-10-28 13:10:32 +01:00
csrs C S R _ S T A T U S , t 1
2018-10-09 10:18:30 +08:00
fld f0 , T A S K _ T H R E A D _ F 0 _ F 0 ( a0 )
fld f1 , T A S K _ T H R E A D _ F 1 _ F 0 ( a0 )
fld f2 , T A S K _ T H R E A D _ F 2 _ F 0 ( a0 )
fld f3 , T A S K _ T H R E A D _ F 3 _ F 0 ( a0 )
fld f4 , T A S K _ T H R E A D _ F 4 _ F 0 ( a0 )
fld f5 , T A S K _ T H R E A D _ F 5 _ F 0 ( a0 )
fld f6 , T A S K _ T H R E A D _ F 6 _ F 0 ( a0 )
fld f7 , T A S K _ T H R E A D _ F 7 _ F 0 ( a0 )
fld f8 , T A S K _ T H R E A D _ F 8 _ F 0 ( a0 )
fld f9 , T A S K _ T H R E A D _ F 9 _ F 0 ( a0 )
fld f10 , T A S K _ T H R E A D _ F 1 0 _ F 0 ( a0 )
fld f11 , T A S K _ T H R E A D _ F 1 1 _ F 0 ( a0 )
fld f12 , T A S K _ T H R E A D _ F 1 2 _ F 0 ( a0 )
fld f13 , T A S K _ T H R E A D _ F 1 3 _ F 0 ( a0 )
fld f14 , T A S K _ T H R E A D _ F 1 4 _ F 0 ( a0 )
fld f15 , T A S K _ T H R E A D _ F 1 5 _ F 0 ( a0 )
fld f16 , T A S K _ T H R E A D _ F 1 6 _ F 0 ( a0 )
fld f17 , T A S K _ T H R E A D _ F 1 7 _ F 0 ( a0 )
fld f18 , T A S K _ T H R E A D _ F 1 8 _ F 0 ( a0 )
fld f19 , T A S K _ T H R E A D _ F 1 9 _ F 0 ( a0 )
fld f20 , T A S K _ T H R E A D _ F 2 0 _ F 0 ( a0 )
fld f21 , T A S K _ T H R E A D _ F 2 1 _ F 0 ( a0 )
fld f22 , T A S K _ T H R E A D _ F 2 2 _ F 0 ( a0 )
fld f23 , T A S K _ T H R E A D _ F 2 3 _ F 0 ( a0 )
fld f24 , T A S K _ T H R E A D _ F 2 4 _ F 0 ( a0 )
fld f25 , T A S K _ T H R E A D _ F 2 5 _ F 0 ( a0 )
fld f26 , T A S K _ T H R E A D _ F 2 6 _ F 0 ( a0 )
fld f27 , T A S K _ T H R E A D _ F 2 7 _ F 0 ( a0 )
fld f28 , T A S K _ T H R E A D _ F 2 8 _ F 0 ( a0 )
fld f29 , T A S K _ T H R E A D _ F 2 9 _ F 0 ( a0 )
fld f30 , T A S K _ T H R E A D _ F 3 0 _ F 0 ( a0 )
fld f31 , T A S K _ T H R E A D _ F 3 1 _ F 0 ( a0 )
fscsr t 0
2019-10-28 13:10:32 +01:00
csrc C S R _ S T A T U S , t 1
2018-10-09 10:18:30 +08:00
ret
ENDPROC( _ _ f s t a t e _ r e s t o r e )