stm32f1xx_STUCpuRegsAddressing.s 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. ;******************************************************************************
  2. THUMB
  3. REQUIRE8
  4. PRESERVE8
  5. AREA |.text|, CODE, READONLY, ALIGN=2
  6. ; Reference to the FailSafe routine to be executed in case of non-recoverable
  7. ; failure
  8. IMPORT FailSafePOR
  9. ;; C variables for control flow monitoring
  10. IMPORT CtrlFlowCnt
  11. IMPORT CtrlFlowCntInv
  12. ;*******************************************************************************
  13. ; Function Name : STL_StartUpCPUTest
  14. ; Description : Full Cortex-M3 CPU test at start-up
  15. ; Note: when possible, BRANCH are 16-bit only (depending on
  16. ; relative offset to final BL instruction)
  17. ; Input : None.
  18. ; Output : Branch directly to a Fail Safe routine in case of failure
  19. ; Return : CPUTEST_SUCCESS (=1)
  20. ; WARNING : all registers destroyed when exiting this function (including
  21. ; preserved registers R4 to R11) and excluding stack point R13)
  22. ;*******************************************************************************/
  23. STU_CPURegsAddressing PROC ;64.7us
  24. EXPORT STU_CPURegsAddressing
  25. PUSH {R0-R12}
  26. MOVS R0, #0x00
  27. MOVS R1, #0x00
  28. MOVS R2, #0x00
  29. MOVS R3, #0x00
  30. MOVS R4, #0x00
  31. MOVS R5, #0x00
  32. MOVS R6, #0x00
  33. MOVS R7, #0x00
  34. MOVS R8, #0x00
  35. MOVS R9, #0x00
  36. MOVS R10, #0x00
  37. MOVS R11, #0x00
  38. MOVS R12, #0x00
  39. MOVS R0, #0x00
  40. MOVS R1, #0x01
  41. MOVS R2, #0x02
  42. MOVS R3, #0x03
  43. MOVS R4, #0x04
  44. MOVS R5, #0x05
  45. MOVS R6, #0x06
  46. MOVS R7, #0x07
  47. MOVS R8, #0x08
  48. MOVS R9, #0x09
  49. MOVS R10, #0x0A
  50. MOVS R11, #0x0B
  51. MOVS R12, #0x0C
  52. CMP R0, #0x00
  53. BNE __REGS_ADDRESSING_ERR
  54. CMP R1, #0x01
  55. BNE __REGS_ADDRESSING_ERR
  56. CMP R2, #0x02
  57. BNE __REGS_ADDRESSING_ERR
  58. CMP R3, #0x03
  59. BNE __REGS_ADDRESSING_ERR
  60. CMP R4, #0x04
  61. BNE __REGS_ADDRESSING_ERR
  62. CMP R5, #0x05
  63. BNE __REGS_ADDRESSING_ERR
  64. CMP R6, #0x06
  65. BNE __REGS_ADDRESSING_ERR
  66. CMP R7, #0x07
  67. BNE __REGS_ADDRESSING_ERR
  68. CMP R8, #0x08
  69. BNE __REGS_ADDRESSING_ERR
  70. CMP R9, #0x09
  71. BNE __REGS_ADDRESSING_ERR
  72. CMP R10, #0x0A
  73. BNE __REGS_ADDRESSING_ERR
  74. CMP R11, #0x0B
  75. BNE __REGS_ADDRESSING_ERR
  76. CMP R12, #0x0C
  77. BNE __REGS_ADDRESSING_ERR
  78. B __REGS_ADDRESSING_RET
  79. __REGS_ADDRESSING_ERR
  80. B FailSafePOR
  81. __REGS_ADDRESSING_RET
  82. POP {R0-R12}
  83. BX LR ; return to the caller
  84. ENDP
  85. END