summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Hohensohn <hohensoh@rockbox.org>2004-01-28 20:43:31 +0000
committerJörg Hohensohn <hohensoh@rockbox.org>2004-01-28 20:43:31 +0000
commit7789f9804ebf8e4b2a89b7e1eefff1577f737e13 (patch)
tree03eb897a0d692ff0c56a0781a7c18a6edd81c716
parentbf4460e4778d789e4c9ae9035cebe446ec8abb02 (diff)
downloadrockbox-7789f9804ebf8e4b2a89b7e1eefff1577f737e13.tar.gz
rockbox-7789f9804ebf8e4b2a89b7e1eefff1577f737e13.zip
preparation for running directly from flash ROM
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4283 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/app.lds4
-rw-r--r--firmware/crt0.S19
2 files changed, 23 insertions, 0 deletions
diff --git a/firmware/app.lds b/firmware/app.lds
index 83a09a81d0..bacc645044 100644
--- a/firmware/app.lds
+++ b/firmware/app.lds
@@ -117,6 +117,10 @@ SECTIONS
117 .data : 117 .data :
118 { 118 {
119 *(.data) 119 *(.data)
120 . = ALIGN(0x4);
121 _datacopy = .; /* dummy here, only for ROM based */
122 _datastart = .;
123 _dataend = .;
120 } > DRAM 124 } > DRAM
121 125
122 .rodata : 126 .rodata :
diff --git a/firmware/crt0.S b/firmware/crt0.S
index 99aab83867..088ea0aff4 100644
--- a/firmware/crt0.S
+++ b/firmware/crt0.S
@@ -112,6 +112,19 @@ copy_l:
112 bf copy_l 112 bf copy_l
113 nop 113 nop
114 114
115 /* copy the .data section, for rombased execution */
116 mov.l datacopy_k,r0
117 mov.l data_k,r1
118 mov.l dataend_k,r2
119copy_l2:
120 mov.l @r0,r3
121 mov.l r3,@r1
122 add #4,r0
123 add #4,r1
124 cmp/ge r2,r1
125 bf copy_l2
126 nop
127
115 /* Munge the main thread stack */ 128 /* Munge the main thread stack */
116 mov.l stack_k,r2 129 mov.l stack_k,r2
117 mov.l deadbeef_k,r0 130 mov.l deadbeef_k,r0
@@ -150,6 +163,12 @@ iram_k:
150 .long _iramstart 163 .long _iramstart
151iramend_k: 164iramend_k:
152 .long _iramend 165 .long _iramend
166datacopy_k:
167 .long _datacopy
168data_k:
169 .long _datastart
170dataend_k:
171 .long _dataend
153main_k: 172main_k:
154 .long _main 173 .long _main
155vbr_k: 174vbr_k: