diff options
| author | Dave Chapman <dave@dchapman.com> | 2007-01-01 12:09:45 +0000 |
|---|---|---|
| committer | Dave Chapman <dave@dchapman.com> | 2007-01-01 12:09:45 +0000 |
| commit | 147693819d3275ec9eba8b580fa6ff8ada9896f3 (patch) | |
| tree | a92f145b79b5248ab0550e8715ac1c479451d6b3 | |
| parent | 9d9b8c08de68f158bf9967a8ec340b10e25b840b (diff) | |
| download | rockbox-147693819d3275ec9eba8b580fa6ff8ada9896f3.zip rockbox-147693819d3275ec9eba8b580fa6ff8ada9896f3.tar.gz rockbox-147693819d3275ec9eba8b580fa6ff8ada9896f3.tar.bz2 rockbox-147693819d3275ec9eba8b580fa6ff8ada9896f3.tar.xz | |
Split the enable_fiq(fiq_handler) function into separate set_fiq_handler(fiq_handler) and enable_fiq(void) functions. This allows temporary disabling of the FIQ without knowing which fiq handler is in use.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11875 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/export/system.h | 5 | ||||
| -rw-r--r-- | firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c | 3 | ||||
| -rw-r--r-- | firmware/target/arm/pcm-pp.c | 9 |
3 files changed, 12 insertions, 5 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h index 3db38c9..66a2133 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h @@ -314,11 +314,14 @@ static inline int set_irq_level(int level) return (cpsr >> 7) & 1; } -static inline void enable_fiq(void(*fiq_handler)(void)) +static inline void set_fiq_handler(void(*fiq_handler)(void)) { /* Install the FIQ handler */ *((unsigned int*)(15*4)) = (unsigned int)fiq_handler; +} +static inline void enable_fiq(void) +{ /* Clear FIQ disable bit */ asm volatile ( "mrs r0, cpsr \n"\ diff --git a/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c index 936b836..04e1bbb 100644 --- a/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c +++ b/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c @@ -146,7 +146,8 @@ void pcm_play_dma_start(const void *addr, size_t size) /* clear pending DMA interrupt */ SRCPND = 1<<19; - enable_fiq(fiq); + set_fiq_handler(fiq); + enable_fiq(); /* unmask the DMA interrupt */ INTMSK &= ~(1<<19); diff --git a/firmware/target/arm/pcm-pp.c b/firmware/target/arm/pcm-pp.c index f6f71d7..9ee3acd 100644 --- a/firmware/target/arm/pcm-pp.c +++ b/firmware/target/arm/pcm-pp.c @@ -217,7 +217,8 @@ void pcm_play_dma_start(const void *addr, size_t size) #endif /* Clear the FIQ disable bit in cpsr_c */ - enable_fiq(fiq); + set_fiq_handler(fiq); + enable_fiq(); /* Enable playback FIFO */ #if CONFIG_CPU == PP5020 @@ -290,7 +291,8 @@ void pcm_play_pause_unpause(void) { /* Enable the FIFO and fill it */ - enable_fiq(fiq); + set_fiq_handler(fiq); + enable_fiq(); /* Enable playback FIFO */ #if CONFIG_CPU == PP5020 @@ -459,7 +461,8 @@ void pcm_rec_dma_start(void *addr, size_t size) /* enable record fifo */ outl(inl(0x70002800) | 0x10000000, 0x70002800); - enable_fiq(fiq_record); + set_fiq_handler(fiq_record); + enable_fiq(); } void pcm_close_recording(void) |