cortexm3_macro.s 9.2 KB

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