From 5ca8bf022c5ecf75b34b7819cf2ea2d377709946 Mon Sep 17 00:00:00 2001 From: Karl Kurbjun Date: Thu, 13 Aug 2009 04:20:46 +0000 Subject: 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 --- firmware/target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c | 2 +- firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c | 5 ++++- firmware/target/arm/tms320dm320/mrobe-500/usb-mr500.c | 1 + firmware/target/arm/tms320dm320/system-dm320.c | 4 ++-- firmware/target/arm/tms320dm320/timer-dm320.c | 1 + 5 files changed, 9 insertions(+), 4 deletions(-) (limited to 'firmware/target/arm/tms320dm320') 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 */ -- cgit v1.2.3