@ -123,34 +123,6 @@ _bss_start_ofs:
_bss_end_ofs :
.word _end - _ start
.globl _datarel_start_ofs
_datarel_start_ofs :
.word __datarel_start - _ start
.globl _datarelrolocal_start_ofs
_datarelrolocal_start_ofs :
.word __datarelrolocal_start - _ start
.globl _datarellocal_start_ofs
_datarellocal_start_ofs :
.word __datarellocal_start - _ start
.globl _datarelro_start_ofs
_datarelro_start_ofs :
.word __datarelro_start - _ start
.globl _rel_dyn_start_ofs
_rel_dyn_start_ofs :
.word __rel_dyn_start - _ start
.globl _rel_dyn_end_ofs
_rel_dyn_end_ofs :
.word __rel_dyn_end - _ start
.globl _dynsym_start_ofs
_dynsym_start_ofs :
.word __dynsym_start - _ start
/* IRQ stack memory (calculated at run-time) + 8 bytes */
.globl IRQ_STACK_START_IN
IRQ_STACK_START_IN :
@ -300,13 +272,13 @@ copy_loop:
ldr r3 , _ r e l _ d y n _ e n d _ o f s / * r3 < - r e l d y n e n d o f s * /
add r3 , r3 , r0 / * r3 < - r e l d y n e n d i n F L A S H * /
fixloop :
ldr r0 , [ r2 ] / * r0 < - l o c a t i o n t o f i x u p , I N F L A S H ! * /
add r0 , r0 , r9 / * r0 < - l o c a t i o n t o f i x u p i n R A M * /
ldr r0 , [ r2 ] / * r0 < - l o c a t i o n t o f i x u p , I N F L A S H ! * /
add r0 , r0 , r9 / * r0 < - l o c a t i o n t o f i x u p i n R A M * /
ldr r1 , [ r2 , #4 ]
and r8 , r1 , #0xff
cmp r8 , #23 / * r e l a t i v e f i x u p ? * /
cmp r8 , #23 / * r e l a t i v e f i x u p ? * /
beq f i x r e l
cmp r8 , #2 / * a b s o l u t e f i x u p ? * /
cmp r8 , #2 / * a b s o l u t e f i x u p ? * /
beq f i x a b s
/* ignore unknown type of fixup */
b f i x n e x t
@ -315,7 +287,7 @@ fixabs:
mov r1 , r1 , L S R #4 / * r1 < - s y m b o l i n d e x i n . d y n s y m * /
add r1 , r10 , r1 / * r1 < - a d d r e s s o f s y m b o l i n t a b l e * /
ldr r1 , [ r1 , #4 ] / * r1 < - s y m b o l v a l u e * /
add r1 , r1 , r 9 / * r1 < - r e l o c a t e d s y m a d d r * /
add r1 , r9 / * r1 < - r e l o c a t e d s y m a d d r * /
b f i x n e x t
fixrel :
/* relative fix: increase location by offset */
@ -323,7 +295,7 @@ fixrel:
add r1 , r1 , r9
fixnext :
str r1 , [ r0 ]
add r2 , r2 , #8 / * e a c h r e l . d y n e n t r y i s 8 b y t e s * /
add r2 , r2 , #8 / * e a c h r e l . d y n e n t r y i s 8 b y t e s * /
cmp r2 , r3
blo f i x l o o p
# endif
@ -408,6 +380,13 @@ _board_init_r_ofs:
.word board_init_r - _ start
# endif
_rel_dyn_start_ofs :
.word __rel_dyn_start - _ start
_rel_dyn_end_ofs :
.word __rel_dyn_end - _ start
_dynsym_start_ofs :
.word __dynsym_start - _ start
# ifdef C O N F I G _ E N A B L E _ M M U
_mmu_table_base :
.word mmu_table