]> git.sur5r.net Git - freertos/blob - FreeRTOS/Source/portable/GCC/RL78/portasm.S
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Source / portable / GCC / RL78 / portasm.S
1 /*\r
2  * FreeRTOS Kernel V10.3.0\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  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 #include "FreeRTOSConfig.h"\r
29 #include "ISR_Support.h"\r
30 \r
31         .global    _vPortYield\r
32         .global    _vPortStartFirstTask\r
33         .global    _vPortTickISR\r
34 \r
35         .extern    _vTaskSwitchContext\r
36         .extern    _xTaskIncrementTick\r
37 \r
38         .text\r
39         .align 2\r
40 \r
41 /* FreeRTOS yield handler.  This is installed as the BRK software interrupt\r
42 handler. */\r
43 _vPortYield:\r
44         /* Save the context of the current task. */\r
45         portSAVE_CONTEXT\r
46         /* Call the scheduler to select the next task. */\r
47         call      !!_vTaskSwitchContext\r
48         /* Restore the context of the next task to run. */\r
49         portRESTORE_CONTEXT\r
50         retb\r
51 \r
52 \r
53 /* Starts the scheduler by restoring the context of the task that will execute\r
54 first. */\r
55         .align 2\r
56 _vPortStartFirstTask:\r
57         /* Restore the context of whichever task will execute first. */\r
58         portRESTORE_CONTEXT\r
59         /* An interrupt stack frame is used so the task is started using RETI. */\r
60         reti\r
61 \r
62 /* FreeRTOS tick handler.  This is installed as the interval timer interrupt\r
63 handler. */\r
64         .align 2\r
65 _vPortTickISR:\r
66 \r
67         /* Save the context of the currently executing task. */\r
68         portSAVE_CONTEXT\r
69         /* Call the RTOS tick function. */\r
70         call      !!_xTaskIncrementTick\r
71 #if configUSE_PREEMPTION == 1\r
72         /* Select the next task to run. */\r
73         call      !!_vTaskSwitchContext\r
74 #endif\r
75         /* Retore the context of whichever task will run next. */\r
76         portRESTORE_CONTEXT\r
77         reti\r
78 \r
79         .end\r
80 \r