2 ; * FreeRTOS V202111.00
3 ; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
5 ; * Permission is hereby granted, free of charge, to any person obtaining a copy of
6 ; * this software and associated documentation files (the "Software"), to deal in
7 ; * the Software without restriction, including without limitation the rights to
8 ; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 ; * the Software, and to permit persons to whom the Software is furnished to do so,
10 ; * subject to the following conditions:
12 ; * The above copyright notice and this permission notice shall be included in all
13 ; * copies or substantial portions of the Software.
15 ; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 ; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 ; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 ; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 ; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 ; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 ; * http://www.FreeRTOS.org
23 ; * http://aws.amazon.com/freertos
25 ; * 1 tab == 4 spaces!
28 .global _vRegTest1Implementation
29 .global _vRegTest2Implementation
31 .extern _ulRegTest1LoopCounter
32 .extern _ulRegTest2LoopCounter
37 ;/* This function is explained in the comments at the top of main.c. */
38 _vRegTest1Implementation:
40 ;/* Put a known value in the guard byte of the accumulators. */
46 ;/* Put a known value in each register. */
63 ;/* Put a known value in the hi and low of the accumulators. */
69 ;/* Loop, checking each iteration that each register still contains the
73 ;/* Push the registers that are going to get clobbered. */
76 ;/* Increment the loop counter to show this task is still getting CPU time. */
77 MOV.L #_ulRegTest1LoopCounter, R14
82 ;/* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */
89 ;/* Check accumulators. */
109 ;/* Restore the clobbered registers. */
112 ;/* Now compare each register to ensure it still contains the value that was
113 ;set before this loop was entered. */
145 ;/* All comparisons passed, start a new itteratio of this loop. */
149 ;/* A compare failed, just loop here so the loop counter stops incrementing
150 ;- causing the check task to indicate the error. */
152 ;/*-----------------------------------------------------------*/
154 ;/* This function is explained in the comments at the top of main.c. */
155 _vRegTest2Implementation:
157 ;/* Put a known value in the guard byte of the accumulators. */
163 ;/* Put a known value in each general purpose register. */
180 ;/* Put a known value in the hi and low of the accumulators. */
186 ;/* Loop, checking each iteration that each register still contains the
190 ;/* Push the registers that are going to get clobbered. */
193 ;/* Increment the loop counter to show this task is still getting CPU time. */
194 MOV.L #_ulRegTest2LoopCounter, R14
199 ;/* Check accumulators. */
219 ;/* Restore the clobbered registers. */
222 ;/* Now compare each register to ensure it still contains the value that was
223 ;set before this loop was entered. */
255 ;/* All comparisons passed, start a new itteratio of this loop. */
259 ;/* A compare failed, just loop here so the loop counter stops incrementing
260 ;- causing the check task to indicate the error. */