summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2007-11-11 19:13:09 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2007-11-11 19:13:09 +0000
commit1b3dac90429a870f6ab84755dd78e525265b2bfe (patch)
tree53cc1ab755e54e2afab910a7a967f73096caa48f /firmware
parent6e36ac547c23c3890439a3b81772d7e3c1ce938d (diff)
downloadrockbox-1b3dac90429a870f6ab84755dd78e525265b2bfe.zip
rockbox-1b3dac90429a870f6ab84755dd78e525265b2bfe.tar.gz
rockbox-1b3dac90429a870f6ab84755dd78e525265b2bfe.tar.bz2
rockbox-1b3dac90429a870f6ab84755dd78e525265b2bfe.tar.xz
Setup the gigabeat so that iram is faked in a different spot since the normal iram location does not seem to be working. This lays the groundwork to get rolo running.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15581 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/app.lds32
-rw-r--r--firmware/boot.lds4
-rw-r--r--firmware/rolo.c2
-rw-r--r--firmware/target/arm/s3c2440/crt0.S2
4 files changed, 19 insertions, 21 deletions
diff --git a/firmware/app.lds b/firmware/app.lds
index e3f6ef2..7eeb0fc 100644
--- a/firmware/app.lds
+++ b/firmware/app.lds
@@ -32,16 +32,6 @@ INPUT(target/sh/crt0.o)
#define STUBOFFSET 0
#endif
-#if CONFIG_CPU==S3C2440
-#include "s3c2440.h"
-#define DRAMSIZE (MEMORYSIZE * 0x100000) - 0x100 - PLUGINSIZE - STUBOFFSET - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE
-#elif CONFIG_CPU==DM320
-#include "dm320.h"
-#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE
-#else
-#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE
-#endif
-
#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300)
#define DRAMORIG 0x31000000 + STUBOFFSET
#define IRAMORIG 0x10000000
@@ -62,9 +52,8 @@ INPUT(target/sh/crt0.o)
#define IRAMSIZE 0x7000
#elif CONFIG_CPU==S3C2440
#define DRAMORIG 0x00000100 + STUBOFFSET
-#define IRAMORIG DRAMORIG
-#define IRAM DRAM
#define IRAMSIZE 0x1000
+#define IRAMORIG (MEMORYSIZE * 0x100000) - IRAMSIZE - LCD_BUFFER_SIZE - TTB_SIZE
#elif CONFIG_CPU==DM320
#define DRAMORIG 0x00900000 + STUBOFFSET
#define IRAMORIG 0x00000000
@@ -79,6 +68,16 @@ INPUT(target/sh/crt0.o)
#define IRAMSIZE 0x1000
#endif
+#if CONFIG_CPU==S3C2440
+#include "s3c2440.h"
+#define DRAMSIZE (MEMORYSIZE * 0x100000) - 0x100 - PLUGINSIZE - STUBOFFSET - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE - IRAMSIZE
+#elif CONFIG_CPU==DM320
+#include "dm320.h"
+#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE - LCD_BUFFER_SIZE - TTB_SIZE
+#else
+#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - STUBOFFSET - CODECSIZE
+#endif
+
/* End of the audio buffer, where the codec buffer starts */
#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
@@ -88,9 +87,8 @@ INPUT(target/sh/crt0.o)
MEMORY
{
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
-#if CONFIG_CPU != S3C2440
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
-#endif
+
#if CONFIG_CPU==PNX0101
IRAM0 : ORIGIN = IRAM0ORIG, LENGTH = IRAM0SIZE
#endif
@@ -234,14 +232,14 @@ SECTIONS
_vectorscopy = LOADADDR(.vectors);
- .iram :
+ .iram IRAMORIG :
{
_iramstart = .;
*(.icode)
*(.irodata)
*(.idata)
_iramend = .;
- } > DRAM
+ } >IRAM AT> DRAM
_iramcopy = LOADADDR(.iram);
@@ -253,7 +251,7 @@ SECTIONS
_iend = .;
} > DRAM
- .stack :
+ .stack ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors) :
{
*(.stack)
stackbegin = .;
diff --git a/firmware/boot.lds b/firmware/boot.lds
index d2ea10a..a990051 100644
--- a/firmware/boot.lds
+++ b/firmware/boot.lds
@@ -9,8 +9,10 @@ OUTPUT_FORMAT(elf32-littlearm)
OUTPUT_ARCH(arm)
#ifdef CPU_PP
INPUT(target/arm/crt0-pp-bl.o)
-#elif defined(OLYMPUS_MROBE_500)
+#elif CONFIG_CPU==DM320
INPUT(target/arm/tms320dm320/crt0.o)
+#elif CONFIG_CPU==S3C2440
+INPUT(target/arm/s3c2440/crt0.o)
#elif defined(CPU_TCC77X)
INPUT(target/arm/tcc77x/crt0.o)
#else
diff --git a/firmware/rolo.c b/firmware/rolo.c
index 2a4b753..aac99cc 100644
--- a/firmware/rolo.c
+++ b/firmware/rolo.c
@@ -161,7 +161,7 @@ void rolo_restart(const unsigned char* source, unsigned char* dest,
/* Wait for the COP to tell us it is rebooting */
while(cpu_reply != 2);
#endif
-
+
asm volatile(
"mov r0, #0x10000000 \n"
"mov pc, r0 \n"
diff --git a/firmware/target/arm/s3c2440/crt0.S b/firmware/target/arm/s3c2440/crt0.S
index 2c94fc4..4f220f6 100644
--- a/firmware/target/arm/s3c2440/crt0.S
+++ b/firmware/target/arm/s3c2440/crt0.S
@@ -85,8 +85,6 @@ start:
bhi 1b
#ifdef BOOTLOADER
-/* Code for ARM bootloader targets other than iPod go here */
-
/* Proper initialization pulled from 0x5070 */
/* BWSCON