]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_STM32F103_IAR/STM32F10xFWLib/src/cortexm3_macro.s
UpdUpdate IAR projects to use Embedded Workbench V5.11.
[freertos] / Demo / CORTEX_STM32F103_IAR / STM32F10xFWLib / src / cortexm3_macro.s
1 ;******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 ;* File Name          : cortexm3_macro.s\r
3 ;* Author             : MCD Application Team\r
4 ;* Date First Issued  : 02/19/2007\r
5 ;* Description        : Instruction wrappers for special Cortex-M3 instructions.\r
6 ;*******************************************************************************\r
7 ; History:\r
8 ; 04/02/2007: V0.2\r
9 ; 02/19/2007: V0.1\r
10 ;*******************************************************************************\r
11 ; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
12 ; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
13 ; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
14 ; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
15 ; CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
16 ; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
17 ;*******************************************************************************\r
18     \r
19   SECTION .text:CODE(2)\r
20 \r
21   ; Exported functions\r
22   EXPORT __WFI\r
23   EXPORT __WFE\r
24   EXPORT __SEV\r
25   EXPORT __ISB\r
26   EXPORT __DSB\r
27   EXPORT __DMB\r
28   EXPORT __SVC\r
29   EXPORT __MRS_CONTROL\r
30   EXPORT __MSR_CONTROL\r
31   EXPORT __MRS_PSP\r
32   EXPORT __MSR_PSP\r
33   EXPORT __MRS_MSP\r
34   EXPORT __MSR_MSP\r
35   EXPORT __SETPRIMASK\r
36   EXPORT __RESETPRIMASK\r
37   EXPORT __SETFAULTMASK\r
38   EXPORT __RESETFAULTMASK\r
39   EXPORT __BASEPRICONFIG\r
40   EXPORT __GetBASEPRI\r
41   EXPORT __REV_HalfWord\r
42   EXPORT __REV_Word  \r
43 \r
44 ;*******************************************************************************\r
45 ; Function Name  : __WFI\r
46 ; Description    : Assembler function for the WFI instruction.\r
47 ; Input          : None\r
48 ; Return         : None\r
49 ;*******************************************************************************\r
50 __WFI \r
51  \r
52     WFI\r
53     BX r14\r
54 \r
55 ;*******************************************************************************\r
56 ; Function Name  : __WFE\r
57 ; Description    : Assembler function for the WFE instruction.\r
58 ; Input          : None\r
59 ; Return         : None\r
60 ;*******************************************************************************\r
61 __WFE\r
62 \r
63     WFE\r
64     BX r14\r
65 \r
66 ;*******************************************************************************\r
67 ; Function Name  : __SEV\r
68 ; Description    : Assembler function for the SEV instruction.\r
69 ; Input          : None\r
70 ; Return         : None\r
71 ;*******************************************************************************\r
72 __SEV\r
73 \r
74     SEV\r
75     BX r14\r
76 \r
77 ;*******************************************************************************\r
78 ; Function Name  : __ISB\r
79 ; Description    : Assembler function for the ISB instruction.\r
80 ; Input          : None\r
81 ; Return         : None\r
82 ;*******************************************************************************\r
83 __ISB\r
84 \r
85     ISB\r
86     BX r14\r
87 \r
88 ;*******************************************************************************\r
89 ; Function Name  : __DSB\r
90 ; Description    : Assembler function for the DSB instruction.\r
91 ; Input          : None\r
92 ; Return         : None\r
93 ;*******************************************************************************\r
94 __DSB\r
95 \r
96     DSB\r
97     BX r14\r
98 \r
99 ;*******************************************************************************\r
100 ; Function Name  : __DMB\r
101 ; Description    : Assembler function for the DMB instruction.\r
102 ; Input          : None\r
103 ; Return         : None\r
104 ;*******************************************************************************\r
105 __DMB\r
106 \r
107     DMB\r
108     BX r14\r
109 \r
110 ;*******************************************************************************\r
111 ; Function Name  : __SVC\r
112 ; Description    : Assembler function for the SVC instruction.\r
113 ; Input          : None\r
114 ; Return         : None\r
115 ;*******************************************************************************\r
116 __SVC\r
117 \r
118     SVC 0x01\r
119     BX r14\r
120 \r
121 ;*******************************************************************************\r
122 ; Function Name  : __MRS_CONTROL\r
123 ; Description    : Assembler function for the MRS instruction.\r
124 ; Input          : None\r
125 ; Return         : - r0 : Cortex-M3 CONTROL register value.\r
126 ;*******************************************************************************\r
127 __MRS_CONTROL\r
128 \r
129   MRS r0, CONTROL\r
130   BX r14\r
131 \r
132 ;*******************************************************************************\r
133 ; Function Name  : __MSR_CONTROL\r
134 ; Description    : Assembler function for the MSR instruction.\r
135 ; Input          : - r0 : Cortex-M3 CONTROL register new value.  \r
136 ; Return         : None\r
137 ;*******************************************************************************\r
138 __MSR_CONTROL\r
139 \r
140   MSR CONTROL, r0\r
141   ISB\r
142   BX r14\r
143 \r
144 ;*******************************************************************************\r
145 ; Function Name  : __MRS_PSP\r
146 ; Description    : Assembler function for the MRS instruction.\r
147 ; Input          : None\r
148 ; Return         : - r0 : Process Stack value.\r
149 ;*******************************************************************************\r
150 __MRS_PSP\r
151 \r
152   MRS r0, PSP\r
153   BX r14\r
154 \r
155 ;*******************************************************************************\r
156 ; Function Name  : __MSR_PSP\r
157 ; Description    : Assembler function for the MSR instruction.\r
158 ; Input          : - r0 : Process Stack new value.\r
159 ; Return         : None\r
160 ;*******************************************************************************\r
161 __MSR_PSP\r
162 \r
163     MSR PSP, r0 ; set Process Stack value\r
164     BX r14\r
165 \r
166 ;*******************************************************************************\r
167 ; Function Name  : __MRS_MSP\r
168 ; Description    : Assembler function for the MRS instruction.\r
169 ; Input          : None\r
170 ; Return         : - r0 : Main Stack value.\r
171 ;*******************************************************************************\r
172 __MRS_MSP\r
173 \r
174   MRS r0, MSP\r
175   BX r14\r
176 \r
177 ;*******************************************************************************\r
178 ; Function Name  : __MSR_MSP\r
179 ; Description    : Assembler function for the MSR instruction.\r
180 ; Input          : - r0 : Main Stack new value.\r
181 ; Return         : None\r
182 ;*******************************************************************************\r
183 __MSR_MSP\r
184 \r
185     MSR MSP, r0 ; set Main Stack value\r
186     BX r14\r
187 \r
188 ;*******************************************************************************\r
189 ; Function Name  : __SETPRIMASK\r
190 ; Description    : Assembler function to set the PRIMASK.\r
191 ; Input          : None \r
192 ; Return         : None\r
193 ;*******************************************************************************\r
194 __SETPRIMASK\r
195 \r
196   CPSID i\r
197   BX r14\r
198 \r
199 ;*******************************************************************************\r
200 ; Function Name  : __RESETPRIMASK\r
201 ; Description    : Assembler function to reset the PRIMASK.\r
202 ; Input          : None \r
203 ; Return         : None\r
204 ;*******************************************************************************\r
205 __RESETPRIMASK\r
206 \r
207   CPSIE i\r
208   BX r14\r
209 \r
210 ;*******************************************************************************\r
211 ; Function Name  : __SETFAULTMASK\r
212 ; Description    : Assembler function to set the FAULTMASK.\r
213 ; Input          : None \r
214 ; Return         : None\r
215 ;*******************************************************************************\r
216 __SETFAULTMASK\r
217 \r
218   CPSID f\r
219   BX r14\r
220 \r
221 ;*******************************************************************************\r
222 ; Function Name  : __RESETFAULTMASK\r
223 ; Description    : Assembler function to reset the FAULTMASK.\r
224 ; Input          : None \r
225 ; Return         : None\r
226 ;*******************************************************************************\r
227 __RESETFAULTMASK\r
228 \r
229   CPSIE f\r
230   BX r14\r
231 \r
232 ;*******************************************************************************\r
233 ; Function Name  : __BASEPRICONFIG\r
234 ; Description    : Assembler function to set the Base Priority.\r
235 ; Input          : - r0 : Base Priority new value  \r
236 ; Return         : None\r
237 ;*******************************************************************************\r
238 __BASEPRICONFIG\r
239 \r
240   MSR BASEPRI, r0\r
241   BX r14\r
242 \r
243 ;*******************************************************************************\r
244 ; Function Name  : __GetBASEPRI\r
245 ; Description    : Assembler function to get the Base Priority value.\r
246 ; Input          : None \r
247 ; Return         : - r0 : Base Priority value \r
248 ;*******************************************************************************\r
249 __GetBASEPRI\r
250 \r
251   MRS r0, BASEPRI_MAX\r
252   BX r14\r
253 \r
254 ;*******************************************************************************\r
255 ; Function Name  : __REV_HalfWord\r
256 ; Description    : Reverses the byte order in HalfWord(16-bit) input variable.\r
257 ; Input          : - r0 : specifies the input variable\r
258 ; Return         : - r0 : holds tve variable value after byte reversing.\r
259 ;*******************************************************************************\r
260 __REV_HalfWord \r
261  \r
262   REV16 r0, r0\r
263   BX r14\r
264 \r
265 ;*******************************************************************************\r
266 ; Function Name  : __REV_Word\r
267 ; Description    : Reverses the byte order in Word(32-bit) input variable.\r
268 ; Input          : - r0 : specifies the input variable\r
269 ; Return         : - r0 : holds tve variable value after byte reversing.\r
270 ;*******************************************************************************\r
271 __REV_Word \r
272  \r
273   REV r0, r0\r
274   BX r14\r
275   \r
276   END\r
277   \r
278 ;******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE*****\r