summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-08-01 08:12:48 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-08-01 08:12:48 +0000
commit2d461156bd6173b1062642f1c196df42bfdb6ff8 (patch)
treeb00059281dc046db817d701ce1999d1ce793cef3
parent909df0a1391929dd551f96a8f7c97e1b106a7f9f (diff)
downloadrockbox-2d461156bd6173b1062642f1c196df42bfdb6ff8.zip
rockbox-2d461156bd6173b1062642f1c196df42bfdb6ff8.tar.gz
rockbox-2d461156bd6173b1062642f1c196df42bfdb6ff8.tar.bz2
rockbox-2d461156bd6173b1062642f1c196df42bfdb6ff8.tar.xz
Copies code to internal ram at startup
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1498 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/crt0.S27
1 files changed, 23 insertions, 4 deletions
diff --git a/firmware/crt0.S b/firmware/crt0.S
index 78b26b7..99aab83 100644
--- a/firmware/crt0.S
+++ b/firmware/crt0.S
@@ -95,8 +95,21 @@ start:
start_l:
mov.l r2,@r0
add #4,r0
- cmp/ge r0,r1
- bt start_l
+ cmp/ge r1,r0
+ bf start_l
+ nop
+
+ /* copy the .iram section */
+ mov.l iramcopy_k,r0
+ mov.l iram_k,r1
+ mov.l iramend_k,r2
+copy_l:
+ mov.l @r0,r3
+ mov.l r3,@r1
+ add #4,r0
+ add #4,r1
+ cmp/ge r2,r1
+ bf copy_l
nop
/* Munge the main thread stack */
@@ -106,8 +119,8 @@ start_l:
munge_loop:
mov.l r0,@r1
add #4,r1
- cmp/ge r1,r2
- bt munge_loop
+ cmp/ge r2,r1
+ bf munge_loop
nop
mov #0,r0
@@ -131,6 +144,12 @@ edata_k:
.long _edata
end_k:
.long _end
+iramcopy_k:
+ .long _iramcopy
+iram_k:
+ .long _iramstart
+iramend_k:
+ .long _iramend
main_k:
.long _main
vbr_k: