sysMipsALib.s
上传用户:yingyi0918
上传日期:2022-06-26
资源大小:214k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* sysMipsALib.s - MIPS system-dependent routines */
  2. /* Copyright 2001 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5.  * This file has been developed or significantly modified by the
  6.  * MIPS Center of Excellence Dedicated Engineering Staff.
  7.  * This notice is as per the MIPS Center of Excellence Master Partner
  8.  * Agreement, do not remove this notice without checking first with
  9.  * WR/Platforms MIPS Center of Excellence engineering management.
  10.  */
  11. /*
  12. modification history
  13. --------------------
  14. 01g,10Oct02,krao Workaround for Counter timer 0 in IDT79pmc438
  15. 01f,07jun02,jmt  Fix typo with SYS_CONFIG_SET and SYS_PRID_GET macros
  16. 01e,29nov01,agf  fix sysConfigSet to load from a0 instead of v0
  17. 01e,29nov01,pes  Correct parameter passed to sysConfigSet()
  18. 01d,16jul01,tlc  Add CofE copyright.
  19. 01c,27jun01,tlc  General cleanup.
  20. 01b,21jun01,agf  fix typos in comments
  21. 01a,15jun01,tlc  Use HAZARD_VR5400 macro.
  22. */
  23. /*
  24. DESCRIPTION
  25. This library provides board-specific routines that are shared by all MIPS-based
  26. BSPs.  MIPS BSPs utilize this file by creating a symbolic link from their
  27. directory to target/config/mipsCommon/sysMipsALib.s and include the file at the 
  28. *bottom* of sysALib.s using
  29. #include "sysMipsALib.s"
  30. A list of provided routines follows.  If a BSP requires a specialized routine,
  31. then #define the appropriate MACRO corresponding to the routine to be
  32. specialized in the BSPs sysALib.s file.
  33.  ROUTINE   MACRO
  34. ------------------------------------------------------
  35. sysGpInit SYS_GP_INIT
  36. sysCompareSet SYS_COMPARE_SET
  37. sysCompareGet SYS_COMPARE_GET
  38. sysCountSet SYS_COUNT_SET
  39. sysCountGet SYS_COUNT_GET
  40. sysPridGet SYS_PRID_GET
  41. sysConfigGet SYS_CONFIG_GET
  42. sysConfigSet SYS_CONFIG_SET
  43. */
  44. .globl sysGpInit
  45. .globl  sysCompareSet
  46. .globl  sysCompareGet
  47. .globl  sysCountSet
  48. .globl sysCountGet
  49. .globl sysPridGet
  50. .globl sysConfigGet
  51. .globl sysConfigSet
  52. .text
  53. #ifndef SYS_GP_INIT
  54. /*******************************************************************************
  55. *
  56. * sysGpInit - initialize the MIPS global pointer
  57. *
  58. * The purpose of this routine is to initialize the global pointer (gp).
  59. * It is required in order support compressed ROMs.
  60. *
  61. * RETURNS: N/A
  62. *
  63. * NOMANUAL
  64. */
  65. .ent sysGpInit
  66. sysGpInit:
  67. la gp, _gp /* set global pointer from compiler */
  68. j ra
  69. .end sysGpInit
  70. #endif
  71. #ifndef SYS_COMPARE_SET
  72. /******************************************************************************
  73. *
  74. * sysCompareSet - set the MIPS timer compare register
  75. *
  76. * RETURNS: N/A
  77. *
  78. * void sysCompareSet
  79. *     (
  80. *     int compareValue
  81. *     )
  82. *
  83. * NOMANUAL
  84. */
  85. .ent sysCompareSet
  86. sysCompareSet:
  87.  
  88. HAZARD_VR5400
  89. li t0, CNTR_TMR0_COMPREG
  90. sw a0,0x0(t0)
  91. nop
  92. j ra
  93. .end sysCompareSet
  94. #endif
  95. #ifndef SYS_COMPARE_GET
  96. /******************************************************************************
  97. *
  98. * sysCompareGet - get the MIPS timer compare register
  99. *
  100. * RETURNS: The MIPS timer compare register value
  101. * int sysCompareGet (void)
  102. * NOMANUAL
  103. */
  104. .ent sysCompareGet
  105. sysCompareGet:
  106.  
  107. HAZARD_VR5400
  108. li t0,CNTR_TMR0_COMPREG
  109. lw v0,0x0(t0)
  110. j ra
  111. .end sysCompareGet
  112. #endif
  113. #ifndef SYS_COUNT_SET
  114. /******************************************************************************
  115. *
  116. * sysCountSet - set the MIPS timer count register
  117. *
  118. * RETURNS: N/A
  119. * void sysCountSet
  120. *     (
  121. *     int countValue
  122. *     )
  123. * NOMANUAL
  124. */
  125. .ent sysCountSet
  126. sysCountSet:
  127. HAZARD_VR5400
  128.   li t0,CNTR_TMR0_COUNTREG
  129. sw a0,0x0(t0)
  130. j ra
  131. .end sysCountSet
  132. #endif
  133. #ifndef SYS_COUNT_GET
  134. /******************************************************************************
  135. *
  136. * sysCountGet - get the MIPS timer count register
  137. *
  138. * RETURNS: The MIPS timer count register value
  139. *
  140. * int sysCountGet (void)
  141. *
  142. * NOMANUAL
  143. */
  144. .ent sysCountGet
  145. sysCountGet:
  146. HAZARD_VR5400
  147. li t0,CNTR_TMR0_COUNTREG
  148. lw v0,0x0(t0)
  149. nop
  150. j ra
  151. .end sysCountGet
  152. #endif
  153. #ifndef SYS_PRID_GET
  154. /******************************************************************************
  155. *
  156. * sysPridGet - get the MIPS processor ID register
  157. *
  158. * RETURNS: N/A
  159. * int sysPridGet (void)
  160. */
  161. .ent sysPridGet
  162. sysPridGet:
  163. HAZARD_VR5400
  164. mfc0 v0,C0_PRID
  165. j ra
  166. .end sysPridGet
  167. #endif
  168. #ifndef SYS_CONFIG_GET
  169. /******************************************************************************
  170. *
  171. * sysConfigGet - get the MIPS processor CONFIG register
  172. *
  173. * RETURNS: N/A
  174. * int sysConfigGet (void)
  175. */
  176. .ent sysConfigGet
  177. sysConfigGet:
  178. HAZARD_VR5400
  179. mfc0 v0,C0_CONFIG
  180. j ra
  181. .end sysConfigGet
  182. #endif
  183. #ifndef SYS_CONFIG_SET
  184. /******************************************************************************
  185. *
  186. * sysConfigSet - set the MIPS processor CONFIG register
  187. *
  188. * RETURNS: N/A
  189. *
  190. * int sysConfigSet (void)
  191. *
  192. */
  193. .ent sysConfigSet
  194. sysConfigSet:
  195. HAZARD_VR5400
  196. mtc0 a0,C0_CONFIG
  197. j ra
  198. .end sysConfigSet
  199. #endif