summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-08-13 04:20:46 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-08-13 04:20:46 +0000
commit5ca8bf022c5ecf75b34b7819cf2ea2d377709946 (patch)
tree332377caf4be606cd537a2da8a46f89d8e327b3d /firmware
parentf026a0fed7fa621400dcc94b4e09ca25e7737527 (diff)
downloadrockbox-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
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c2
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c5
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c1
-rw-r--r--firmware/target/arm/tms320dm320/system-dm320.c4
-rw-r--r--firmware/target/arm/tms320dm320/timer-dm320.c1
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)
int remote_read_device(void)
{
- char read_buffer[5];
+ static char read_buffer[5];
int read_button = BUTTON_NONE;
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)
return DSP_(_sdem_dsp_size)-DSP_(_sdem_level);
}
+/* Only used when debugging */
+char buffer[80];
+
+void DSPHINT(void) __attribute__ ((section(".icode")));
void DSPHINT(void)
{
register pcm_more_callback_type get_more; /* No stack for this */
unsigned int i;
- char buffer[80];
IO_INTC_IRQ0 = 1 << 11;
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) {
}
/* This is the initial interupt handler routine for the USB controller */
+void GIO3 (void) __attribute__ ((section(".icode")));
void GIO3 (void) {
/* Clear the interrupt, this is critical to do before running the full
* 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 @@
#define default_interrupt(name) \
extern __attribute__((weak,alias("UIRQ"))) void name (void)
-void irq_handler(void) __attribute__((interrupt ("IRQ"), naked));
-void fiq_handler(void) __attribute__((interrupt ("FIQ"), naked));
+void irq_handler(void) __attribute__((interrupt ("IRQ"), naked, section(".icode")));
+void fiq_handler(void) __attribute__((interrupt ("FIQ"), naked, section(".icode")));
default_interrupt(TIMER0);
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 @@
/* GPB0/TOUT0 should already have been configured as output so that pin
should not be a functional pin and TIMER0 output unseen there */
+void TIMER0(void) __attribute__ ((section(".icode")));
void TIMER0(void)
{
IO_INTC_IRQ0 = INTR_IRQ0_TMR0; /* clear TIMER0 interrupt */