diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2008-12-04 21:06:52 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2008-12-04 21:06:52 +0000 |
commit | 203722136c5f50d7deab432739e991faa48e470f (patch) | |
tree | 5e4b9fa829859e53a05f051ebb1112d91da0538d /firmware | |
parent | 1ab08e6879b1fe50102fe68a1326db05891e6faa (diff) | |
download | rockbox-203722136c5f50d7deab432739e991faa48e470f.tar.gz rockbox-203722136c5f50d7deab432739e991faa48e470f.zip |
Implement in_interrupt_mode() properly
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19334 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/system-jz4740.c | 19 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/system-target.h | 6 |
2 files changed, 9 insertions, 16 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c index f733582d70..bde8e1df6a 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "system-target.h" | 27 | #include "system-target.h" |
28 | #include <string.h> | 28 | #include <string.h> |
29 | #include "kernel.h" | 29 | #include "kernel.h" |
30 | #include "system.h" | ||
30 | 31 | ||
31 | #define NUM_DMA 6 | 32 | #define NUM_DMA 6 |
32 | #define NUM_GPIO 128 | 33 | #define NUM_GPIO 128 |
@@ -322,26 +323,15 @@ static int get_irq_number(void) | |||
322 | return irq; | 323 | return irq; |
323 | } | 324 | } |
324 | 325 | ||
325 | static bool intr_mode = false; | ||
326 | |||
327 | bool in_interrupt_mode(void) | ||
328 | { | ||
329 | return intr_mode; | ||
330 | } | ||
331 | |||
332 | void intr_handler(void) | 326 | void intr_handler(void) |
333 | { | 327 | { |
334 | int irq = get_irq_number(); | 328 | irq = get_irq_number(); /* irq is defined static at UIRQ() */ |
335 | if(irq < 0) | 329 | if(UNLIKELY(irq < 0)) |
336 | return; | 330 | return; |
337 | 331 | ||
338 | ack_irq(irq); | 332 | ack_irq(irq); |
339 | if(irq > 0) | 333 | if(LIKELY(irq > 0)) |
340 | { | ||
341 | intr_mode = true; | ||
342 | irqvector[irq-1](); | 334 | irqvector[irq-1](); |
343 | intr_mode = false; | ||
344 | } | ||
345 | } | 335 | } |
346 | 336 | ||
347 | #define EXC(x,y) if(_cause == (x)) return (y); | 337 | #define EXC(x,y) if(_cause == (x)) return (y); |
@@ -378,7 +368,6 @@ void exception_handler(void* stack_ptr, unsigned int cause, unsigned int epc) | |||
378 | 368 | ||
379 | static const int FR2n[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32}; | 369 | static const int FR2n[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32}; |
380 | static unsigned int iclk; | 370 | static unsigned int iclk; |
381 | |||
382 | static void detect_clock(void) | 371 | static void detect_clock(void) |
383 | { | 372 | { |
384 | unsigned int cfcr, pllout; | 373 | unsigned int cfcr, pllout; |
diff --git a/firmware/target/mips/ingenic_jz47xx/system-target.h b/firmware/target/mips/ingenic_jz47xx/system-target.h index a8133140fa..eab517fa5d 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-target.h +++ b/firmware/target/mips/ingenic_jz47xx/system-target.h | |||
@@ -56,6 +56,11 @@ static inline void disable_interrupt(void) | |||
56 | clear_c0_status(ST0_IE); | 56 | clear_c0_status(ST0_IE); |
57 | } | 57 | } |
58 | 58 | ||
59 | static inline bool in_interrupt_mode(void) | ||
60 | { | ||
61 | return (read_c0_status() & ST0_IE) ? true : false; | ||
62 | } | ||
63 | |||
59 | #define disable_irq() \ | 64 | #define disable_irq() \ |
60 | disable_interrupt() | 65 | disable_interrupt() |
61 | 66 | ||
@@ -101,7 +106,6 @@ void udelay(unsigned int usec); | |||
101 | void mdelay(unsigned int msec); | 106 | void mdelay(unsigned int msec); |
102 | void power_off(void); | 107 | void power_off(void); |
103 | void system_reboot(void); | 108 | void system_reboot(void); |
104 | bool in_interrupt_mode(void); | ||
105 | 109 | ||
106 | #define DMA_LCD_CHANNEL 0 | 110 | #define DMA_LCD_CHANNEL 0 |
107 | #define DMA_NAND_CHANNEL 1 | 111 | #define DMA_NAND_CHANNEL 1 |