projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lm3s1968: merge the DevelGPS example application.
[bertos.git]
/
bertos
/
cpu
/
arm
/
drv
/
sysirq_at91.c
diff --git
a/bertos/cpu/arm/drv/sysirq_at91.c
b/bertos/cpu/arm/drv/sysirq_at91.c
index 281c7963f8afdbee1fb0fc472ca961a3171cd921..6de17602ce7cc5755b3d38da6dbf10b4e2935f3a 100644
(file)
--- a/
bertos/cpu/arm/drv/sysirq_at91.c
+++ b/
bertos/cpu/arm/drv/sysirq_at91.c
@@
-93,11
+93,17
@@
STATIC_ASSERT(countof(sysirq_tab) == SYSIRQ_CNT);
* This function checks for interrupt enable state of
* various sources (system timer, etc..) and calls
* the corresponding handler.
* This function checks for interrupt enable state of
* various sources (system timer, etc..) and calls
* the corresponding handler.
+ *
+ * \note On AT91SAM7, all system IRQs (timer included) are handled
+ * by the sysirq_dispatcher, so we can't differentiate between
+ * context-switch and non-context-switch ISR inside this
+ * class of IRQs.
*/
*/
-static void sysirq_dispatcher(void) __attribute__ ((interrupt));
-static void sysirq_dispatcher(void)
+static DECLARE_ISR_CONTEXT_SWITCH(sysirq_dispatcher)
{
{
- for (unsigned i = 0; i < countof(sysirq_tab); i++)
+ unsigned int i;
+
+ for (i = 0; i < countof(sysirq_tab); i++)
{
if (sysirq_tab[i].enabled
&& sysirq_tab[i].handler)
{
if (sysirq_tab[i].enabled
&& sysirq_tab[i].handler)
@@
-119,7
+125,7
@@
MOD_DEFINE(sysirq);
*/
void sysirq_init(void)
{
*/
void sysirq_init(void)
{
- cpuflags_t flags;
+ cpu
_
flags_t flags;
IRQ_SAVE_DISABLE(flags);
/* Disable all system interrupts */
IRQ_SAVE_DISABLE(flags);
/* Disable all system interrupts */