2005-09-26 16:04:21 +10:00
/ *
2008-08-22 14:39:00 +10:00
* Copyright ( C ) 2 0 0 8 M a r k N e l s o n , I B M C o r p .
2005-09-26 16:04:21 +10: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 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 r o c e s s o r . h >
# include < a s m / p p c _ a s m . h >
2008-08-22 14:39:00 +10:00
# include < a s m / a s m - o f f s e t s . h >
.section " .toc " , " aw"
PPC64_CACHES :
.tc ppc6 4 _ c a c h e s [ T C ] ,p p c64 _ c a c h e s
.section " .text "
2005-09-26 16:04:21 +10:00
2005-11-07 11:06:55 +11:00
_ GLOBAL( c o p y _ 4 K _ p a g e )
2008-08-22 14:39:00 +10:00
li r5 ,4 0 9 6 / * 4 K p a g e s i z e * /
BEGIN_ F T R _ S E C T I O N
ld r10 ,P P C 6 4 _ C A C H E S @toc(r2)
lwz r11 ,D C A C H E L 1 L O G L I N E S I Z E ( r10 ) / * l o g 2 o f c a c h e l i n e s i z e * /
lwz r12 ,D C A C H E L 1 L I N E S I Z E ( r10 ) / * g e t c a c h e l i n e s i z e * /
li r9 ,0
srd r8 ,r5 ,r11
mtctr r8
setup :
dcbt r9 ,r4
dcbz r9 ,r3
add r9 ,r9 ,r12
bdnz s e t u p
END_ F T R _ S E C T I O N _ I F S E T ( C P U _ F T R _ C P _ U S E _ D C B T Z )
2005-09-26 16:04:21 +10:00
addi r3 ,r3 ,- 8
2008-08-22 14:39:00 +10:00
srdi r8 ,r5 ,7 / * p a g e i s c o p i e d i n 1 2 8 b y t e s t r i d e s * /
addi r8 ,r8 ,- 1 / * o n e s t r i d e c o p i e d o u t s i d e l o o p * /
mtctr r8
ld r5 ,0 ( r4 )
ld r6 ,8 ( r4 )
ld r7 ,1 6 ( r4 )
ldu r8 ,2 4 ( r4 )
1 : std r5 ,8 ( r3 )
ld r9 ,8 ( r4 )
std r6 ,1 6 ( r3 )
ld r10 ,1 6 ( r4 )
std r7 ,2 4 ( r3 )
ld r11 ,2 4 ( r4 )
std r8 ,3 2 ( r3 )
ld r12 ,3 2 ( r4 )
std r9 ,4 0 ( r3 )
ld r5 ,4 0 ( r4 )
std r10 ,4 8 ( r3 )
ld r6 ,4 8 ( r4 )
std r11 ,5 6 ( r3 )
ld r7 ,5 6 ( r4 )
std r12 ,6 4 ( r3 )
ld r8 ,6 4 ( r4 )
std r5 ,7 2 ( r3 )
ld r9 ,7 2 ( r4 )
std r6 ,8 0 ( r3 )
ld r10 ,8 0 ( r4 )
std r7 ,8 8 ( r3 )
ld r11 ,8 8 ( r4 )
std r8 ,9 6 ( r3 )
ld r12 ,9 6 ( r4 )
std r9 ,1 0 4 ( r3 )
ld r5 ,1 0 4 ( r4 )
std r10 ,1 1 2 ( r3 )
ld r6 ,1 1 2 ( r4 )
std r11 ,1 2 0 ( r3 )
ld r7 ,1 2 0 ( r4 )
stdu r12 ,1 2 8 ( r3 )
ldu r8 ,1 2 8 ( r4 )
2005-09-26 16:04:21 +10:00
bdnz 1 b
2008-08-22 14:39:00 +10:00
std r5 ,8 ( r3 )
ld r9 ,8 ( r4 )
std r6 ,1 6 ( r3 )
ld r10 ,1 6 ( r4 )
std r7 ,2 4 ( r3 )
ld r11 ,2 4 ( r4 )
std r8 ,3 2 ( r3 )
ld r12 ,3 2 ( r4 )
std r9 ,4 0 ( r3 )
ld r5 ,4 0 ( r4 )
std r10 ,4 8 ( r3 )
ld r6 ,4 8 ( r4 )
std r11 ,5 6 ( r3 )
ld r7 ,5 6 ( r4 )
std r12 ,6 4 ( r3 )
ld r8 ,6 4 ( r4 )
std r5 ,7 2 ( r3 )
ld r9 ,7 2 ( r4 )
std r6 ,8 0 ( r3 )
ld r10 ,8 0 ( r4 )
std r7 ,8 8 ( r3 )
ld r11 ,8 8 ( r4 )
std r8 ,9 6 ( r3 )
ld r12 ,9 6 ( r4 )
std r9 ,1 0 4 ( r3 )
std r10 ,1 1 2 ( r3 )
std r11 ,1 2 0 ( r3 )
std r12 ,1 2 8 ( r3 )
2005-09-26 16:04:21 +10:00
blr