aboutsummaryrefslogtreecommitdiffstats
path: root/os/ports
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-09-13 12:06:08 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-09-13 12:06:08 +0000
commitd688b84d2585d3bedbd682417313bcb581b1a1fc (patch)
treee85b89a70b154a1b07c6ae3513fdad2a8cfc0140 /os/ports
parentc5496788e53c99371c2f4a36c67dcbf556176398 (diff)
downloadChibiOS-d688b84d2585d3bedbd682417313bcb581b1a1fc.tar.gz
ChibiOS-d688b84d2585d3bedbd682417313bcb581b1a1fc.tar.bz2
ChibiOS-d688b84d2585d3bedbd682417313bcb581b1a1fc.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1162 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/ports')
-rw-r--r--os/ports/GCC/ARM7/chcoreasm.s2
-rw-r--r--os/ports/GCC/ARMCM3/chcore.c6
-rw-r--r--os/ports/GCC/ARMCM3/chcore.h2
-rw-r--r--os/ports/GCC/AVR/chcore.h2
-rw-r--r--os/ports/GCC/MSP430/chcore.h2
5 files changed, 6 insertions, 8 deletions
diff --git a/os/ports/GCC/ARM7/chcoreasm.s b/os/ports/GCC/ARM7/chcoreasm.s
index da942269a..2b08d0607 100644
--- a/os/ports/GCC/ARM7/chcoreasm.s
+++ b/os/ports/GCC/ARM7/chcoreasm.s
@@ -166,7 +166,7 @@ _port_irq_common:
.code 32
.globl _port_irq_common
_port_irq_common:
- bl chSchRescRequiredI
+ bl chSchIsRescRequiredExI
#endif /* !THUMB_NO_INTERWORKING */
cmp r0, #0 // Simply returns if a
ldmeqfd sp!, {r0-r3, r12, lr} // reschedule is not
diff --git a/os/ports/GCC/ARMCM3/chcore.c b/os/ports/GCC/ARMCM3/chcore.c
index 4e9874f82..7973659fe 100644
--- a/os/ports/GCC/ARMCM3/chcore.c
+++ b/os/ports/GCC/ARMCM3/chcore.c
@@ -61,13 +61,11 @@ void _port_unlock(void) {
*/
CH_IRQ_HANDLER(SysTickVector) {
- CH_IRQ_PROLOGUE();
-
chSysLockFromIsr();
chSysTimerHandlerI();
+ if (chSchIsRescRequiredExI())
+ SCB_ICSR = ICSR_PENDSVSET;
chSysUnlockFromIsr();
-
- CH_IRQ_EPILOGUE();
}
/**
diff --git a/os/ports/GCC/ARMCM3/chcore.h b/os/ports/GCC/ARMCM3/chcore.h
index daff52090..ffcb59b2a 100644
--- a/os/ports/GCC/ARMCM3/chcore.h
+++ b/os/ports/GCC/ARMCM3/chcore.h
@@ -211,7 +211,7 @@ struct context {
*/
#define PORT_IRQ_EPILOGUE() { \
chSysLockFromIsr(); \
- if (chSchRescRequiredI()) \
+ if (chSchIsRescRequiredI()) \
SCB_ICSR = ICSR_PENDSVSET; \
chSysUnlockFromIsr(); \
}
diff --git a/os/ports/GCC/AVR/chcore.h b/os/ports/GCC/AVR/chcore.h
index 18439b9fe..b452e0227 100644
--- a/os/ports/GCC/AVR/chcore.h
+++ b/os/ports/GCC/AVR/chcore.h
@@ -190,7 +190,7 @@ struct context {
* invoke system APIs.
*/
#define PORT_IRQ_EPILOGUE() { \
- if (chSchRescRequiredI()) \
+ if (chSchIsRescRequiredExI()) \
chSchDoRescheduleI(); \
}
diff --git a/os/ports/GCC/MSP430/chcore.h b/os/ports/GCC/MSP430/chcore.h
index f903a116a..8ae84b5c1 100644
--- a/os/ports/GCC/MSP430/chcore.h
+++ b/os/ports/GCC/MSP430/chcore.h
@@ -157,7 +157,7 @@ struct context {
* invoke system APIs.
*/
#define PORT_IRQ_EPILOGUE() { \
- if (chSchRescRequiredI()) \
+ if (chSchIsRescRequiredExI()) \
chSchDoRescheduleI(); \
}