summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugin.h4
-rw-r--r--apps/plugins/lib/gcc-support.c8
-rw-r--r--firmware/asm/sh/thread.c1
-rw-r--r--firmware/target/sh/adc-sh.c2
-rw-r--r--firmware/target/sh/archos/audio-archos.c8
-rw-r--r--firmware/target/sh/archos/timer-archos.c2
-rw-r--r--firmware/target/sh/kernel-sh.c2
-rw-r--r--firmware/target/sh/system-sh.c11
-rwxr-xr-xtools/configure6
-rwxr-xr-xtools/rockboxdev.sh4
10 files changed, 18 insertions, 30 deletions
diff --git a/apps/plugin.h b/apps/plugin.h
index ad726d61bf..bb2778164b 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -974,9 +974,9 @@ struct plugin_header {
974extern unsigned char plugin_start_addr[]; 974extern unsigned char plugin_start_addr[];
975extern unsigned char plugin_end_addr[]; 975extern unsigned char plugin_end_addr[];
976#define PLUGIN_HEADER \ 976#define PLUGIN_HEADER \
977 const struct plugin_api *rb DATA_ATTR USED_ATTR; \ 977 const struct plugin_api *rb DATA_ATTR; \
978 const struct plugin_header __header \ 978 const struct plugin_header __header \
979 __attribute__ ((section (".header"))) USED_ATTR = { \ 979 __attribute__ ((section (".header")))= { \
980 { PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \ 980 { PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \
981 plugin_start_addr, plugin_end_addr }, plugin__start, &rb }; 981 plugin_start_addr, plugin_end_addr }, plugin__start, &rb };
982#else /* PLATFORM_HOSTED */ 982#else /* PLATFORM_HOSTED */
diff --git a/apps/plugins/lib/gcc-support.c b/apps/plugins/lib/gcc-support.c
index 156dbf93eb..09a08fa9f5 100644
--- a/apps/plugins/lib/gcc-support.c
+++ b/apps/plugins/lib/gcc-support.c
@@ -29,22 +29,22 @@ void __attribute__((naked)) __div0(void)
29} 29}
30#endif 30#endif
31 31
32void USED_ATTR *memcpy(void *dest, const void *src, size_t n) 32void *memcpy(void *dest, const void *src, size_t n)
33{ 33{
34 return rb->memcpy(dest, src, n); 34 return rb->memcpy(dest, src, n);
35} 35}
36 36
37void USED_ATTR *memset(void *dest, int c, size_t n) 37void *memset(void *dest, int c, size_t n)
38{ 38{
39 return rb->memset(dest, c, n); 39 return rb->memset(dest, c, n);
40} 40}
41 41
42void USED_ATTR *memmove(void *dest, const void *src, size_t n) 42void *memmove(void *dest, const void *src, size_t n)
43{ 43{
44 return rb->memmove(dest, src, n); 44 return rb->memmove(dest, src, n);
45} 45}
46 46
47int USED_ATTR memcmp(const void *s1, const void *s2, size_t n) 47int memcmp(const void *s1, const void *s2, size_t n)
48{ 48{
49 return rb->memcmp(s1, s2, n); 49 return rb->memcmp(s1, s2, n);
50} 50}
diff --git a/firmware/asm/sh/thread.c b/firmware/asm/sh/thread.c
index c0e0ceb549..e63470c4a1 100644
--- a/firmware/asm/sh/thread.c
+++ b/firmware/asm/sh/thread.c
@@ -30,7 +30,6 @@ static void USED_ATTR __start_thread(void)
30{ 30{
31 /* r8 = context */ 31 /* r8 = context */
32 asm volatile ( 32 asm volatile (
33 ".global _start_thread \n"
34 "_start_thread: \n" /* Start here - no naked attribute */ 33 "_start_thread: \n" /* Start here - no naked attribute */
35 "mov.l @(4, r8), r0 \n" /* Fetch thread function pointer */ 34 "mov.l @(4, r8), r0 \n" /* Fetch thread function pointer */
36 "mov.l @(28, r8), r15 \n" /* Set initial sp */ 35 "mov.l @(28, r8), r15 \n" /* Set initial sp */
diff --git a/firmware/target/sh/adc-sh.c b/firmware/target/sh/adc-sh.c
index 17f829ad97..2e6d6407b8 100644
--- a/firmware/target/sh/adc-sh.c
+++ b/firmware/target/sh/adc-sh.c
@@ -59,7 +59,7 @@ static void adc_tick(void)
59 ADCSR = ADCSR_ADST | ADCSR_ADIE | ADCSR_SCAN | 3; 59 ADCSR = ADCSR_ADST | ADCSR_ADIE | ADCSR_SCAN | 3;
60} 60}
61 61
62void ADITI(void) __attribute__((interrupt_handler)) USED_ATTR; 62void ADITI(void) __attribute__((interrupt_handler));
63void ADITI(void) 63void ADITI(void)
64{ 64{
65 if(ADCSR & ADCSR_ADF) 65 if(ADCSR & ADCSR_ADF)
diff --git a/firmware/target/sh/archos/audio-archos.c b/firmware/target/sh/archos/audio-archos.c
index 207f26f250..2c2579bec5 100644
--- a/firmware/target/sh/archos/audio-archos.c
+++ b/firmware/target/sh/archos/audio-archos.c
@@ -153,7 +153,7 @@ static void play_tick(void)
153 } 153 }
154} 154}
155 155
156void DEI3(void) __attribute__((interrupt_handler)) USED_ATTR; 156void DEI3(void) __attribute__((interrupt_handler));
157void DEI3(void) 157void DEI3(void)
158{ 158{
159 const void* start; 159 const void* start;
@@ -177,7 +177,7 @@ void DEI3(void)
177 CHCR3 &= ~0x0002; /* Clear DMA interrupt */ 177 CHCR3 &= ~0x0002; /* Clear DMA interrupt */
178} 178}
179 179
180void IMIA1(void) __attribute__((interrupt_handler)) USED_ATTR; 180void IMIA1(void) __attribute__((interrupt_handler));
181void IMIA1(void) /* Timer 1 interrupt */ 181void IMIA1(void) /* Timer 1 interrupt */
182{ 182{
183 if(playing) 183 if(playing)
@@ -189,14 +189,14 @@ void IMIA1(void) /* Timer 1 interrupt */
189#endif 189#endif
190} 190}
191 191
192void IRQ6(void) __attribute__((interrupt_handler)) USED_ATTR; 192void IRQ6(void) __attribute__((interrupt_handler));
193void IRQ6(void) /* PB14: MAS stop demand IRQ */ 193void IRQ6(void) /* PB14: MAS stop demand IRQ */
194{ 194{
195 SCR0 &= ~0x80; 195 SCR0 &= ~0x80;
196} 196}
197 197
198#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 198#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
199void IRQ3(void) __attribute__((interrupt_handler)) USED_ATTR; 199void IRQ3(void) __attribute__((interrupt_handler));
200void IRQ3(void) /* PA15: MAS demand IRQ */ 200void IRQ3(void) /* PA15: MAS demand IRQ */
201{ 201{
202 /* Begin with setting the IRQ to edge sensitive */ 202 /* Begin with setting the IRQ to edge sensitive */
diff --git a/firmware/target/sh/archos/timer-archos.c b/firmware/target/sh/archos/timer-archos.c
index 251d68638a..98a3afb4b6 100644
--- a/firmware/target/sh/archos/timer-archos.c
+++ b/firmware/target/sh/archos/timer-archos.c
@@ -23,7 +23,7 @@
23#include "system.h" 23#include "system.h"
24#include "timer.h" 24#include "timer.h"
25 25
26void IMIA4(void) __attribute__((interrupt_handler)) USED_ATTR; 26void IMIA4(void) __attribute__((interrupt_handler));
27void IMIA4(void) 27void IMIA4(void)
28{ 28{
29 if (pfn_timer != NULL) 29 if (pfn_timer != NULL)
diff --git a/firmware/target/sh/kernel-sh.c b/firmware/target/sh/kernel-sh.c
index d4cfaaa724..65b27e47f0 100644
--- a/firmware/target/sh/kernel-sh.c
+++ b/firmware/target/sh/kernel-sh.c
@@ -55,7 +55,7 @@ void tick_start(unsigned int interval_in_ms)
55 TSTR |= 0x01; /* Start timer 1 */ 55 TSTR |= 0x01; /* Start timer 1 */
56} 56}
57 57
58void IMIA0(void) __attribute__ ((interrupt_handler)) USED_ATTR; 58void IMIA0(void) __attribute__ ((interrupt_handler));
59void IMIA0(void) 59void IMIA0(void)
60{ 60{
61 /* Run through the list of tick tasks */ 61 /* Run through the list of tick tasks */
diff --git a/firmware/target/sh/system-sh.c b/firmware/target/sh/system-sh.c
index 921d08f7b4..e054801b57 100644
--- a/firmware/target/sh/system-sh.c
+++ b/firmware/target/sh/system-sh.c
@@ -180,7 +180,6 @@ asm (
180 * Must go into the same section as the UIE() handler */ 180 * Must go into the same section as the UIE() handler */
181 181
182 "\t.text\n" 182 "\t.text\n"
183 ".global\t_UIE4\n"
184 "_UIE4:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 183 "_UIE4:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
185 "_UIE5:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 184 "_UIE5:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
186 "_UIE6:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 185 "_UIE6:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
@@ -287,17 +286,13 @@ asm (
287 "_UIE107:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 286 "_UIE107:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
288 "_UIE108:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 287 "_UIE108:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
289 "_UIE109:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n" 288 "_UIE109:\tbsr\t_UIE\n\tmov.l\t@r15+,r4\n"
290 "_UIE:\tmov.l\t__UIE_k,r0\n" 289
291 "jmp\t@r0\n"
292 "nop\n"
293 ".align\t4\n"
294 "__UIE_k:\t.long\t__UIE\n"
295); 290);
296 291
297extern void UIE4(void); /* needed for calculating the UIE number */ 292extern void UIE4(void); /* needed for calculating the UIE number */
298 293
299void _UIE (unsigned int pc) __attribute__((section(".text"))) USED_ATTR; 294void UIE (unsigned int pc) __attribute__((section(".text")));
300void _UIE (unsigned int pc) /* Unexpected Interrupt or Exception */ 295void UIE (unsigned int pc) /* Unexpected Interrupt or Exception */
301{ 296{
302 unsigned int n; 297 unsigned int n;
303 298
diff --git a/tools/configure b/tools/configure
index 4059a95a68..08d07b7797 100755
--- a/tools/configure
+++ b/tools/configure
@@ -3707,12 +3707,6 @@ if test "$CC" = "sh-elf-gcc"; then
3707 echo "WARNING: You use an unpatched gcc compiler: $gccver" 3707 echo "WARNING: You use an unpatched gcc compiler: $gccver"
3708 echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler" 3708 echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler"
3709 fi 3709 fi
3710
3711 if test "$gccnum" -ge "406"; then
3712 echo "Enabling link-time optimization"
3713 GCCOPTS="$GCCOPTS -flto"
3714 fi
3715
3716 fi 3710 fi
3717fi 3711fi
3718 3712
diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh
index 78641b5b23..996aa86aea 100755
--- a/tools/rockboxdev.sh
+++ b/tools/rockboxdev.sh
@@ -361,8 +361,8 @@ do
361 # default rule for Objective C. Disable the builtin make rules. See 361 # default rule for Objective C. Disable the builtin make rules. See
362 # http://sourceware.org/ml/binutils/2005-12/msg00259.html 362 # http://sourceware.org/ml/binutils/2005-12/msg00259.html
363 export MAKEFLAGS="-r $MAKEFLAGS" 363 export MAKEFLAGS="-r $MAKEFLAGS"
364 build "binutils" "sh-elf" "2.22" "" "--disable-werror" 364 build "binutils" "sh-elf" "2.16.1" "" "--disable-werror"
365 build "gcc" "sh-elf" "4.6.3" "" "" "gmp mpfr mpc" 365 build "gcc" "sh-elf" "4.0.3" "gcc-4.0.3-rockbox-1.diff"
366 ;; 366 ;;
367 367
368 [Ii]) 368 [Ii])