diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-08-01 08:12:48 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-08-01 08:12:48 +0000 |
| commit | 2d461156bd6173b1062642f1c196df42bfdb6ff8 (patch) | |
| tree | b00059281dc046db817d701ce1999d1ce793cef3 | |
| parent | 909df0a1391929dd551f96a8f7c97e1b106a7f9f (diff) | |
| download | rockbox-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.S | 27 |
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: |