2005-04-17 02:20:36 +04:00
/ *
* linux/ a r c h / a r m / m m / a r m 9 2 5 . S : M M U f u n c t i o n s f o r A R M 9 2 5
*
* Copyright ( C ) 1 9 9 9 ,2 0 0 0 A R M L i m i t e d
* Copyright ( C ) 2 0 0 0 D e e p B l u e S o l u t i o n s L t d .
* Copyright ( C ) 2 0 0 2 R i d g e R u n , I n c .
* Copyright ( C ) 2 0 0 2 - 2 0 0 3 M o n t a V i s t a S o f t w a r e , I n c .
*
* Update f o r L i n u x - 2 . 6 a n d c a c h e f l u s h i m p r o v e m e n t s
* Copyright ( C ) 2 0 0 4 N o k i a C o r p o r a t i o n b y T o n y L i n d g r e n < t o n y @atomide.com>
*
* 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
* 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 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A
*
*
* These a r e t h e l o w l e v e l a s s e m b l e r f o r p e r f o r m i n g c a c h e a n d T L B
* functions o n t h e a r m 9 2 5 .
*
* CONFIG_ C P U _ A R M 9 2 5 _ C P U _ I D L E - > n o h l t
*
* Some a d d i t i o n a l n o t e s b a s e d o n d e c i p h e r i n g t h e T I T R M o n O M A P - 5 9 1 0 :
*
* NOTE1 : The T I 9 2 5 T C o n f i g u r a t i o n R e g i s t e r b i t " D - c a c h e c l e a n a n d f l u s h
* entry m o d e " m u s t b e 0 t o f l u s h t h e e n t r i e s i n b o t h s e g m e n t s
* at o n c e . T h i s i s t h e d e f a u l t v a l u e . S e e T R M 2 - 2 0 a n d 2 - 2 4 f o r
* more i n f o r m a t i o n .
*
* NOTE2 : Default i s t h e " D - c a c h e c l e a n a n d f l u s h e n t r y m o d e " . I t l o o k s
* like t h e " T r a n s p a r e n t m o d e " m u s t b e o n f o r p a r t i a l c a c h e f l u s h e s
* to w o r k i n t h i s m o d e . T h i s m o d e o n l y w o r k s w i t h 1 6 - b i t e x t e r n a l
* memory. S e e T R M 2 - 2 4 f o r m o r e i n f o r m a t i o n .
*
* NOTE3 : Write- b a c k c a c h e f l u s h i n g s e e m s t o b e f l a k e y w i t h d e v i c e s u s i n g
* direct m e m o r y a c c e s s , s u c h a s U S B O H C I . T h e w o r k a r o u n d i s t o u s e
* write- t h r o u g h c a c h e w i t h C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H ( t h i s i s
* the d e f a u l t f o r O M A P - 1 5 1 0 ) .
* /
# include < l i n u x / l i n k a g e . h >
# include < l i n u x / c o n f i g . h >
# include < l i n u x / i n i t . h >
# include < a s m / a s s e m b l e r . h >
2006-03-16 17:44:36 +03:00
# include < a s m / p g t a b l e - h w d e f . h >
2005-04-17 02:20:36 +04:00
# include < a s m / p g t a b l e . h >
# include < a s m / p r o c i n f o . h >
# include < a s m / h a r d w a r e . h >
# include < a s m / p a g e . h >
# include < a s m / p t r a c e . h >
# include " p r o c - m a c r o s . S "
/ *
* The s i z e o f o n e d a t a c a c h e l i n e .
* /
# define C A C H E _ D L I N E S I Z E 1 6
/ *
* The n u m b e r o f d a t a c a c h e s e g m e n t s .
* /
# define C A C H E _ D S E G M E N T S 2
/ *
* The n u m b e r o f l i n e s i n a c a c h e s e g m e n t .
* /
# define C A C H E _ D E N T R I E S 2 5 6
/ *
* This i s t h e s i z e a t w h i c h i t b e c o m e s m o r e e f f i c i e n t t o
* clean t h e w h o l e c a c h e , r a t h e r t h a n u s i n g t h e i n d i v i d u a l
* cache l i n e m a i n t a i n e n c e i n s t r u c t i o n s .
* /
# define C A C H E _ D L I M I T 8 1 9 2
.text
/ *
* cpu_ a r m 9 2 5 _ p r o c _ i n i t ( )
* /
ENTRY( c p u _ a r m 9 2 5 _ p r o c _ i n i t )
mov p c , l r
/ *
* cpu_ a r m 9 2 5 _ p r o c _ f i n ( )
* /
ENTRY( c p u _ a r m 9 2 5 _ p r o c _ f i n )
stmfd s p ! , { l r }
mov i p , #P S R _ F _ B I T | P S R _ I _ B I T | S V C _ M O D E
msr c p s r _ c , i p
bl a r m 9 2 5 _ f l u s h _ k e r n _ c a c h e _ a l l
mrc p15 , 0 , r0 , c1 , c0 , 0 @ ctrl register
bic r0 , r0 , #0x1000 @ ...i............
bic r0 , r0 , #0x000e @ ............wca.
mcr p15 , 0 , r0 , c1 , c0 , 0 @ disable caches
ldmfd s p ! , { p c }
/ *
* cpu_ a r m 9 2 5 _ r e s e t ( l o c )
*
* Perform a s o f t r e s e t o f t h e s y s t e m . P u t t h e C P U i n t o t h e
* same s t a t e a s i t w o u l d b e i f i t h a d b e e n r e s e t , a n d b r a n c h
* to w h a t w o u l d b e t h e r e s e t v e c t o r .
*
* loc : location t o j u m p t o f o r s o f t r e s e t
* /
.align 5
ENTRY( c p u _ a r m 9 2 5 _ r e s e t )
/* Send software reset to MPU and DSP */
mov i p , #0xff000000
orr i p , i p , #0x00fe0000
orr i p , i p , #0x0000ce00
mov r4 , #1
strh r4 , [ i p , #0x10 ]
mov i p , #0
mcr p15 , 0 , i p , c7 , c7 , 0 @ invalidate I,D caches
mcr p15 , 0 , i p , c7 , c10 , 4 @ drain WB
mcr p15 , 0 , i p , c8 , c7 , 0 @ invalidate I & D TLBs
mrc p15 , 0 , i p , c1 , c0 , 0 @ ctrl register
bic i p , i p , #0x000f @ ............wcam
bic i p , i p , #0x1100 @ ...i...s........
mcr p15 , 0 , i p , c1 , c0 , 0 @ ctrl register
mov p c , r0
/ *
* cpu_ a r m 9 2 5 _ d o _ i d l e ( )
*
* Called w i t h I R Q s d i s a b l e d
* /
.align 10
ENTRY( c p u _ a r m 9 2 5 _ d o _ i d l e )
mov r0 , #0
mrc p15 , 0 , r1 , c1 , c0 , 0 @ Read control register
mcr p15 , 0 , r0 , c7 , c10 , 4 @ Drain write buffer
bic r2 , r1 , #1 < < 1 2
mcr p15 , 0 , r2 , c1 , c0 , 0 @ Disable I cache
mcr p15 , 0 , r0 , c7 , c0 , 4 @ Wait for interrupt
mcr p15 , 0 , r1 , c1 , c0 , 0 @ Restore ICache enable
mov p c , l r
/ *
* flush_ u s e r _ c a c h e _ a l l ( )
*
* Clean a n d i n v a l i d a t e a l l c a c h e e n t r i e s i n a p a r t i c u l a r
* address s p a c e .
* /
ENTRY( a r m 9 2 5 _ f l u s h _ u s e r _ c a c h e _ a l l )
/* FALLTHROUGH */
/ *
* flush_ k e r n _ c a c h e _ a l l ( )
*
* Clean a n d i n v a l i d a t e t h e e n t i r e c a c h e .
* /
ENTRY( a r m 9 2 5 _ f l u s h _ k e r n _ c a c h e _ a l l )
mov r2 , #V M _ E X E C
mov i p , #0
__flush_whole_cache :
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mcr p15 , 0 , i p , c7 , c6 , 0 @ invalidate D cache
# else
/* Flush entries in both segments at once, see NOTE1 above */
mov r3 , #( C A C H E _ D E N T R I E S - 1 ) < < 4 @ 256 entries in segment
2 : mcr p15 , 0 , r3 , c7 , c14 , 2 @ clean+invalidate D index
subs r3 , r3 , #1 < < 4
bcs 2 b @ entries 255 to 0
# endif
tst r2 , #V M _ E X E C
mcrne p15 , 0 , i p , c7 , c5 , 0 @ invalidate I cache
mcrne p15 , 0 , i p , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* flush_ u s e r _ c a c h e _ r a n g e ( s t a r t , e n d , f l a g s )
*
* Clean a n d i n v a l i d a t e a r a n g e o f c a c h e e n t r i e s i n t h e
* specified a d d r e s s r a n g e .
*
* - start - s t a r t a d d r e s s ( i n c l u s i v e )
* - end - e n d a d d r e s s ( e x c l u s i v e )
* - flags - v m _ f l a g s d e s c r i b i n g a d d r e s s s p a c e
* /
ENTRY( a r m 9 2 5 _ f l u s h _ u s e r _ c a c h e _ r a n g e )
mov i p , #0
sub r3 , r1 , r0 @ calculate total size
cmp r3 , #C A C H E _ D L I M I T
bgt _ _ f l u s h _ w h o l e _ c a c h e
1 : tst r2 , #V M _ E X E C
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mcr p15 , 0 , r0 , c7 , c6 , 1 @ invalidate D entry
mcrne p15 , 0 , r0 , c7 , c5 , 1 @ invalidate I entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
mcr p15 , 0 , r0 , c7 , c6 , 1 @ invalidate D entry
mcrne p15 , 0 , r0 , c7 , c5 , 1 @ invalidate I entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
# else
mcr p15 , 0 , r0 , c7 , c14 , 1 @ clean and invalidate D entry
mcrne p15 , 0 , r0 , c7 , c5 , 1 @ invalidate I entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
mcr p15 , 0 , r0 , c7 , c14 , 1 @ clean and invalidate D entry
mcrne p15 , 0 , r0 , c7 , c5 , 1 @ invalidate I entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
# endif
cmp r0 , r1
blo 1 b
tst r2 , #V M _ E X E C
mcrne p15 , 0 , i p , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* coherent_ k e r n _ r a n g e ( s t a r t , e n d )
*
* Ensure c o h e r e n c y b e t w e e n t h e I c a c h e a n d t h e D c a c h e i n t h e
* region d e s c r i b e d b y s t a r t , e n d . I f y o u h a v e n o n - s n o o p i n g
* Harvard c a c h e s , y o u n e e d t o i m p l e m e n t t h i s f u n c t i o n .
*
* - start - v i r t u a l s t a r t a d d r e s s
* - end - v i r t u a l e n d a d d r e s s
* /
ENTRY( a r m 9 2 5 _ c o h e r e n t _ k e r n _ r a n g e )
/* FALLTHROUGH */
/ *
* coherent_ u s e r _ r a n g e ( s t a r t , e n d )
*
* Ensure c o h e r e n c y b e t w e e n t h e I c a c h e a n d t h e D c a c h e i n t h e
* region d e s c r i b e d b y s t a r t , e n d . I f y o u h a v e n o n - s n o o p i n g
* Harvard c a c h e s , y o u n e e d t o i m p l e m e n t t h i s f u n c t i o n .
*
* - start - v i r t u a l s t a r t a d d r e s s
* - end - v i r t u a l e n d a d d r e s s
* /
ENTRY( a r m 9 2 5 _ c o h e r e n t _ u s e r _ r a n g e )
bic r0 , r0 , #C A C H E _ D L I N E S I Z E - 1
1 : mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
mcr p15 , 0 , r0 , c7 , c5 , 1 @ invalidate I entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
cmp r0 , r1
blo 1 b
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* flush_ k e r n _ d c a c h e _ p a g e ( v o i d * p a g e )
*
* Ensure n o D c a c h e a l i a s i n g o c c u r s , e i t h e r w i t h i t s e l f o r
* the I c a c h e
*
* - addr - p a g e a l i g n e d a d d r e s s
* /
ENTRY( a r m 9 2 5 _ f l u s h _ k e r n _ d c a c h e _ p a g e )
add r1 , r0 , #P A G E _ S Z
1 : mcr p15 , 0 , r0 , c7 , c14 , 1 @ clean+invalidate D entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
cmp r0 , r1
blo 1 b
mov r0 , #0
mcr p15 , 0 , r0 , c7 , c5 , 0 @ invalidate I cache
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* dma_ i n v _ r a n g e ( s t a r t , e n d )
*
* Invalidate ( d i s c a r d ) t h e s p e c i f i e d v i r t u a l a d d r e s s r a n g e .
* May n o t w r i t e b a c k a n y e n t r i e s . I f ' s t a r t ' o r ' e n d '
* are n o t c a c h e l i n e a l i g n e d , t h o s e l i n e s m u s t b e w r i t t e n
* back.
*
* - start - v i r t u a l s t a r t a d d r e s s
* - end - v i r t u a l e n d a d d r e s s
*
* ( same a s v4 w b )
* /
ENTRY( a r m 9 2 5 _ d m a _ i n v _ r a n g e )
# ifndef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
tst r0 , #C A C H E _ D L I N E S I Z E - 1
mcrne p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
tst r1 , #C A C H E _ D L I N E S I Z E - 1
mcrne p15 , 0 , r1 , c7 , c10 , 1 @ clean D entry
# endif
bic r0 , r0 , #C A C H E _ D L I N E S I Z E - 1
1 : mcr p15 , 0 , r0 , c7 , c6 , 1 @ invalidate D entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
cmp r0 , r1
blo 1 b
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* dma_ c l e a n _ r a n g e ( s t a r t , e n d )
*
* Clean t h e s p e c i f i e d v i r t u a l a d d r e s s r a n g e .
*
* - start - v i r t u a l s t a r t a d d r e s s
* - end - v i r t u a l e n d a d d r e s s
*
* ( same a s v4 w b )
* /
ENTRY( a r m 9 2 5 _ d m a _ c l e a n _ r a n g e )
# ifndef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
bic r0 , r0 , #C A C H E _ D L I N E S I Z E - 1
1 : mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
cmp r0 , r1
blo 1 b
# endif
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
/ *
* dma_ f l u s h _ r a n g e ( s t a r t , e n d )
*
* Clean a n d i n v a l i d a t e t h e s p e c i f i e d v i r t u a l a d d r e s s r a n g e .
*
* - start - v i r t u a l s t a r t a d d r e s s
* - end - v i r t u a l e n d a d d r e s s
* /
ENTRY( a r m 9 2 5 _ d m a _ f l u s h _ r a n g e )
bic r0 , r0 , #C A C H E _ D L I N E S I Z E - 1
1 :
# ifndef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mcr p15 , 0 , r0 , c7 , c14 , 1 @ clean+invalidate D entry
# else
mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
# endif
add r0 , r0 , #C A C H E _ D L I N E S I Z E
cmp r0 , r1
blo 1 b
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
ENTRY( a r m 9 2 5 _ c a c h e _ f n s )
.long arm925_flush_kern_cache_all
.long arm925_flush_user_cache_all
.long arm925_flush_user_cache_range
.long arm925_coherent_kern_range
.long arm925_coherent_user_range
.long arm925_flush_kern_dcache_page
.long arm925_dma_inv_range
.long arm925_dma_clean_range
.long arm925_dma_flush_range
ENTRY( c p u _ a r m 9 2 5 _ d c a c h e _ c l e a n _ a r e a )
# ifndef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
1 : mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
add r0 , r0 , #C A C H E _ D L I N E S I Z E
subs r1 , r1 , #C A C H E _ D L I N E S I Z E
bhi 1 b
# endif
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
/* =============================== PageTable ============================== */
/ *
* cpu_ a r m 9 2 5 _ s w i t c h _ m m ( p g d )
*
* Set t h e t r a n s l a t i o n b a s e p o i n t e r t o b e a s d e s c r i b e d b y p g d .
*
* pgd : new p a g e t a b l e s
* /
.align 5
ENTRY( c p u _ a r m 9 2 5 _ s w i t c h _ m m )
mov i p , #0
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mcr p15 , 0 , i p , c7 , c6 , 0 @ invalidate D cache
# else
/* Flush entries in bothe segments at once, see NOTE1 above */
mov r3 , #( C A C H E _ D E N T R I E S - 1 ) < < 4 @ 256 entries in segment
2 : mcr p15 , 0 , r3 , c7 , c14 , 2 @ clean & invalidate D index
subs r3 , r3 , #1 < < 4
bcs 2 b @ entries 255 to 0
# endif
mcr p15 , 0 , i p , c7 , c5 , 0 @ invalidate I cache
mcr p15 , 0 , i p , c7 , c10 , 4 @ drain WB
mcr p15 , 0 , r0 , c2 , c0 , 0 @ load page table pointer
mcr p15 , 0 , i p , c8 , c7 , 0 @ invalidate I & D TLBs
mov p c , l r
/ *
* cpu_ a r m 9 2 5 _ s e t _ p t e ( p t e p , p t e )
*
* Set a P T E a n d f l u s h i t o u t
* /
.align 5
ENTRY( c p u _ a r m 9 2 5 _ s e t _ p t e )
str r1 , [ r0 ] , #- 2048 @ linux version
eor r1 , r1 , #L _ P T E _ P R E S E N T | L _ P T E _ Y O U N G | L _ P T E _ W R I T E | L _ P T E _ D I R T Y
bic r2 , r1 , #P T E _ S M A L L _ A P _ M A S K
bic r2 , r2 , #P T E _ T Y P E _ M A S K
orr r2 , r2 , #P T E _ T Y P E _ S M A L L
tst r1 , #L _ P T E _ U S E R @ U s e r ?
orrne r2 , r2 , #P T E _ S M A L L _ A P _ U R O _ S R W
tst r1 , #L _ P T E _ W R I T E | L _ P T E _ D I R T Y @ W r i t e a n d D i r t y ?
orreq r2 , r2 , #P T E _ S M A L L _ A P _ U N O _ S R W
tst r1 , #L _ P T E _ P R E S E N T | L _ P T E _ Y O U N G @ P r e s e n t a n d Y o u n g ?
movne r2 , #0
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
eor r3 , r2 , #0x0a @ C & small page?
tst r3 , #0x0b
biceq r2 , r2 , #4
# endif
str r2 , [ r0 ] @ hardware version
mov r0 , r0
# ifndef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
# endif
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
mov p c , l r
_ _ INIT
.type _ _ arm9 2 5 _ s e t u p , #f u n c t i o n
__arm925_setup :
mov r0 , #0
# if d e f i n e d ( C O N F I G _ C P U _ I C A C H E _ S T R E A M I N G _ D I S A B L E )
orr r0 ,r0 ,#1 < < 7
# endif
/* Transparent on, D-cache clean & flush mode. See NOTE2 above */
orr r0 ,r0 ,#1 < < 1 @ transparent mode on
mcr p15 , 0 , r0 , c15 , c1 , 0 @ write TI config register
mov r0 , #0
mcr p15 , 0 , r0 , c7 , c7 @ invalidate I,D caches on v4
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain write buffer on v4
mcr p15 , 0 , r0 , c8 , c7 @ invalidate I,D TLBs on v4
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
mov r0 , #4 @ disable write-back on caches explicitly
mcr p15 , 7 , r0 , c15 , c0 , 0
# endif
mrc p15 , 0 , r0 , c1 , c0 @ get control register v4
ldr r5 , a r m 9 2 5 _ c r1 _ c l e a r
bic r0 , r0 , r5
ldr r5 , a r m 9 2 5 _ c r1 _ s e t
orr r0 , r0 , r5
# ifdef C O N F I G _ C P U _ C A C H E _ R O U N D _ R O B I N
orr r0 , r0 , #0x4000 @ .1.. .... .... ....
# endif
mov p c , l r
.size _ _ arm9 2 5 _ s e t u p , . - _ _ a r m 9 2 5 _ s e t u p
/ *
* R
* .RVI ZFRS BLDP W C A M
* .011 0001 . .11 1101
*
* /
.type arm9 2 5 _ c r1 _ c l e a r , #o b j e c t
.type arm9 2 5 _ c r1 _ s e t , #o b j e c t
arm925_cr1_clear :
.word 0x7f3f
arm925_cr1_set :
.word 0x313d
_ _ INITDATA
/ *
* Purpose : F u n c t i o n p o i n t e r s u s e d t o a c c e s s a b o v e f u n c t i o n s - a l l c a l l s
* come t h r o u g h t h e s e
* /
.type arm9 2 5 _ p r o c e s s o r _ f u n c t i o n s , #o b j e c t
arm925_processor_functions :
.word v4t_early_abort
.word cpu_arm925_proc_init
.word cpu_arm925_proc_fin
.word cpu_arm925_reset
.word cpu_arm925_do_idle
.word cpu_arm925_dcache_clean_area
.word cpu_arm925_switch_mm
.word cpu_arm925_set_pte
.size arm9 2 5 _ p r o c e s s o r _ f u n c t i o n s , . - a r m 9 2 5 _ p r o c e s s o r _ f u n c t i o n s
.section " .rodata "
.type cpu_ a r c h _ n a m e , #o b j e c t
cpu_arch_name :
.asciz " armv4 t "
.size cpu_ a r c h _ n a m e , . - c p u _ a r c h _ n a m e
.type cpu_ e l f _ n a m e , #o b j e c t
cpu_elf_name :
.asciz " v4 "
.size cpu_ e l f _ n a m e , . - c p u _ e l f _ n a m e
.type cpu_ a r m 9 2 5 _ n a m e , #o b j e c t
cpu_arm925_name :
.ascii " ARM9 2 5 T "
# ifndef C O N F I G _ C P U _ I C A C H E _ D I S A B L E
.ascii " i"
# endif
# ifndef C O N F I G _ C P U _ D C A C H E _ D I S A B L E
.ascii " d"
# ifdef C O N F I G _ C P U _ D C A C H E _ W R I T E T H R O U G H
.ascii " ( wt) "
# else
.ascii " ( wb) "
# endif
# ifdef C O N F I G _ C P U _ C A C H E _ R O U N D _ R O B I N
.ascii " RR"
# endif
# endif
.ascii " \ 0 "
.size cpu_ a r m 9 2 5 _ n a m e , . - c p u _ a r m 9 2 5 _ n a m e
.align
2005-09-20 19:35:03 +04:00
.section " .proc .info .init " , # alloc, #e x e c i n s t r
2005-04-17 02:20:36 +04:00
.type _ _ arm9 2 5 _ p r o c _ i n f o ,#o b j e c t
__arm925_proc_info :
.long 0x54029250
.long 0xfffffff0
.long PMD_TYPE_SECT | \
PMD_ B I T 4 | \
PMD_ S E C T _ A P _ W R I T E | \
PMD_ S E C T _ A P _ R E A D
b _ _ a r m 9 2 5 _ s e t u p
.long cpu_arch_name
.long cpu_elf_name
.long HWCAP_SWP | HWCAP_ H A L F | H W C A P _ T H U M B
.long cpu_arm925_name
.long arm925_processor_functions
.long v4wbi_tlb_fns
.long v4wb_user_fns
.long arm925_cache_fns
.size _ _ arm9 2 5 _ p r o c _ i n f o , . - _ _ a r m 9 2 5 _ p r o c _ i n f o
.type _ _ arm9 1 5 _ p r o c _ i n f o ,#o b j e c t
__arm915_proc_info :
.long 0x54029150
.long 0xfffffff0
.long PMD_TYPE_SECT | \
PMD_ B I T 4 | \
PMD_ S E C T _ A P _ W R I T E | \
PMD_ S E C T _ A P _ R E A D
b _ _ a r m 9 2 5 _ s e t u p
.long cpu_arch_name
.long cpu_elf_name
.long HWCAP_SWP | HWCAP_ H A L F | H W C A P _ T H U M B
.long cpu_arm925_name
.long arm925_processor_functions
.long v4wbi_tlb_fns
.long v4wb_user_fns
.long arm925_cache_fns
.size _ _ arm9 2 5 _ p r o c _ i n f o , . - _ _ a r m 9 2 5 _ p r o c _ i n f o