@ -238,13 +238,13 @@ relocate_code:
mov r4 , r0 / * s a v e a d d r _ s p * /
mov r4 , r0 / * s a v e a d d r _ s p * /
mov r5 , r1 / * s a v e a d d r o f g d * /
mov r5 , r1 / * s a v e a d d r o f g d * /
mov r6 , r2 / * s a v e a d d r o f d e s t i n a t i o n * /
mov r6 , r2 / * s a v e a d d r o f d e s t i n a t i o n * /
mov r7 , r2 / * s a v e a d d r o f d e s t i n a t i o n * /
/* Set up the stack */
/* Set up the stack */
stack_setup :
stack_setup :
mov s p , r4
mov s p , r4
adr r0 , _ s t a r t
adr r0 , _ s t a r t
mov r1 , r6 / * r1 < - s c r a t c h f o r c o p y _ l o o p * /
ldr r2 , _ T E X T _ B A S E
ldr r2 , _ T E X T _ B A S E
ldr r3 , _ b s s _ s t a r t _ o f s
ldr r3 , _ b s s _ s t a r t _ o f s
add r2 , r0 , r3 / * r2 < - s o u r c e e n d a d d r e s s * /
add r2 , r0 , r3 / * r2 < - s o u r c e e n d a d d r e s s * /
@ -254,7 +254,7 @@ stack_setup:
stmfd s p ! , { r0 - r12 }
stmfd s p ! , { r0 - r12 }
copy_loop :
copy_loop :
ldmia r0 ! , { r3 - r5 , r7 - r11 } / * c o p y f r o m s o u r c e a d d r e s s [ r0 ] * /
ldmia r0 ! , { r3 - r5 , r7 - r11 } / * c o p y f r o m s o u r c e a d d r e s s [ r0 ] * /
stmia r6 ! , { r3 - r5 , r7 - r11 } / * c o p y t o t a r g e t a d d r e s s [ r1 ] * /
stmia r1 ! , { r3 - r5 , r7 - r11 } / * c o p y t o t a r g e t a d d r e s s [ r1 ] * /
cmp r0 , r2 / * u n t i l s o u r c e e n d a d d r e s s [ r2 ] * /
cmp r0 , r2 / * u n t i l s o u r c e e n d a d d r e s s [ r2 ] * /
blo c o p y _ l o o p
blo c o p y _ l o o p
ldmfd s p ! , { r0 - r12 }
ldmfd s p ! , { r0 - r12 }
@ -264,7 +264,7 @@ copy_loop:
* fix . r e l . d y n r e l o c a t i o n s
* fix . r e l . d y n r e l o c a t i o n s
* /
* /
ldr r0 , _ T E X T _ B A S E / * r0 < - T e x t b a s e * /
ldr r0 , _ T E X T _ B A S E / * r0 < - T e x t b a s e * /
sub r9 , r7 , r0 / * r9 < - r e l o c a t i o n o f f s e t * /
sub r9 , r6 , r0 / * r9 < - r e l o c a t i o n o f f s e t * /
ldr r10 , _ d y n s y m _ s t a r t _ o f s / * r10 < - s y m t a b l e o f s * /
ldr r10 , _ d y n s y m _ s t a r t _ o f s / * r10 < - s y m t a b l e o f s * /
add r10 , r10 , r0 / * r10 < - s y m t a b l e i n F L A S H * /
add r10 , r10 , r0 / * r10 < - s y m t a b l e i n F L A S H * /
ldr r2 , _ r e l _ d y n _ s t a r t _ o f s / * r2 < - r e l d y n s t a r t o f s * /
ldr r2 , _ r e l _ d y n _ s t a r t _ o f s / * r2 < - r e l d y n s t a r t o f s * /
@ -305,7 +305,7 @@ clear_bss:
ldr r0 , _ b s s _ s t a r t _ o f s
ldr r0 , _ b s s _ s t a r t _ o f s
ldr r1 , _ b s s _ e n d _ o f s
ldr r1 , _ b s s _ e n d _ o f s
ldr r3 , _ T E X T _ B A S E / * T e x t b a s e * /
ldr r3 , _ T E X T _ B A S E / * T e x t b a s e * /
mov r4 , r7 / * r e l o c a d d r * /
mov r4 , r6 / * r e l o c a d d r * /
add r0 , r0 , r4
add r0 , r0 , r4
add r1 , r1 , r4
add r1 , r1 , r4
mov r2 , #0x00000000 / * c l e a r * /
mov r2 , #0x00000000 / * c l e a r * /
@ -333,7 +333,7 @@ _start_oneboot_ofs
add l r , l r , r9
add l r , l r , r9
/* setup parameters for board_init_r */
/* setup parameters for board_init_r */
mov r0 , r5 / * g d _ t * /
mov r0 , r5 / * g d _ t * /
mov r1 , r7 / * d e s t _ a d d r * /
mov r1 , r6 / * d e s t _ a d d r * /
/* jump to it ... */
/* jump to it ... */
mov p c , l r
mov p c , l r