From 8d5acd64c9d0c3610ec595c7f61deb7f4eec417f Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Fri, 2 Oct 2009 23:45:53 +0000 Subject: [PATCH] Final changes to get a Nano 2G main build compiling. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22879 a1c6a512-1295-4272-9138-f99709370657 --- firmware/SOURCES | 15 +++++++++ firmware/target/arm/s5l8700/boot.lds | 2 +- firmware/target/arm/s5l8700/crt0.S | 48 +++++++++++++++++++++------- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/firmware/SOURCES b/firmware/SOURCES index e7de5b9442..6a956fbee3 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -1277,6 +1277,11 @@ target/arm/tcc780x/cowond2/audio-cowond2.c #ifdef CPU_S5L870X target/arm/s5l8700/system-s5l8700.c +#ifndef SIMULATOR +#ifndef BOOTLOADER +target/arm/s5l8700/timer-s5l8700.c +#endif /* BOOTLOADER */ +#endif /* SIMULATOR */ #endif #ifdef MEIZU_M6SL @@ -1311,10 +1316,20 @@ target/arm/s5l8700/udacodec-meizu.c #endif /* MEIZU_M3 */ #ifdef IPOD_NANO2G +drivers/audio/wm8975.c target/arm/ipod/button-clickwheel.c target/arm/s5l8700/kernel-s5l8700.c +target/arm/s5l8700/wmcodec-s5l8700.c +target/arm/s5l8700/pcm-s5l8700.c +target/arm/s5l8700/adc-s5l8700.c +target/arm/s5l8700/debug-s5l8700.c +target/arm/s5l8700/dma-s5l8700.c +target/arm/s5l8700/usb-s5l8700.c target/arm/s5l8700/ipodnano2g/backlight-nano2g.c target/arm/s5l8700/ipodnano2g/lcd-nano2g.c +target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c +target/arm/s5l8700/ipodnano2g/power-nano2g.c +target/arm/s5l8700/ipodnano2g/audio-nano2g.c #endif #ifndef SIMULATOR diff --git a/firmware/target/arm/s5l8700/boot.lds b/firmware/target/arm/s5l8700/boot.lds index 12f03ef463..2dea0ee4ea 100644 --- a/firmware/target/arm/s5l8700/boot.lds +++ b/firmware/target/arm/s5l8700/boot.lds @@ -1,6 +1,6 @@ #include "config.h" -ENTRY(_start) +ENTRY(start) #ifdef ROCKBOX_LITTLE_ENDIAN OUTPUT_FORMAT(elf32-littlearm) #else diff --git a/firmware/target/arm/s5l8700/crt0.S b/firmware/target/arm/s5l8700/crt0.S index bb374ae5a4..12a042ba41 100644 --- a/firmware/target/arm/s5l8700/crt0.S +++ b/firmware/target/arm/s5l8700/crt0.S @@ -23,10 +23,10 @@ #include "cpu.h" .section .intvect,"ax",%progbits - .global _start + .global start .global _newstart /* Exception vectors */ -_start: +start: b _newstart ldr pc, =undef_instr_handler ldr pc, =software_int_handler @@ -82,9 +82,14 @@ newstart2: // orr r0, r0, r2 // str r0, [r1] // switch backlight on -#ifndef IPOD_NANO2G -/* Currently disabled for the Nano2G as it doesn't appear to be - correct - e.g. audio doesn't work with this code enabled. */ +#if CONFIG_CPU==S5L8701 + ldr r1, =0x38200000 + ldr r2, [r1] + orr r2, r2, #1 + bic r2, r2, #0x10000 + str r2, [r1] // remap iram to address 0x0 +#endif + ldr r1, =0x3c500000 // CLKCON ldr r0, =0x00800080 str r0, [r1] @@ -126,7 +131,6 @@ newstart2: nop nop nop -#endif // ldr r0, =0x10100000 // ldr r1, =0x38200034 @@ -231,9 +235,8 @@ newstart2: mrc 15, 0, r0, c1, c0, 0 orr r0, r0, r1 mcr 15, 0, r0, c1, c0, 0 // enable protection unit - -#if CONFIG_CPU==S5L8700 +#if CONFIG_CPU==S5L8700 || !defined(BOOTLOADER) /* Copy interrupt vectors to iram */ ldr r2, =_intvectstart ldr r3, =_intvectend @@ -254,7 +257,7 @@ newstart2: strhi r4, [r2], #4 bhi 1b -#if CONFIG_CPU==S5L8700 +#if CONFIG_CPU==S5L8700 && defined(BOOTLOADER) /* Copy icode and data to ram */ ldr r2, =_datastart ldr r3, =_dataend @@ -265,10 +268,31 @@ newstart2: strhi r1, [r2], #4 bhi 1b #endif - + +#ifndef BOOTLOADER + /* Copy icode and data to ram */ + ldr r2, =_iramstart + ldr r3, =_iramend + ldr r4, =_iramcopy +1: + cmp r3, r2 + ldrhi r1, [r4], #4 + strhi r1, [r2], #4 + bhi 1b + + /* Initialise ibss section to zero */ + ldr r2, =_iedata + ldr r3, =_iend + mov r4, #0 +1: + cmp r3, r2 + strhi r4, [r2], #4 + bhi 1b +#endif + /* Set up some stack and munge it with 0xdeadbeef */ - ldr sp, =_stackend - ldr r2, =_stackbegin + ldr sp, =stackend + ldr r2, =stackbegin ldr r3, =0xdeadbeef 1: cmp sp, r2