forked from RIOT-OS/RIOT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstartup.c
51 lines (42 loc) · 1.21 KB
/
startup.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
* Copyright (C) 2014 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup cpu
* @{
*
* @file
* @brief Calls startup functions on MSP430-based platforms
*
* @author Kaspar Schleiser <kaspar@schleiser.de>
* @author Oliver Hahm <oliver.hahm@inria.fr>
*
* @}
*/
#include <stdio.h>
#include "kernel_init.h"
#include "irq.h"
#include "log.h"
extern void board_init(void);
/**
* Leave some extra space in the stack to allows us to finish the kernel
* initialization procedure. __heap_end is set the current stack, minus
* STACK_EXTRA since there is still code to execute.
*/
#define STACK_EXTRA 32
__attribute__((constructor)) static void startup(void)
{
/* use putchar so the linker links it in: */
putchar('\n');
board_init();
LOG_INFO("RIOT MSP430 hardware initialization complete.\n");
/* save current stack pointer as top of heap before enter the thread mode */
extern char *__heap_end;
__asm__ __volatile__("mov r1, %0" : "=r"(__heap_end));
__heap_end -= STACK_EXTRA;
kernel_init();
}