aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2011-11-06 18:48:29 +0000
committerDimitri Sokolyuk <demon@dim13.org>2011-11-06 18:48:29 +0000
commit0195367cba4a06afb50af6ee6485bde5c5ddf8f9 (patch)
tree3d809627c88b3708e8e05061906e6828529d6cd7
parentb7e673e3421c5ddec5ec4fd978cd6616d49d528c (diff)
replace custom `bzero' with library function
-rw-r--r--kernel/kernel.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index b33c5f3..ddabff9 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -20,6 +20,7 @@
*/
#include <inttypes.h>
+#include <string.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "kernel.h"
@@ -140,7 +141,7 @@ exec(void (*fun)(void *), uint8_t stack, void *args)
{
struct task *t;
uint8_t *sp;
- uint8_t i;
+ uint16_t *spw;
cli();
@@ -151,14 +152,14 @@ exec(void (*fun)(void *), uint8_t stack, void *args)
*sp-- = LO8(fun); /* PC(lo) */
*sp-- = HI8(fun); /* PC(hi) */
- for (i = 0; i < 25; i++) /* r1, r0, SREG, r2-r23 */
- *sp-- = 0;
+ sp -= 25;
+ memset(sp, 0, 25); /* r1, r0, SREG, r2-r23 */
*sp-- = LO8(args); /* r24 */
*sp-- = HI8(args); /* r25 */
- for (i = 0; i < 6; i++) /* r26-r31 */
- *sp-- = 0;
+ sp -= 6;
+ memset(sp, 0, 6); /* r26-r31 */
t = ++kernel.last;