diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2008-03-26 01:50:41 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2008-03-26 01:50:41 +0000 |
| commit | af395f4db6ad7b83f9d9afefb1c0ceeedd140a45 (patch) | |
| tree | b631289b4a3b28d3c65b10d272d50298f377c69f /apps | |
| parent | 74d678fdbcbc427c057e7682ba0a0566e49a8b97 (diff) | |
| download | rockbox-af395f4db6ad7b83f9d9afefb1c0ceeedd140a45.zip rockbox-af395f4db6ad7b83f9d9afefb1c0ceeedd140a45.tar.gz rockbox-af395f4db6ad7b83f9d9afefb1c0ceeedd140a45.tar.bz2 rockbox-af395f4db6ad7b83f9d9afefb1c0ceeedd140a45.tar.xz | |
Do core interrupt masking in a less general fashion and save some instructions to decrease size and speed things up a little bit. Small fix to a few places where interrupts would get enabled again where they shouldn't have been (context switching calls when disabled).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16811 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/debug_menu.c | 15 | ||||
| -rw-r--r-- | apps/main.c | 6 | ||||
| -rw-r--r-- | apps/plugins/wavplay.c | 4 | ||||
| -rw-r--r-- | apps/plugins/wavrecord.c | 4 |
4 files changed, 15 insertions, 14 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index fc509ce..d21dc03 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -417,7 +417,7 @@ static bool dbg_flash_id(unsigned* p_manufacturer, unsigned* p_device, not_id = flash[1]; /* should be 'A' (0x41) and 'R' (0x52) from the "ARCH" marker */ /* disable interrupts, prevent any stray flash access */ - old_level = set_irq_level(HIGHEST_IRQ_LEVEL); + old_level = disable_irq_save(); flash[addr1] = 0xAA; /* enter command mode */ flash[addr2] = 0x55; @@ -432,7 +432,7 @@ static bool dbg_flash_id(unsigned* p_manufacturer, unsigned* p_device, /* Atmel wants 20ms pause here */ /* sleep(HZ/50); no sleeping possible while interrupts are disabled */ - set_irq_level(old_level); /* enable interrupts again */ + restore_irq(old_level); /* enable interrupts again */ /* I assume success if the obtained values are different from the normal flash content. This is not perfectly bulletproof, they @@ -2066,9 +2066,12 @@ static bool dbg_save_roms(void) char buf[EEPROM_SIZE]; int err; - old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); + old_irq_level = disable_irq_save(); err = eeprom_24cxx_read(0, buf, sizeof buf); + + restore_irq(old_irq_level); + if (err) gui_syncsplash(HZ*3, "Eeprom read failure (%d)",err); else @@ -2076,8 +2079,6 @@ static bool dbg_save_roms(void) write(fd, buf, sizeof buf); } - set_irq_level(old_irq_level); - close(fd); } #endif @@ -2248,7 +2249,7 @@ static bool dbg_write_eeprom(void) if(rc == EEPROM_SIZE) { - old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); + old_irq_level = disable_irq_save(); err = eeprom_24cxx_write(0, buf, sizeof buf); if (err) @@ -2256,7 +2257,7 @@ static bool dbg_write_eeprom(void) else gui_syncsplash(HZ*3, "Eeprom written successfully"); - set_irq_level(old_irq_level); + restore_irq(old_irq_level); } else { diff --git a/apps/main.c b/apps/main.c index a3a2241..3f83850 100644 --- a/apps/main.c +++ b/apps/main.c @@ -272,7 +272,7 @@ static void init(void) { kernel_init(); buffer_init(); - set_irq_level(0); + enable_irq(); lcd_init(); #ifdef HAVE_REMOTE_LCD lcd_remote_init(); @@ -360,9 +360,9 @@ static void init(void) power_init(); - set_irq_level(0); + enable_irq(); #ifdef CPU_ARM - set_fiq_status(FIQ_ENABLED); + enable_fiq(); #endif lcd_init(); #ifdef HAVE_REMOTE_LCD diff --git a/apps/plugins/wavplay.c b/apps/plugins/wavplay.c index 6a969f1..bf06787 100644 --- a/apps/plugins/wavplay.c +++ b/apps/plugins/wavplay.c @@ -3345,7 +3345,7 @@ void dma_end_isr(void) void demand_irq_enable(bool on) { - int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); + int oldlevel = disable_irq_save(); if(on) { @@ -3357,7 +3357,7 @@ void demand_irq_enable(bool on) IPRA &= 0xfff0; } - set_irq_level(oldlevel); + restore_irq(oldlevel); } static inline int available(void) diff --git a/apps/plugins/wavrecord.c b/apps/plugins/wavrecord.c index ee55763..b509212 100644 --- a/apps/plugins/wavrecord.c +++ b/apps/plugins/wavrecord.c @@ -3415,7 +3415,7 @@ void rec_tick(void) void rec_tick_enable(bool on) { - int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); + int oldlevel = disable_irq_save(); if(on) { @@ -3431,7 +3431,7 @@ void rec_tick_enable(bool on) IPRB = (IPRB & 0xff0f) | 0x0080; /* Reenable IRQ6 */ } - set_irq_level(oldlevel); + restore_irq(oldlevel); } void hijack_interrupts(bool on) |