cortexm3_macro.s
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:10k
源码类别:

uCOS

开发平台:

C/C++

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