And yes, I checked it and _sdata could be odd.
That's the current code:
Code: Select all
* copy initialized variables from ROM to Work RAM
lea _stext,%a0
lea 0xFF0000,%a1
move.l #_sdata,%d0
lsr.l #1,%d0
beq NoCopy
subq.w #1,%d0
CopyVar:
move.w (%a0)+,(%a1)+
dbra %d0,CopyVar
Code: Select all
* Copy initialized C variables from ROM to Work RAM
lea _stext, %a0
lea 0xFF0000, %a1
move.l #_sdata, %d1
move.l %d1, %d0
lsr.l #2, %d0
jeq 2f
subq.w #1, %d0
4:
move.l (%a0)+, (%a1)+
dbra %d0, 4b
2:
btst #1, %d1
jeq 1f
move.w (%a0)+, (%a1)+
1:
btst #0, %d1
jeq 0f
move.b (%a0), (%a1)
0:
edit: even=>odd