diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2009-02-20 02:33:40 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2009-02-20 02:33:40 +0000 |
commit | ec67912b638e0fae3cae7b4182d23db6d36c5135 (patch) | |
tree | 8101f45d02947a828d20174a45d1a6d19fafa3b2 /firmware/target/sh/crt0.S | |
parent | 07ae1e4fb9a1fd9d6ce9c48c5300b53e87303937 (diff) | |
download | rockbox-ec67912b638e0fae3cae7b4182d23db6d36c5135.tar.gz rockbox-ec67912b638e0fae3cae7b4182d23db6d36c5135.zip |
Reclaim .iram areas in DRAM by overlapping their load addresses with the uninitialized data sections. I did what I could test out-- not any flash image linker scripts or other target processors. Move any .iram copies in crt0.S's to be the first operation even if not _strictly_ necessary to be emphatic (aka. 'beware').
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20061 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/sh/crt0.S')
-rw-r--r-- | firmware/target/sh/crt0.S | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/firmware/target/sh/crt0.S b/firmware/target/sh/crt0.S index a87bee899f..0e8bbfdd68 100644 --- a/firmware/target/sh/crt0.S +++ b/firmware/target/sh/crt0.S | |||
@@ -98,16 +98,8 @@ start: | |||
98 | mov #0,r0 | 98 | mov #0,r0 |
99 | ldc r0,gbr | 99 | ldc r0,gbr |
100 | 100 | ||
101 | /* zero out .ibss */ | 101 | /* .iram copy is done first since it is reclaimed for other |
102 | mov.l .iedata_k,r0 | 102 | * uninitialized sections */ |
103 | mov.l .iend_k,r1 | ||
104 | bra .iedatastart | ||
105 | mov #0,r2 | ||
106 | .iedataloop: /* backwards is faster and shorter */ | ||
107 | mov.l r2,@-r1 | ||
108 | .iedatastart: | ||
109 | cmp/hi r0,r1 | ||
110 | bt .iedataloop | ||
111 | 103 | ||
112 | /* copy the .iram section */ | 104 | /* copy the .iram section */ |
113 | mov.l .iramcopy_k,r0 | 105 | mov.l .iramcopy_k,r0 |
@@ -127,6 +119,17 @@ start: | |||
127 | bt .iramloop | 119 | bt .iramloop |
128 | .noiramcopy: | 120 | .noiramcopy: |
129 | 121 | ||
122 | /* zero out .ibss */ | ||
123 | mov.l .iedata_k,r0 | ||
124 | mov.l .iend_k,r1 | ||
125 | bra .iedatastart | ||
126 | mov #0,r2 | ||
127 | .iedataloop: /* backwards is faster and shorter */ | ||
128 | mov.l r2,@-r1 | ||
129 | .iedatastart: | ||
130 | cmp/hi r0,r1 | ||
131 | bt .iedataloop | ||
132 | |||
130 | /* zero out bss */ | 133 | /* zero out bss */ |
131 | mov.l .edata_k,r0 | 134 | mov.l .edata_k,r0 |
132 | mov.l .end_k,r1 | 135 | mov.l .end_k,r1 |