2019-05-27 09:55:05 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-17 02:20:36 +04:00
/ *
* linux/ a r c h / a r m / m m / p r o c - a r m 9 2 0 . S : M M U f u n c t i o n s f o r A R M 9 2 0
*
* 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 .
2006-06-28 17:10:01 +04:00
* hacked f o r n o n - p a g e d - M M b y H y o k S . C h o i , 2 0 0 3 .
2005-04-17 02:20:36 +04:00
*
* 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 0 .
*
* CONFIG_ C P U _ A R M 9 2 0 _ C P U _ I D L E - > n o h l t
* /
# include < l i n u x / l i n k a g e . 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 >
2008-09-07 22:15:31 +04:00
# include < a s m / h w c a p . 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 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 3 2
/ *
* 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 8
/ *
* 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 6 4
/ *
* 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
2011-03-31 05:57:33 +04:00
* cache l i n e m a i n t e n a n c e i n s t r u c t i o n s .
2005-04-17 02:20:36 +04:00
* /
# define C A C H E _ D L I M I T 6 5 5 3 6
.text
/ *
* cpu_ a r m 9 2 0 _ p r o c _ i n i t ( )
* /
ENTRY( c p u _ a r m 9 2 0 _ p r o c _ i n i t )
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* cpu_ a r m 9 2 0 _ p r o c _ f i n ( )
* /
ENTRY( c p u _ a r m 9 2 0 _ p r o c _ f i n )
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
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* cpu_ a r m 9 2 0 _ 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
2011-11-15 17:25:04 +04:00
.pushsection .idmap .text , " ax"
2005-04-17 02:20:36 +04:00
ENTRY( c p u _ a r m 9 2 0 _ r e s e t )
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
2006-06-28 17:10:01 +04:00
# ifdef C O N F I G _ M M U
2005-04-17 02:20:36 +04:00
mcr p15 , 0 , i p , c8 , c7 , 0 @ invalidate I & D TLBs
2006-06-28 17:10:01 +04:00
# endif
2005-04-17 02:20:36 +04:00
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
2014-06-30 19:29:12 +04:00
ret r0
2011-11-15 17:25:04 +04:00
ENDPROC( c p u _ a r m 9 2 0 _ r e s e t )
.popsection
2005-04-17 02:20:36 +04:00
/ *
* cpu_ a r m 9 2 0 _ d o _ i d l e ( )
* /
.align 5
ENTRY( c p u _ a r m 9 2 0 _ d o _ i d l e )
mcr p15 , 0 , r0 , c7 , c0 , 4 @ Wait for interrupt
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
# 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
2010-10-28 14:27:40 +04:00
/ *
* flush_ i c a c h e _ a l l ( )
*
* Unconditionally c l e a n a n d i n v a l i d a t e t h e e n t i r e i c a c h e .
* /
ENTRY( a r m 9 2 0 _ f l u s h _ i c a c h e _ a l l )
mov r0 , #0
mcr p15 , 0 , r0 , c7 , c5 , 0 @ invalidate I cache
2014-06-30 19:29:12 +04:00
ret l r
2010-10-28 14:27:40 +04:00
ENDPROC( a r m 9 2 0 _ f l u s h _ i c a c h e _ a l l )
2005-04-17 02:20:36 +04:00
/ *
* flush_ u s e r _ c a c h e _ a l l ( )
*
* Invalidate 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 a d d r e s s
* space.
* /
ENTRY( a r m 9 2 0 _ 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 0 _ 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 :
mov r1 , #( C A C H E _ D S E G M E N T S - 1 ) < < 5 @ 8 segments
1 : orr r3 , r1 , #( C A C H E _ D E N T R I E S - 1 ) < < 2 6 @ 64 entries
2 : mcr p15 , 0 , r3 , c7 , c14 , 2 @ clean+invalidate D index
subs r3 , r3 , #1 < < 2 6
bcs 2 b @ entries 63 to 0
subs r1 , r1 , #1 < < 5
bcs 1 b @ segments 7 to 0
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
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* 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 )
*
* Invalidate 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 s p e c i f i e d
* address s p a c 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 f o r a d d r e s s s p a c e
* /
ENTRY( a r m 9 2 0 _ 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
bhs _ _ f l u s h _ w h o l e _ c a c h e
1 : mcr p15 , 0 , r0 , c7 , c14 , 1 @ clean+invalidate D entry
tst r2 , #V M _ E X E C
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
cmp r0 , r1
blo 1 b
tst r2 , #V M _ E X E C
mcrne p15 , 0 , i p , c7 , c10 , 4 @ drain WB
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* 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 0 _ 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 0 _ 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
2012-04-27 16:08:53 +04:00
mov r0 , #0
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
2009-11-26 15:56:21 +03:00
* flush_ k e r n _ d c a c h e _ a r e a ( v o i d * a d d r , s i z e _ t s i z e )
2005-04-17 02:20:36 +04:00
*
* 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
*
2009-11-26 15:56:21 +03:00
* - addr - k e r n e l a d d r e s s
* - size - r e g i o n s i z e
2005-04-17 02:20:36 +04:00
* /
2009-11-26 15:56:21 +03:00
ENTRY( a r m 9 2 0 _ f l u s h _ k e r n _ d c a c h e _ a r e a )
add r1 , r0 , r1
2005-04-17 02:20:36 +04:00
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
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* 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 )
* /
2009-11-26 19:24:19 +03:00
arm920_dma_inv_range :
2005-04-17 02:20:36 +04:00
tst r0 , #C A C H E _ D L I N E S I Z E - 1
bic r0 , 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
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
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* 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 )
* /
2009-11-26 19:24:19 +03:00
arm920_dma_clean_range :
2005-04-17 02:20:36 +04:00
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
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
* 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 0 _ 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 : 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
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
2009-11-26 19:19:58 +03:00
/ *
* dma_ m a p _ a r e a ( s t a r t , s i z e , d i r )
* - start - k e r n e l v i r t u a l s t a r t a d d r e s s
* - size - s i z e o f r e g i o n
* - dir - D M A d i r e c t i o n
* /
ENTRY( a r m 9 2 0 _ d m a _ m a p _ a r e a )
add r1 , r1 , r0
cmp r2 , #D M A _ T O _ D E V I C E
beq a r m 9 2 0 _ d m a _ c l e a n _ r a n g e
bcs a r m 9 2 0 _ d m a _ i n v _ r a n g e
b a r m 9 2 0 _ d m a _ f l u s h _ r a n g e
ENDPROC( a r m 9 2 0 _ d m a _ m a p _ a r e a )
/ *
* dma_ u n m a p _ a r e a ( s t a r t , s i z e , d i r )
* - start - k e r n e l v i r t u a l s t a r t a d d r e s s
* - size - s i z e o f r e g i o n
* - dir - D M A d i r e c t i o n
* /
ENTRY( a r m 9 2 0 _ d m a _ u n m a p _ a r e a )
2014-06-30 19:29:12 +04:00
ret l r
2009-11-26 19:19:58 +03:00
ENDPROC( a r m 9 2 0 _ d m a _ u n m a p _ a r e a )
2012-09-06 17:05:13 +04:00
.globl arm920_flush_kern_cache_louis
.equ arm9 2 0 _ f l u s h _ k e r n _ c a c h e _ l o u i s , a r m 9 2 0 _ f l u s h _ k e r n _ c a c h e _ a l l
2011-06-23 20:19:48 +04:00
@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
define_ c a c h e _ f u n c t i o n s a r m 9 2 0
2005-04-17 02:20:36 +04:00
# endif
ENTRY( c p u _ a r m 9 2 0 _ d c a c h e _ c l e a n _ a r e a )
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
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/* =============================== PageTable ============================== */
/ *
* cpu_ a r m 9 2 0 _ 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 0 _ s w i t c h _ m m )
2006-06-28 17:10:01 +04:00
# ifdef C O N F I G _ M M U
2005-04-17 02:20:36 +04:00
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
@ && 'Clean & Invalidate whole DCache'
@ && Re-written to use Index Ops.
@ && Uses registers r1, r3 and ip
mov r1 , #( C A C H E _ D S E G M E N T S - 1 ) < < 5 @ 8 segments
1 : orr r3 , r1 , #( C A C H E _ D E N T R I E S - 1 ) < < 2 6 @ 64 entries
2 : mcr p15 , 0 , r3 , c7 , c14 , 2 @ clean & invalidate D index
subs r3 , r3 , #1 < < 2 6
bcs 2 b @ entries 63 to 0
subs r1 , r1 , #1 < < 5
bcs 1 b @ segments 7 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
2006-06-28 17:10:01 +04:00
# endif
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
/ *
2006-12-13 17:34:43 +03:00
* cpu_ a r m 9 2 0 _ s e t _ p t e ( p t e p , p t e , e x t )
2005-04-17 02:20:36 +04:00
*
* Set a P T E a n d f l u s h i t o u t
* /
.align 5
2006-12-13 17:34:43 +03:00
ENTRY( c p u _ a r m 9 2 0 _ s e t _ p t e _ e x t )
2006-06-28 17:10:01 +04:00
# ifdef C O N F I G _ M M U
2008-09-06 20:19:08 +04:00
armv3 _ s e t _ p t e _ e x t
2005-04-17 02:20:36 +04:00
mov r0 , r0
mcr p15 , 0 , r0 , c7 , c10 , 1 @ clean D entry
mcr p15 , 0 , r0 , c7 , c10 , 4 @ drain WB
2008-09-06 20:19:08 +04:00
# endif
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
2011-02-06 18:48:39 +03:00
/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
.globl cpu_arm920_suspend_size
2011-08-28 01:39:09 +04:00
.equ cpu_ a r m 9 2 0 _ s u s p e n d _ s i z e , 4 * 3
2013-04-08 14:44:57 +04:00
# ifdef C O N F I G _ A R M _ C P U _ S U S P E N D
2011-02-06 18:48:39 +03:00
ENTRY( c p u _ a r m 9 2 0 _ d o _ s u s p e n d )
2011-08-28 01:39:09 +04:00
stmfd s p ! , { r4 - r6 , l r }
2011-02-06 18:48:39 +03:00
mrc p15 , 0 , r4 , c13 , c0 , 0 @ PID
mrc p15 , 0 , r5 , c3 , c0 , 0 @ Domain ID
2011-08-28 01:39:09 +04:00
mrc p15 , 0 , r6 , c1 , c0 , 0 @ Control register
stmia r0 , { r4 - r6 }
ldmfd s p ! , { r4 - r6 , p c }
2011-02-06 18:48:39 +03:00
ENDPROC( c p u _ a r m 9 2 0 _ d o _ s u s p e n d )
ENTRY( c p u _ a r m 9 2 0 _ d o _ r e s u m e )
mov i p , #0
mcr p15 , 0 , i p , c8 , c7 , 0 @ invalidate I+D TLBs
mcr p15 , 0 , i p , c7 , c7 , 0 @ invalidate I+D caches
2011-08-28 01:39:09 +04:00
ldmia r0 , { r4 - r6 }
2011-02-06 18:48:39 +03:00
mcr p15 , 0 , r4 , c13 , c0 , 0 @ PID
mcr p15 , 0 , r5 , c3 , c0 , 0 @ Domain ID
2011-08-28 01:39:09 +04:00
mcr p15 , 0 , r1 , c2 , c0 , 0 @ TTB address
mov r0 , r6 @ control register
2011-02-06 18:48:39 +03:00
b c p u _ r e s u m e _ m m u
ENDPROC( c p u _ a r m 9 2 0 _ d o _ r e s u m e )
# endif
2005-04-17 02:20:36 +04:00
.type _ _ arm9 2 0 _ s e t u p , #f u n c t i o n
__arm920_setup :
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
2006-06-28 17:10:01 +04:00
# ifdef C O N F I G _ M M U
2005-04-17 02:20:36 +04:00
mcr p15 , 0 , r0 , c8 , c7 @ invalidate I,D TLBs on v4
2006-06-28 17:10:01 +04:00
# endif
2006-06-29 18:09:57 +04:00
adr r5 , a r m 9 2 0 _ c r v a l
ldmia r5 , { r5 , r6 }
2005-04-17 02:20:36 +04:00
mrc p15 , 0 , r0 , c1 , c0 @ get control register v4
bic r0 , r0 , r5
2006-06-29 18:09:57 +04:00
orr r0 , r0 , r6
2014-06-30 19:29:12 +04:00
ret l r
2005-04-17 02:20:36 +04:00
.size _ _ arm9 2 0 _ s e t u p , . - _ _ a r m 9 2 0 _ s e t u p
/ *
* R
* .RVI ZFRS BLDP W C A M
* . .11 0001 . .11 0101
*
* /
2006-06-29 18:09:57 +04:00
.type arm9 2 0 _ c r v a l , #o b j e c t
arm920_crval :
crval c l e a r =0x00003f3f , m m u s e t =0x00003135 , u c s e t =0x00001130
2005-04-17 02:20:36 +04:00
_ _ INITDATA
2011-06-23 20:19:48 +04:00
@ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
define_ p r o c e s s o r _ f u n c t i o n s a r m 9 2 0 , d a b o r t =v4t_early_abort , p a b o r t =legacy_pabort , s u s p e n d =1
2005-04-17 02:20:36 +04:00
.section " .rodata "
2011-06-23 20:19:48 +04:00
string c p u _ a r c h _ n a m e , " a r m v4 t "
string c p u _ e l f _ n a m e , " v4 "
string c p u _ a r m 9 2 0 _ n a m e , " A R M 9 2 0 T "
2005-04-17 02:20:36 +04:00
.align
2015-03-18 09:29:32 +03:00
.section " .proc .info .init " , # alloc
2005-04-17 02:20:36 +04:00
.type _ _ arm9 2 0 _ p r o c _ i n f o ,#o b j e c t
__arm920_proc_info :
.long 0x41009200
.long 0xff00fff0
.long PMD_TYPE_SECT | \
PMD_ S E C T _ B U F F E R A B L E | \
PMD_ S E C T _ C A C H E A B L E | \
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
2006-06-29 21:24:21 +04:00
.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
2015-03-18 09:29:32 +03:00
initfn _ _ a r m 9 2 0 _ s e t u p , _ _ a r m 9 2 0 _ p r o c _ i n f o
2005-04-17 02:20:36 +04:00
.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_arm920_name
.long arm920_processor_functions
.long v4wbi_tlb_fns
.long v4wb_user_fns
# 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
.long arm920_cache_fns
# else
.long v4wt_cache_fns
# endif
.size _ _ arm9 2 0 _ p r o c _ i n f o , . - _ _ a r m 9 2 0 _ p r o c _ i n f o