diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-12-12 18:36:52 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-12-12 18:36:52 +0000 |
commit | e087751b107982eeaa001e92c2dd1f24f1af6809 (patch) | |
tree | 05b984cc09e7e268d1885d9ee06c7274fbc4b4e2 /firmware/target/arm/tms320dm320/system-dm320.c | |
parent | de159ceb3d1b852ee97be15ae707056ec995bf2d (diff) | |
download | rockbox-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.c | 22 |
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 | ||
171 | void system_reboot(void) | 171 | void system_reboot(void) |