]> git.sur5r.net Git - freertos/blob - FreeRTOS/Source/portable/GCC/RL78/portasm.S
Update to MIT licensed FreeRTOS V10.0.0 - see https://www.freertos.org/History.txt
[freertos] / FreeRTOS / Source / portable / GCC / RL78 / portasm.S
1 /*\r
2  * FreeRTOS Kernel V10.0.0\r
3  * Copyright (C) 2017 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. If you wish to use our Amazon\r
14  * FreeRTOS name, please do so in a fair use way that does not cause confusion.\r
15  *\r
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
22  *\r
23  * http://www.FreeRTOS.org\r
24  * http://aws.amazon.com/freertos\r
25  *\r
26  * 1 tab == 4 spaces!\r
27  */\r
28 \r
29 #include "FreeRTOSConfig.h"\r
30 #include "ISR_Support.h"\r
31 \r
32         .global    _vPortYield\r
33         .global    _vPortStartFirstTask\r
34         .global    _vPortTickISR\r
35 \r
36         .extern    _vTaskSwitchContext\r
37         .extern    _xTaskIncrementTick\r
38 \r
39         .text\r
40         .align 2\r
41 \r
42 /* FreeRTOS yield handler.  This is installed as the BRK software interrupt\r
43 handler. */\r
44 _vPortYield:\r
45         /* Save the context of the current task. */\r
46         portSAVE_CONTEXT\r
47         /* Call the scheduler to select the next task. */\r
48         call      !!_vTaskSwitchContext\r
49         /* Restore the context of the next task to run. */\r
50         portRESTORE_CONTEXT\r
51         retb\r
52 \r
53 \r
54 /* Starts the scheduler by restoring the context of the task that will execute\r
55 first. */\r
56         .align 2\r
57 _vPortStartFirstTask:\r
58         /* Restore the context of whichever task will execute first. */\r
59         portRESTORE_CONTEXT\r
60         /* An interrupt stack frame is used so the task is started using RETI. */\r
61         reti\r
62 \r
63 /* FreeRTOS tick handler.  This is installed as the interval timer interrupt\r
64 handler. */\r
65         .align 2\r
66 _vPortTickISR:\r
67 \r
68         /* Save the context of the currently executing task. */\r
69         portSAVE_CONTEXT\r
70         /* Call the RTOS tick function. */\r
71         call      !!_xTaskIncrementTick\r
72 #if configUSE_PREEMPTION == 1\r
73         /* Select the next task to run. */\r
74         call      !!_vTaskSwitchContext\r
75 #endif\r
76         /* Retore the context of whichever task will run next. */\r
77         portRESTORE_CONTEXT\r
78         reti\r
79 \r
80         .end\r
81 \r