]> begriffs open source - freertos/blob - portable/SDCC/Cygnal/portmacro.h
Style: uncrusitfy
[freertos] / portable / SDCC / Cygnal / portmacro.h
1 /*\r
2  * FreeRTOS Kernel V10.3.1\r
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  */\r
26 \r
27 #ifndef PORTMACRO_H\r
28 #define PORTMACRO_H\r
29 \r
30 #if configUSE_PREEMPTION == 0\r
31     void vTimer2ISR( void ) interrupt 5;\r
32 #else\r
33     void vTimer2ISR( void ) interrupt 5 _naked;\r
34 #endif\r
35 \r
36 void vSerialISR( void ) interrupt 4;\r
37 \r
38 \r
39 /*-----------------------------------------------------------\r
40  * Port specific definitions.\r
41  *\r
42  * The settings in this file configure FreeRTOS correctly for the\r
43  * given hardware and compiler.\r
44  *\r
45  * These settings should not be altered.\r
46  *-----------------------------------------------------------\r
47  */\r
48 \r
49 /* Type definitions. */\r
50 #define portCHAR          char\r
51 #define portFLOAT         float\r
52 #define portDOUBLE        float\r
53 #define portLONG          long\r
54 #define portSHORT         short\r
55 #define portSTACK_TYPE    uint8_t\r
56 #define portBASE_TYPE     char\r
57 \r
58 typedef portSTACK_TYPE   StackType_t;\r
59 typedef signed char      BaseType_t;\r
60 typedef unsigned char    UBaseType_t;\r
61 \r
62 #if ( configUSE_16_BIT_TICKS == 1 )\r
63     typedef uint16_t     TickType_t;\r
64     #define portMAX_DELAY    ( TickType_t ) 0xffff\r
65 #else\r
66     typedef uint32_t     TickType_t;\r
67     #define portMAX_DELAY    ( TickType_t ) 0xffffffffUL\r
68 #endif\r
69 /*-----------------------------------------------------------*/\r
70 \r
71 /* Critical section management. */\r
72 #define portENTER_CRITICAL() \\r
73     _asm                     \\r
74     push ACC                 \\r
75     push IE                  \\r
76     _endasm;                 \\r
77     EA                                 = 0;\r
78 \r
79 #define portEXIT_CRITICAL()                    \\r
80     _asm                                       \\r
81     pop ACC                                    \\r
82     _endasm;                                   \\r
83     ACC                               &= 0x80; \\r
84     IE                                |= ACC;  \\r
85     _asm                                       \\r
86     pop ACC                                    \\r
87         _endasm;\r
88 \r
89 #define portDISABLE_INTERRUPTS()    EA = 0;\r
90 #define portENABLE_INTERRUPTS()     EA = 1;\r
91 /*-----------------------------------------------------------*/\r
92 \r
93 /* Hardware specifics. */\r
94 #define portBYTE_ALIGNMENT    1\r
95 #define portSTACK_GROWTH      ( 1 )\r
96 #define portTICK_PERIOD_MS    ( ( uint32_t ) 1000 / configTICK_RATE_HZ )\r
97 /*-----------------------------------------------------------*/\r
98 \r
99 /* Task utilities. */\r
100 void vPortYield( void ) _naked;\r
101 #define portYIELD()    vPortYield();\r
102 /*-----------------------------------------------------------*/\r
103 \r
104 #define portNOP() \\r
105     _asm          \\r
106     nop           \\r
107     _endasm;\r
108 \r
109 /*-----------------------------------------------------------*/\r
110 \r
111 /* Task function macros as described on the FreeRTOS.org WEB site. */\r
112 #define portTASK_FUNCTION_PROTO( vFunction, pvParameters )    void vFunction( void * pvParameters )\r
113 #define portTASK_FUNCTION( vFunction, pvParameters )          void vFunction( void * pvParameters )\r
114 \r
115 #endif /* PORTMACRO_H */\r