diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-08-13 04:20:46 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-08-13 04:20:46 +0000 |
commit | 5ca8bf022c5ecf75b34b7819cf2ea2d377709946 (patch) | |
tree | 332377caf4be606cd537a2da8a46f89d8e327b3d | |
parent | f026a0fed7fa621400dcc94b4e09ca25e7737527 (diff) | |
download | rockbox-5ca8bf022c5ecf75b34b7819cf2ea2d377709946.tar.gz rockbox-5ca8bf022c5ecf75b34b7819cf2ea2d377709946.zip |
M:Robe 500: Put more interrupts in iram, reduce stack usage when ARM/DSP transfers happen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22287 a1c6a512-1295-4272-9138-f99709370657
5 files changed, 9 insertions, 4 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c index f35524d88e..98d41c7618 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c | |||
@@ -300,7 +300,7 @@ bool remote_button_hold(void) | |||
300 | 300 | ||
301 | int remote_read_device(void) | 301 | int remote_read_device(void) |
302 | { | 302 | { |
303 | char read_buffer[5]; | 303 | static char read_buffer[5]; |
304 | int read_button = BUTTON_NONE; | 304 | int read_button = BUTTON_NONE; |
305 | 305 | ||
306 | static int oldbutton=BUTTON_NONE; | 306 | static int oldbutton=BUTTON_NONE; |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c index 0542c6c2a9..3f15bd6dd0 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c | |||
@@ -121,12 +121,15 @@ size_t pcm_get_bytes_waiting(void) | |||
121 | return DSP_(_sdem_dsp_size)-DSP_(_sdem_level); | 121 | return DSP_(_sdem_dsp_size)-DSP_(_sdem_level); |
122 | } | 122 | } |
123 | 123 | ||
124 | /* Only used when debugging */ | ||
125 | char buffer[80]; | ||
126 | |||
127 | void DSPHINT(void) __attribute__ ((section(".icode"))); | ||
124 | void DSPHINT(void) | 128 | void DSPHINT(void) |
125 | { | 129 | { |
126 | register pcm_more_callback_type get_more; /* No stack for this */ | 130 | register pcm_more_callback_type get_more; /* No stack for this */ |
127 | 131 | ||
128 | unsigned int i; | 132 | unsigned int i; |
129 | char buffer[80]; | ||
130 | 133 | ||
131 | IO_INTC_IRQ0 = 1 << 11; | 134 | IO_INTC_IRQ0 = 1 << 11; |
132 | 135 | ||
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c index 2e3518868b..1fbc1ce60f 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c | |||
@@ -62,6 +62,7 @@ void usb_init_device(void) { | |||
62 | } | 62 | } |
63 | 63 | ||
64 | /* This is the initial interupt handler routine for the USB controller */ | 64 | /* This is the initial interupt handler routine for the USB controller */ |
65 | void GIO3 (void) __attribute__ ((section(".icode"))); | ||
65 | void GIO3 (void) { | 66 | void GIO3 (void) { |
66 | /* Clear the interrupt, this is critical to do before running the full | 67 | /* Clear the interrupt, this is critical to do before running the full |
67 | * handler otherwise you might miss an interrupt and everything will stop | 68 | * handler otherwise you might miss an interrupt and everything will stop |
diff --git a/firmware/target/arm/tms320dm320/system-dm320.c b/firmware/target/arm/tms320dm320/system-dm320.c index 910662505b..d1f2ff1684 100644 --- a/firmware/target/arm/tms320dm320/system-dm320.c +++ b/firmware/target/arm/tms320dm320/system-dm320.c | |||
@@ -35,8 +35,8 @@ | |||
35 | #define default_interrupt(name) \ | 35 | #define default_interrupt(name) \ |
36 | extern __attribute__((weak,alias("UIRQ"))) void name (void) | 36 | extern __attribute__((weak,alias("UIRQ"))) void name (void) |
37 | 37 | ||
38 | void irq_handler(void) __attribute__((interrupt ("IRQ"), naked)); | 38 | void irq_handler(void) __attribute__((interrupt ("IRQ"), naked, section(".icode"))); |
39 | void fiq_handler(void) __attribute__((interrupt ("FIQ"), naked)); | 39 | void fiq_handler(void) __attribute__((interrupt ("FIQ"), naked, section(".icode"))); |
40 | 40 | ||
41 | default_interrupt(TIMER0); | 41 | default_interrupt(TIMER0); |
42 | default_interrupt(TIMER1); | 42 | default_interrupt(TIMER1); |
diff --git a/firmware/target/arm/tms320dm320/timer-dm320.c b/firmware/target/arm/tms320dm320/timer-dm320.c index ef1fac04eb..030d645664 100644 --- a/firmware/target/arm/tms320dm320/timer-dm320.c +++ b/firmware/target/arm/tms320dm320/timer-dm320.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | /* GPB0/TOUT0 should already have been configured as output so that pin | 28 | /* GPB0/TOUT0 should already have been configured as output so that pin |
29 | should not be a functional pin and TIMER0 output unseen there */ | 29 | should not be a functional pin and TIMER0 output unseen there */ |
30 | void TIMER0(void) __attribute__ ((section(".icode"))); | ||
30 | void TIMER0(void) | 31 | void TIMER0(void) |
31 | { | 32 | { |
32 | IO_INTC_IRQ0 = INTR_IRQ0_TMR0; /* clear TIMER0 interrupt */ | 33 | IO_INTC_IRQ0 = INTR_IRQ0_TMR0; /* clear TIMER0 interrupt */ |