aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-07-19 10:59:18 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-07-19 10:59:18 +0000
commit6237f4d6019fbada2c3447f4531310f5e3cb5d06 (patch)
tree6caa2a63999d1abd519cec65da7911930b9405d2
parent042d5912338e0d5329f8a0e99f35e8488b7073ee (diff)
protect task switch
-rw-r--r--kernel/kernel.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 7c240f6..97c20f2 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -118,13 +118,13 @@ ISR(TIMER1_COMPB_vect, ISR_NAKED)
for (rq = kern.rq; TAILQ_EMPTY(rq); rq++)
;
- if (!rq)
- kern.reboot = 1; /* XXX */
-
- /* switch context */
- kern.cur->sp = SP;
- kern.cur = TAILQ_FIRST(rq);
- SP = kern.cur->sp;
+ if (rq) {
+ /* switch context */
+ kern.cur->sp = SP;
+ kern.cur = TAILQ_FIRST(rq);
+ SP = kern.cur->sp;
+ } else
+ kern.reboot = 1;
/* set task slice timeout */
OCR1B = TCNT1 + SLICE;