]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_AtmelStudio/libboard_samv7-ek/source/syscalls.c
Add SAMV7 (Cortex-M7) demo for Atmel Studio.
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_AtmelStudio / libboard_samv7-ek / source / syscalls.c
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License \r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2011, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29 \r
30 /**\r
31  * \file syscalls.c\r
32  *\r
33  * Implementation of newlib syscall.\r
34  *\r
35  */\r
36 \r
37 /*----------------------------------------------------------------------------\r
38  *        Headers\r
39  *----------------------------------------------------------------------------*/\r
40 \r
41 \r
42 #include "board.h"\r
43 \r
44 #include <stdio.h>\r
45 #include <stdarg.h>\r
46 #include <errno.h>\r
47 #include <sys/types.h>\r
48 #include <sys/stat.h>\r
49 \r
50 /*----------------------------------------------------------------------------\r
51  *        Exported variables\r
52  *----------------------------------------------------------------------------*/\r
53 \r
54 #undef errno\r
55 extern int errno;\r
56 extern int  _sheap;\r
57 \r
58 /*----------------------------------------------------------------------------\r
59  *        Exported functions\r
60  *----------------------------------------------------------------------------*/\r
61 extern void _exit( int status );\r
62 extern void _kill( int pid, int sig );\r
63 extern int _getpid ( void );\r
64 \r
65 extern caddr_t _sbrk ( int incr )\r
66 {\r
67         static unsigned char *heap = NULL;\r
68         unsigned char *prev_sheap;\r
69 \r
70         if ( heap == NULL ) {\r
71                 heap = (unsigned char *)&_sheap;\r
72         }\r
73         prev_sheap = heap;\r
74 \r
75         heap += incr;\r
76 \r
77         return (caddr_t) prev_sheap;\r
78 }\r
79 \r
80 extern int link( char *old, char *new )\r
81 {\r
82         ( void ) old;\r
83         ( void ) new;\r
84         return -1;\r
85 }\r
86 \r
87 extern int _close( int file )\r
88 {\r
89         ( void ) file;\r
90         return -1;\r
91 }\r
92 \r
93 extern int _fstat( int file, struct stat *st )\r
94 {\r
95         ( void ) file;\r
96         st->st_mode = S_IFCHR;\r
97 \r
98         return 0;\r
99 }\r
100 \r
101 extern int _isatty( int file )\r
102 {\r
103         ( void ) file;\r
104         return 1;\r
105 }\r
106 \r
107 extern int _lseek( int file, int ptr, int dir )\r
108 {\r
109         ( void ) file;\r
110         ( void ) ptr;\r
111         ( void ) dir;\r
112         return 0;\r
113 }\r
114 \r
115 extern int _read(int file, char *ptr, int len)\r
116 {\r
117         ( void ) file;\r
118         ( void ) ptr;\r
119         ( void ) len;\r
120         return 0;\r
121 }\r
122 \r
123 extern int _write( int file, char *ptr, int len )\r
124 {\r
125         int iIndex;\r
126 \r
127         ( void ) file;\r
128 \r
129         //    for (; *ptr != 0; ptr++ )\r
130         for ( iIndex=0; iIndex < len; iIndex++, ptr++ ) {\r
131                 DBG_PutChar( *ptr );\r
132         }\r
133 \r
134         return iIndex;\r
135 }\r
136 \r
137 extern void _exit( int status )\r
138 {\r
139         printf( "Exiting with status %d.\n", status );\r
140         for (;;);\r
141 }\r
142 \r
143 extern void _kill( int pid, int sig )\r
144 {\r
145         ( void ) pid;\r
146         ( void ) sig;\r
147         return;\r
148 }\r
149 \r
150 extern int _getpid ( void )\r
151 {\r
152         return -1;\r
153 }\r