xref: /btstack/3rd-party/segger-rtt/SEGGER_RTT_Syscalls_KEIL.c (revision 779af47be2a26fca484358b6dbf3172ffb019f79)
17dc86dfdSMatthias Ringwald /*********************************************************************
2*779af47bSMatthias Ringwald *                    SEGGER Microcontroller GmbH                     *
37dc86dfdSMatthias Ringwald *       Solutions for real time microcontroller applications         *
47dc86dfdSMatthias Ringwald **********************************************************************
57dc86dfdSMatthias Ringwald *                                                                    *
6*779af47bSMatthias Ringwald *            (c) 1995 - 2018 SEGGER Microcontroller GmbH             *
77dc86dfdSMatthias Ringwald *                                                                    *
87dc86dfdSMatthias Ringwald *       www.segger.com     Support: [email protected]               *
97dc86dfdSMatthias Ringwald *                                                                    *
107dc86dfdSMatthias Ringwald **********************************************************************
117dc86dfdSMatthias Ringwald *                                                                    *
127dc86dfdSMatthias Ringwald *       SEGGER RTT * Real Time Transfer for embedded targets         *
137dc86dfdSMatthias Ringwald *                                                                    *
147dc86dfdSMatthias Ringwald **********************************************************************
157dc86dfdSMatthias Ringwald *                                                                    *
167dc86dfdSMatthias Ringwald * All rights reserved.                                               *
177dc86dfdSMatthias Ringwald *                                                                    *
187dc86dfdSMatthias Ringwald * SEGGER strongly recommends to not make any changes                 *
197dc86dfdSMatthias Ringwald * to or modify the source code of this software in order to stay     *
207dc86dfdSMatthias Ringwald * compatible with the RTT protocol and J-Link.                       *
217dc86dfdSMatthias Ringwald *                                                                    *
227dc86dfdSMatthias Ringwald * Redistribution and use in source and binary forms, with or         *
237dc86dfdSMatthias Ringwald * without modification, are permitted provided that the following    *
247dc86dfdSMatthias Ringwald * conditions are met:                                                *
257dc86dfdSMatthias Ringwald *                                                                    *
267dc86dfdSMatthias Ringwald * o Redistributions of source code must retain the above copyright   *
277dc86dfdSMatthias Ringwald *   notice, this list of conditions and the following disclaimer.    *
287dc86dfdSMatthias Ringwald *                                                                    *
297dc86dfdSMatthias Ringwald * o Redistributions in binary form must reproduce the above          *
307dc86dfdSMatthias Ringwald *   copyright notice, this list of conditions and the following      *
317dc86dfdSMatthias Ringwald *   disclaimer in the documentation and/or other materials provided  *
327dc86dfdSMatthias Ringwald *   with the distribution.                                           *
337dc86dfdSMatthias Ringwald *                                                                    *
34*779af47bSMatthias Ringwald * o Neither the name of SEGGER Microcontroller GmbH                  *
357dc86dfdSMatthias Ringwald *   nor the names of its contributors may be used to endorse or      *
367dc86dfdSMatthias Ringwald *   promote products derived from this software without specific     *
377dc86dfdSMatthias Ringwald *   prior written permission.                                        *
387dc86dfdSMatthias Ringwald *                                                                    *
397dc86dfdSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND             *
407dc86dfdSMatthias Ringwald * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,        *
417dc86dfdSMatthias Ringwald * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF           *
427dc86dfdSMatthias Ringwald * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE           *
437dc86dfdSMatthias Ringwald * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
447dc86dfdSMatthias Ringwald * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR           *
457dc86dfdSMatthias Ringwald * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  *
467dc86dfdSMatthias Ringwald * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;    *
477dc86dfdSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF      *
487dc86dfdSMatthias Ringwald * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT          *
497dc86dfdSMatthias Ringwald * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  *
507dc86dfdSMatthias Ringwald * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH   *
517dc86dfdSMatthias Ringwald * DAMAGE.                                                            *
527dc86dfdSMatthias Ringwald *                                                                    *
537dc86dfdSMatthias Ringwald **********************************************************************
547dc86dfdSMatthias Ringwald ---------------------------END-OF-HEADER------------------------------
557dc86dfdSMatthias Ringwald File    : RTT_Syscalls_KEIL.c
567dc86dfdSMatthias Ringwald Purpose : Retargeting module for KEIL MDK-CM3.
577dc86dfdSMatthias Ringwald           Low-level functions for using printf() via RTT
58*779af47bSMatthias Ringwald Revision: $Rev: 16265 $
597dc86dfdSMatthias Ringwald ----------------------------------------------------------------------
607dc86dfdSMatthias Ringwald */
617dc86dfdSMatthias Ringwald #ifdef __CC_ARM
627dc86dfdSMatthias Ringwald 
637dc86dfdSMatthias Ringwald #include <stdio.h>
647dc86dfdSMatthias Ringwald #include <stdlib.h>
657dc86dfdSMatthias Ringwald #include <string.h>
667dc86dfdSMatthias Ringwald #include <rt_sys.h>
677dc86dfdSMatthias Ringwald #include <rt_misc.h>
687dc86dfdSMatthias Ringwald 
697dc86dfdSMatthias Ringwald #include "SEGGER_RTT.h"
707dc86dfdSMatthias Ringwald /*********************************************************************
717dc86dfdSMatthias Ringwald *
727dc86dfdSMatthias Ringwald *       #pragmas
737dc86dfdSMatthias Ringwald *
747dc86dfdSMatthias Ringwald **********************************************************************
757dc86dfdSMatthias Ringwald */
767dc86dfdSMatthias Ringwald #pragma import(__use_no_semihosting)
777dc86dfdSMatthias Ringwald 
787dc86dfdSMatthias Ringwald #ifdef _MICROLIB
797dc86dfdSMatthias Ringwald   #pragma import(__use_full_stdio)
807dc86dfdSMatthias Ringwald #endif
817dc86dfdSMatthias Ringwald 
827dc86dfdSMatthias Ringwald /*********************************************************************
837dc86dfdSMatthias Ringwald *
847dc86dfdSMatthias Ringwald *       Defines non-configurable
857dc86dfdSMatthias Ringwald *
867dc86dfdSMatthias Ringwald **********************************************************************
877dc86dfdSMatthias Ringwald */
887dc86dfdSMatthias Ringwald 
897dc86dfdSMatthias Ringwald /* Standard IO device handles - arbitrary, but any real file system handles must be
907dc86dfdSMatthias Ringwald    less than 0x8000. */
917dc86dfdSMatthias Ringwald #define STDIN             0x8001    // Standard Input Stream
927dc86dfdSMatthias Ringwald #define STDOUT            0x8002    // Standard Output Stream
937dc86dfdSMatthias Ringwald #define STDERR            0x8003    // Standard Error Stream
947dc86dfdSMatthias Ringwald 
957dc86dfdSMatthias Ringwald /*********************************************************************
967dc86dfdSMatthias Ringwald *
977dc86dfdSMatthias Ringwald *       Public const
987dc86dfdSMatthias Ringwald *
997dc86dfdSMatthias Ringwald **********************************************************************
1007dc86dfdSMatthias Ringwald */
1017dc86dfdSMatthias Ringwald //const char __stdin_name[]  = "STDIN";
1027dc86dfdSMatthias Ringwald const char __stdout_name[] = "STDOUT";
1037dc86dfdSMatthias Ringwald const char __stderr_name[] = "STDERR";
1047dc86dfdSMatthias Ringwald 
1057dc86dfdSMatthias Ringwald /*********************************************************************
1067dc86dfdSMatthias Ringwald *
1077dc86dfdSMatthias Ringwald *       Public code
1087dc86dfdSMatthias Ringwald *
1097dc86dfdSMatthias Ringwald **********************************************************************
1107dc86dfdSMatthias Ringwald */
1117dc86dfdSMatthias Ringwald 
1127dc86dfdSMatthias Ringwald /*********************************************************************
1137dc86dfdSMatthias Ringwald *
1147dc86dfdSMatthias Ringwald *       _ttywrch
1157dc86dfdSMatthias Ringwald *
1167dc86dfdSMatthias Ringwald *  Function description:
1177dc86dfdSMatthias Ringwald *    Outputs a character to the console
1187dc86dfdSMatthias Ringwald *
1197dc86dfdSMatthias Ringwald *  Parameters:
1207dc86dfdSMatthias Ringwald *    c    - character to output
1217dc86dfdSMatthias Ringwald *
1227dc86dfdSMatthias Ringwald */
1237dc86dfdSMatthias Ringwald void _ttywrch(int c) {
1247dc86dfdSMatthias Ringwald   fputc(c, stdout); // stdout
1257dc86dfdSMatthias Ringwald   fflush(stdout);
1267dc86dfdSMatthias Ringwald }
1277dc86dfdSMatthias Ringwald 
1287dc86dfdSMatthias Ringwald /*********************************************************************
1297dc86dfdSMatthias Ringwald *
1307dc86dfdSMatthias Ringwald *       _sys_open
1317dc86dfdSMatthias Ringwald *
1327dc86dfdSMatthias Ringwald *  Function description:
1337dc86dfdSMatthias Ringwald *    Opens the device/file in order to do read/write operations
1347dc86dfdSMatthias Ringwald *
1357dc86dfdSMatthias Ringwald *  Parameters:
1367dc86dfdSMatthias Ringwald *    sName        - sName of the device/file to open
1377dc86dfdSMatthias Ringwald *    OpenMode    - This parameter is currently ignored
1387dc86dfdSMatthias Ringwald *
1397dc86dfdSMatthias Ringwald *  Return value:
1407dc86dfdSMatthias Ringwald *    != 0     - Handle to the object to open, otherwise
1417dc86dfdSMatthias Ringwald *    == 0     -"device" is not handled by this module
1427dc86dfdSMatthias Ringwald *
1437dc86dfdSMatthias Ringwald */
1447dc86dfdSMatthias Ringwald FILEHANDLE _sys_open(const char * sName, int OpenMode) {
1457dc86dfdSMatthias Ringwald   (void)OpenMode;
1467dc86dfdSMatthias Ringwald   // Register standard Input Output devices.
1477dc86dfdSMatthias Ringwald   if (strcmp(sName, __stdout_name) == 0) {
1487dc86dfdSMatthias Ringwald     return (STDOUT);
1497dc86dfdSMatthias Ringwald   } else if (strcmp(sName, __stderr_name) == 0) {
1507dc86dfdSMatthias Ringwald     return (STDERR);
1517dc86dfdSMatthias Ringwald   } else
1527dc86dfdSMatthias Ringwald   return (0);  // Not implemented
1537dc86dfdSMatthias Ringwald }
1547dc86dfdSMatthias Ringwald 
1557dc86dfdSMatthias Ringwald /*********************************************************************
1567dc86dfdSMatthias Ringwald *
1577dc86dfdSMatthias Ringwald *       _sys_close
1587dc86dfdSMatthias Ringwald *
1597dc86dfdSMatthias Ringwald *  Function description:
1607dc86dfdSMatthias Ringwald *    Closes the handle to the open device/file
1617dc86dfdSMatthias Ringwald *
1627dc86dfdSMatthias Ringwald *  Parameters:
1637dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
1647dc86dfdSMatthias Ringwald *
1657dc86dfdSMatthias Ringwald *  Return value:
1667dc86dfdSMatthias Ringwald *    0     - device/file closed
1677dc86dfdSMatthias Ringwald *
1687dc86dfdSMatthias Ringwald */
1697dc86dfdSMatthias Ringwald int _sys_close(FILEHANDLE hFile) {
1707dc86dfdSMatthias Ringwald   (void)hFile;
1717dc86dfdSMatthias Ringwald   return 0;  // Not implemented
1727dc86dfdSMatthias Ringwald }
1737dc86dfdSMatthias Ringwald 
1747dc86dfdSMatthias Ringwald /*********************************************************************
1757dc86dfdSMatthias Ringwald *
1767dc86dfdSMatthias Ringwald *       _sys_write
1777dc86dfdSMatthias Ringwald *
1787dc86dfdSMatthias Ringwald *  Function description:
1797dc86dfdSMatthias Ringwald *    Writes the data to an open handle.
1807dc86dfdSMatthias Ringwald *    Currently this function only outputs data to the console
1817dc86dfdSMatthias Ringwald *
1827dc86dfdSMatthias Ringwald *  Parameters:
1837dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
1847dc86dfdSMatthias Ringwald *    pBuffer  - Pointer to the data that shall be written
1857dc86dfdSMatthias Ringwald *    NumBytes      - Number of bytes to write
1867dc86dfdSMatthias Ringwald *    Mode     - The Mode that shall be used
1877dc86dfdSMatthias Ringwald *
1887dc86dfdSMatthias Ringwald *  Return value:
1897dc86dfdSMatthias Ringwald *    Number of bytes *not* written to the file/device
1907dc86dfdSMatthias Ringwald *
1917dc86dfdSMatthias Ringwald */
1927dc86dfdSMatthias Ringwald int _sys_write(FILEHANDLE hFile, const unsigned char * pBuffer, unsigned NumBytes, int Mode) {
1937dc86dfdSMatthias Ringwald   int r = 0;
1947dc86dfdSMatthias Ringwald 
1957dc86dfdSMatthias Ringwald   (void)Mode;
1967dc86dfdSMatthias Ringwald   if (hFile == STDOUT) {
1977dc86dfdSMatthias Ringwald     return NumBytes - SEGGER_RTT_Write(0, (const char*)pBuffer, NumBytes);
1987dc86dfdSMatthias Ringwald   }
1997dc86dfdSMatthias Ringwald   return r;
2007dc86dfdSMatthias Ringwald }
2017dc86dfdSMatthias Ringwald 
2027dc86dfdSMatthias Ringwald /*********************************************************************
2037dc86dfdSMatthias Ringwald *
2047dc86dfdSMatthias Ringwald *       _sys_read
2057dc86dfdSMatthias Ringwald *
2067dc86dfdSMatthias Ringwald *  Function description:
2077dc86dfdSMatthias Ringwald *    Reads data from an open handle.
2087dc86dfdSMatthias Ringwald *    Currently this modules does nothing.
2097dc86dfdSMatthias Ringwald *
2107dc86dfdSMatthias Ringwald *  Parameters:
2117dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
2127dc86dfdSMatthias Ringwald *    pBuffer  - Pointer to buffer to store the read data
2137dc86dfdSMatthias Ringwald *    NumBytes      - Number of bytes to read
2147dc86dfdSMatthias Ringwald *    Mode     - The Mode that shall be used
2157dc86dfdSMatthias Ringwald *
2167dc86dfdSMatthias Ringwald *  Return value:
2177dc86dfdSMatthias Ringwald *    Number of bytes read from the file/device
2187dc86dfdSMatthias Ringwald *
2197dc86dfdSMatthias Ringwald */
2207dc86dfdSMatthias Ringwald int _sys_read(FILEHANDLE hFile, unsigned char * pBuffer, unsigned NumBytes, int Mode) {
2217dc86dfdSMatthias Ringwald   (void)hFile;
2227dc86dfdSMatthias Ringwald   (void)pBuffer;
2237dc86dfdSMatthias Ringwald   (void)NumBytes;
2247dc86dfdSMatthias Ringwald   (void)Mode;
2257dc86dfdSMatthias Ringwald   return (0);  // Not implemented
2267dc86dfdSMatthias Ringwald }
2277dc86dfdSMatthias Ringwald 
2287dc86dfdSMatthias Ringwald /*********************************************************************
2297dc86dfdSMatthias Ringwald *
2307dc86dfdSMatthias Ringwald *       _sys_istty
2317dc86dfdSMatthias Ringwald *
2327dc86dfdSMatthias Ringwald *  Function description:
2337dc86dfdSMatthias Ringwald *    This function shall return whether the opened file
2347dc86dfdSMatthias Ringwald *    is a console device or not.
2357dc86dfdSMatthias Ringwald *
2367dc86dfdSMatthias Ringwald *  Parameters:
2377dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
2387dc86dfdSMatthias Ringwald *
2397dc86dfdSMatthias Ringwald *  Return value:
2407dc86dfdSMatthias Ringwald *    1       - Device is     a console
2417dc86dfdSMatthias Ringwald *    0       - Device is not a console
2427dc86dfdSMatthias Ringwald *
2437dc86dfdSMatthias Ringwald */
2447dc86dfdSMatthias Ringwald int _sys_istty(FILEHANDLE hFile) {
2457dc86dfdSMatthias Ringwald   if (hFile > 0x8000) {
2467dc86dfdSMatthias Ringwald     return (1);
2477dc86dfdSMatthias Ringwald   }
2487dc86dfdSMatthias Ringwald   return (0);  // Not implemented
2497dc86dfdSMatthias Ringwald }
2507dc86dfdSMatthias Ringwald 
2517dc86dfdSMatthias Ringwald /*********************************************************************
2527dc86dfdSMatthias Ringwald *
2537dc86dfdSMatthias Ringwald *       _sys_seek
2547dc86dfdSMatthias Ringwald *
2557dc86dfdSMatthias Ringwald *  Function description:
2567dc86dfdSMatthias Ringwald *    Seeks via the file to a specific position
2577dc86dfdSMatthias Ringwald *
2587dc86dfdSMatthias Ringwald *  Parameters:
2597dc86dfdSMatthias Ringwald *    hFile  - Handle to a file opened via _sys_open
2607dc86dfdSMatthias Ringwald *    Pos    -
2617dc86dfdSMatthias Ringwald *
2627dc86dfdSMatthias Ringwald *  Return value:
2637dc86dfdSMatthias Ringwald *    int       -
2647dc86dfdSMatthias Ringwald *
2657dc86dfdSMatthias Ringwald */
2667dc86dfdSMatthias Ringwald int _sys_seek(FILEHANDLE hFile, long Pos) {
2677dc86dfdSMatthias Ringwald   (void)hFile;
2687dc86dfdSMatthias Ringwald   (void)Pos;
2697dc86dfdSMatthias Ringwald   return (0);  // Not implemented
2707dc86dfdSMatthias Ringwald }
2717dc86dfdSMatthias Ringwald 
2727dc86dfdSMatthias Ringwald /*********************************************************************
2737dc86dfdSMatthias Ringwald *
2747dc86dfdSMatthias Ringwald *       _sys_ensure
2757dc86dfdSMatthias Ringwald *
2767dc86dfdSMatthias Ringwald *  Function description:
2777dc86dfdSMatthias Ringwald *
2787dc86dfdSMatthias Ringwald *
2797dc86dfdSMatthias Ringwald *  Parameters:
2807dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
2817dc86dfdSMatthias Ringwald *
2827dc86dfdSMatthias Ringwald *  Return value:
2837dc86dfdSMatthias Ringwald *    int       -
2847dc86dfdSMatthias Ringwald *
2857dc86dfdSMatthias Ringwald */
2867dc86dfdSMatthias Ringwald int _sys_ensure(FILEHANDLE hFile) {
2877dc86dfdSMatthias Ringwald   (void)hFile;
2887dc86dfdSMatthias Ringwald   return (-1);  // Not implemented
2897dc86dfdSMatthias Ringwald }
2907dc86dfdSMatthias Ringwald 
2917dc86dfdSMatthias Ringwald /*********************************************************************
2927dc86dfdSMatthias Ringwald *
2937dc86dfdSMatthias Ringwald *       _sys_flen
2947dc86dfdSMatthias Ringwald *
2957dc86dfdSMatthias Ringwald *  Function description:
2967dc86dfdSMatthias Ringwald *    Returns the length of the opened file handle
2977dc86dfdSMatthias Ringwald *
2987dc86dfdSMatthias Ringwald *  Parameters:
2997dc86dfdSMatthias Ringwald *    hFile    - Handle to a file opened via _sys_open
3007dc86dfdSMatthias Ringwald *
3017dc86dfdSMatthias Ringwald *  Return value:
3027dc86dfdSMatthias Ringwald *    Length of the file
3037dc86dfdSMatthias Ringwald *
3047dc86dfdSMatthias Ringwald */
3057dc86dfdSMatthias Ringwald long _sys_flen(FILEHANDLE hFile) {
3067dc86dfdSMatthias Ringwald   (void)hFile;
3077dc86dfdSMatthias Ringwald   return (0);  // Not implemented
3087dc86dfdSMatthias Ringwald }
3097dc86dfdSMatthias Ringwald 
3107dc86dfdSMatthias Ringwald /*********************************************************************
3117dc86dfdSMatthias Ringwald *
3127dc86dfdSMatthias Ringwald *       _sys_tmpnam
3137dc86dfdSMatthias Ringwald *
3147dc86dfdSMatthias Ringwald *  Function description:
3157dc86dfdSMatthias Ringwald *    This function converts the file number fileno for a temporary
3167dc86dfdSMatthias Ringwald *    file to a unique filename, for example, tmp0001.
3177dc86dfdSMatthias Ringwald *
3187dc86dfdSMatthias Ringwald *  Parameters:
3197dc86dfdSMatthias Ringwald *    pBuffer    - Pointer to a buffer to store the name
3207dc86dfdSMatthias Ringwald *    FileNum    - file number to convert
3217dc86dfdSMatthias Ringwald *    MaxLen     - Size of the buffer
3227dc86dfdSMatthias Ringwald *
3237dc86dfdSMatthias Ringwald *  Return value:
3247dc86dfdSMatthias Ringwald *     1 - Error
3257dc86dfdSMatthias Ringwald *     0 - Success
3267dc86dfdSMatthias Ringwald *
3277dc86dfdSMatthias Ringwald */
3287dc86dfdSMatthias Ringwald int _sys_tmpnam(char * pBuffer, int FileNum, unsigned MaxLen) {
3297dc86dfdSMatthias Ringwald   (void)pBuffer;
3307dc86dfdSMatthias Ringwald   (void)FileNum;
3317dc86dfdSMatthias Ringwald   (void)MaxLen;
3327dc86dfdSMatthias Ringwald   return (1);  // Not implemented
3337dc86dfdSMatthias Ringwald }
3347dc86dfdSMatthias Ringwald 
3357dc86dfdSMatthias Ringwald /*********************************************************************
3367dc86dfdSMatthias Ringwald *
3377dc86dfdSMatthias Ringwald *       _sys_command_string
3387dc86dfdSMatthias Ringwald *
3397dc86dfdSMatthias Ringwald *  Function description:
3407dc86dfdSMatthias Ringwald *    This function shall execute a system command.
3417dc86dfdSMatthias Ringwald *
3427dc86dfdSMatthias Ringwald *  Parameters:
3437dc86dfdSMatthias Ringwald *    cmd    - Pointer to the command string
3447dc86dfdSMatthias Ringwald *    len    - Length of the string
3457dc86dfdSMatthias Ringwald *
3467dc86dfdSMatthias Ringwald *  Return value:
3477dc86dfdSMatthias Ringwald *    == NULL - Command was not successfully executed
3487dc86dfdSMatthias Ringwald *    == sCmd - Command was passed successfully
3497dc86dfdSMatthias Ringwald *
3507dc86dfdSMatthias Ringwald */
3517dc86dfdSMatthias Ringwald char * _sys_command_string(char * cmd, int len) {
3527dc86dfdSMatthias Ringwald   (void)len;
3537dc86dfdSMatthias Ringwald   return cmd;  // Not implemented
3547dc86dfdSMatthias Ringwald }
3557dc86dfdSMatthias Ringwald 
3567dc86dfdSMatthias Ringwald /*********************************************************************
3577dc86dfdSMatthias Ringwald *
3587dc86dfdSMatthias Ringwald *       _sys_exit
3597dc86dfdSMatthias Ringwald *
3607dc86dfdSMatthias Ringwald *  Function description:
3617dc86dfdSMatthias Ringwald *    This function is called when the application returns from main
3627dc86dfdSMatthias Ringwald *
3637dc86dfdSMatthias Ringwald *  Parameters:
3647dc86dfdSMatthias Ringwald *    ReturnCode    - Return code from the main function
3657dc86dfdSMatthias Ringwald *
3667dc86dfdSMatthias Ringwald *
3677dc86dfdSMatthias Ringwald */
3687dc86dfdSMatthias Ringwald void _sys_exit(int ReturnCode) {
3697dc86dfdSMatthias Ringwald   (void)ReturnCode;
3707dc86dfdSMatthias Ringwald   while (1);  // Not implemented
3717dc86dfdSMatthias Ringwald }
3727dc86dfdSMatthias Ringwald 
3737dc86dfdSMatthias Ringwald #endif
3747dc86dfdSMatthias Ringwald /*************************** End of file ****************************/
375