]> begriffs open source - freertos/blob - portable/Renesas/SH2A_FPU/portasm.src
Add SPDX-License-Identifier: MIT to MIT licensed files.
[freertos] / portable / Renesas / SH2A_FPU / portasm.src
1 ;/*\r
2 ; * FreeRTOS Kernel <DEVELOPMENT BRANCH>\r
3 ; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4 ; *\r
5 ; * SPDX-License-Identifier: MIT
6 ; *
7 ; * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
8 ; * this software and associated documentation files (the "Software"), to deal in\r
9 ; * the Software without restriction, including without limitation the rights to\r
10 ; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
11 ; * the Software, and to permit persons to whom the Software is furnished to do so,\r
12 ; * subject to the following conditions:\r
13 ; *\r
14 ; * The above copyright notice and this permission notice shall be included in all\r
15 ; * copies or substantial portions of the Software.\r
16 ; *\r
17 ; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
18 ; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
19 ; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
20 ; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
21 ; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
22 ; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
23 ; *\r
24 ; * https://www.FreeRTOS.org\r
25 ; * https://github.com/FreeRTOS\r
26 ; *\r
27 ; */\r
28 \r
29         .import _pxCurrentTCB\r
30         .import _vTaskSwitchContext\r
31         .import _xTaskIncrementTick\r
32 \r
33         .export _vPortStartFirstTask\r
34         .export _ulPortGetGBR\r
35         .export _vPortYieldHandler\r
36         .export _vPortPreemptiveTick\r
37         .export _vPortCooperativeTick\r
38         .export _vPortSaveFlopRegisters\r
39         .export _vPortRestoreFlopRegisters\r
40 \r
41     .section    P\r
42 \r
43         .INCLUDE "ISR_Support.inc"\r
44 \r
45 _vPortStartFirstTask:\r
46 \r
47         portRESTORE_CONTEXT\r
48 \r
49 ;-----------------------------------------------------------\r
50 \r
51 _vPortYieldHandler:\r
52 \r
53         portSAVE_CONTEXT\r
54 \r
55         mov.l   #_vTaskSwitchContext, r0\r
56         jsr             @r0\r
57         nop\r
58 \r
59         portRESTORE_CONTEXT\r
60 \r
61 ;-----------------------------------------------------------\r
62 \r
63 _vPortPreemptiveTick\r
64 \r
65         portSAVE_CONTEXT\r
66 \r
67         mov.l   #_xTaskIncrementTick, r0\r
68         jsr             @r0\r
69         nop\r
70 \r
71         mov.l   #_vTaskSwitchContext, r0\r
72         jsr             @r0\r
73         nop\r
74 \r
75         portRESTORE_CONTEXT\r
76 \r
77 ;-----------------------------------------------------------\r
78 \r
79 _vPortCooperativeTick\r
80 \r
81         portSAVE_CONTEXT\r
82 \r
83         mov.l   #_xTaskIncrementTick, r0\r
84         jsr             @r0\r
85         nop\r
86 \r
87         portRESTORE_CONTEXT\r
88 \r
89 ;-----------------------------------------------------------\r
90 \r
91 _ulPortGetGBR:\r
92 \r
93         stc.l   gbr, r0\r
94         rts\r
95         nop\r
96 \r
97 ;-----------------------------------------------------------\r
98 \r
99 _vPortSaveFlopRegisters:\r
100 \r
101         fmov.s  fr0, @-r4\r
102         fmov.s  fr1, @-r4\r
103         fmov.s  fr2, @-r4\r
104         fmov.s  fr3, @-r4\r
105         fmov.s  fr4, @-r4\r
106         fmov.s  fr5, @-r4\r
107         fmov.s  fr6, @-r4\r
108         fmov.s  fr7, @-r4\r
109         fmov.s  fr8, @-r4\r
110         fmov.s  fr9, @-r4\r
111         fmov.s  fr10, @-r4\r
112         fmov.s  fr11, @-r4\r
113         fmov.s  fr12, @-r4\r
114         fmov.s  fr13, @-r4\r
115         fmov.s  fr14, @-r4\r
116         fmov.s  fr15, @-r4\r
117         sts.l   fpul, @-r4\r
118         sts.l   fpscr, @-r4\r
119 \r
120         rts\r
121         nop\r
122 \r
123 ;-----------------------------------------------------------\r
124 \r
125 _vPortRestoreFlopRegisters:\r
126 \r
127         add.l  #-72, r4\r
128         lds.l  @r4+, fpscr\r
129         lds.l  @r4+, fpul\r
130         fmov.s @r4+, fr15\r
131         fmov.s @r4+, fr14\r
132         fmov.s @r4+, fr13\r
133         fmov.s @r4+, fr12\r
134         fmov.s @r4+, fr11\r
135         fmov.s @r4+, fr10\r
136         fmov.s @r4+, fr9\r
137         fmov.s @r4+, fr8\r
138         fmov.s @r4+, fr7\r
139         fmov.s @r4+, fr6\r
140         fmov.s @r4+, fr5\r
141         fmov.s @r4+, fr4\r
142         fmov.s @r4+, fr3\r
143         fmov.s @r4+, fr2\r
144         fmov.s @r4+, fr1\r
145         fmov.s @r4+, fr0\r
146 \r
147         rts\r
148         nop\r
149 \r
150         .end\r
151 \r