summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/system-dm320.c
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-12-12 18:36:52 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-12-12 18:36:52 +0000
commite087751b107982eeaa001e92c2dd1f24f1af6809 (patch)
tree05b984cc09e7e268d1885d9ee06c7274fbc4b4e2 /firmware/target/arm/tms320dm320/system-dm320.c
parentde159ceb3d1b852ee97be15ae707056ec995bf2d (diff)
downloadrockbox-e087751b107982eeaa001e92c2dd1f24f1af6809.tar.gz
rockbox-e087751b107982eeaa001e92c2dd1f24f1af6809.zip
M:Robe 500: Fix FIQ's and make the audio DMA a FIQ, simplify the ADC code and make it more reliable. Fix ADC problems on initial boot.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23948 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/tms320dm320/system-dm320.c')
-rw-r--r--firmware/target/arm/tms320dm320/system-dm320.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/firmware/target/arm/tms320dm320/system-dm320.c b/firmware/target/arm/tms320dm320/system-dm320.c
index 434b0065a5..9dff1afc20 100644
--- a/firmware/target/arm/tms320dm320/system-dm320.c
+++ b/firmware/target/arm/tms320dm320/system-dm320.c
@@ -155,17 +155,17 @@ void fiq_handler(void)
155 * Based on: linux/arch/arm/kernel/entry-armv.S and system-meg-fx.c 155 * Based on: linux/arch/arm/kernel/entry-armv.S and system-meg-fx.c
156 */ 156 */
157 157
158 asm volatile ( 158 asm volatile( "stmfd sp!, {r0-r7, ip, lr} \n" /* Store context */
159 "sub lr, lr, #4 \r\n" 159 "sub sp, sp, #8 \n"); /* Reserve stack */
160 "stmfd sp!, {r0-r3, ip, lr} \r\n" 160 unsigned short addr = IO_INTC_FIQENTRY0>>2;
161 "mov r0, #0x00030000 \r\n" 161 if(addr != 0)
162 "ldr r0, [r0, #0x510] \r\n" /* Fetch value from IO_INTC_FIQENTRY0 */ 162 {
163 "sub r0, r0, #1 \r\n" 163 addr--;
164 "ldr r1, =irqvector \r\n" 164 irqvector[addr]();
165 "ldr r1, [r1, r0, lsl #2] \r\n" /* Divide value by 4 (TBA0/TBA1 is set to 0) and load appropriate pointer from the vector list */ 165 }
166 "blx r1 \r\n" /* Jump to handler */ 166 asm volatile( "add sp, sp, #8 \n" /* Cleanup stack */
167 "ldmfd sp!, {r0-r3, ip, pc}^ \r\n" /* Return from FIQ */ 167 "ldmfd sp!, {r0-r7, ip, lr} \n" /* Restore context */
168 ); 168 "subs pc, lr, #4 \n"); /* Return from FIQ */
169} 169}
170 170
171void system_reboot(void) 171void system_reboot(void)