2014-04-05 11:39:57 +01:00
/ *
* L2 C - 3 1 0 e a r l y r e s u m e c o d e . T h i s c a n b e u s e d b y p l a t f o r m s t o r e s t o r e
* the s e t t i n g s o f t h e i r L 2 c a c h e c o n t r o l l e r b e f o r e r e s t o r i n g t h e
* processor s t a t e .
*
* This c o d e c a n o n l y b e u s e d t o i f y o u a r e r u n n i n g i n t h e s e c u r e w o r l d .
* /
# include < l i n u x / l i n k a g e . h >
2014-06-30 16:29:12 +01:00
# include < a s m / a s s e m b l e r . h >
2014-04-05 11:39:57 +01:00
# include < a s m / h a r d w a r e / c a c h e - l 2 x0 . h >
.text
ENTRY( l 2 c31 0 _ e a r l y _ r e s u m e )
adr r0 , 1 f
ldr r2 , [ r0 ]
add r0 , r2 , r0
ldmia r0 , { r1 , r2 , r3 , r4 , r5 , r6 , r7 , r8 }
@ r1 = phys address of L2C-310 controller
@ r2 = aux_ctrl
@ r3 = tag_latency
@ r4 = data_latency
@ r5 = filter_start
@ r6 = filter_end
@ r7 = prefetch_ctrl
@ r8 = pwr_ctrl
@ Check that the address has been initialised
teq r1 , #0
2014-06-30 16:29:12 +01:00
reteq l r
2014-04-05 11:39:57 +01:00
@ The prefetch and power control registers are revision dependent
@ and can be written whether or not the L2 cache is enabled
ldr r0 , [ r1 , #L 2 X 0 _ C A C H E _ I D ]
and r0 , r0 , #L 2 X 0 _ C A C H E _ I D _ R T L _ M A S K
cmp r0 , #L 310 _ C A C H E _ I D _ R T L _ R 2 P 0
strcs r7 , [ r1 , #L 310 _ P R E F E T C H _ C T R L ]
cmp r0 , #L 310 _ C A C H E _ I D _ R T L _ R 3 P 0
strcs r8 , [ r1 , #L 310 _ P O W E R _ C T R L ]
@ Don't setup the L2 cache if it is already enabled
ldr r0 , [ r1 , #L 2 X 0 _ C T R L ]
tst r0 , #L 2 X 0 _ C T R L _ E N
2014-06-30 16:29:12 +01:00
retne l r
2014-04-05 11:39:57 +01:00
str r3 , [ r1 , #L 310 _ T A G _ L A T E N C Y _ C T R L ]
str r4 , [ r1 , #L 310 _ D A T A _ L A T E N C Y _ C T R L ]
str r6 , [ r1 , #L 310 _ A D D R _ F I L T E R _ E N D ]
str r5 , [ r1 , #L 310 _ A D D R _ F I L T E R _ S T A R T ]
str r2 , [ r1 , #L 2 X 0 _ A U X _ C T R L ]
mov r9 , #L 2 X 0 _ C T R L _ E N
str r9 , [ r1 , #L 2 X 0 _ C T R L ]
2014-06-30 16:29:12 +01:00
ret l r
2014-04-05 11:39:57 +01:00
ENDPROC( l 2 c31 0 _ e a r l y _ r e s u m e )
.align
1 : .long l 2 x0 _ s a v e d _ r e g s - .