summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S
diff options
context:
space:
mode:
authorRichard Barry <ribarry@amazon.com>2015-09-25 09:33:37 +0000
committerRichard Barry <ribarry@amazon.com>2015-09-25 09:33:37 +0000
commitb3f343fdae7beb18f934bf62d113f0533be9601a (patch)
tree59ceb5302434cadc730672b94aa44aa7bafbff01 /FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S
parente5c8119b96991191197beeb9135fd3aa608df293 (diff)
downloadfreertos-git-b3f343fdae7beb18f934bf62d113f0533be9601a.tar.gz
Update RX231 projects to blink the LED.
Diffstat (limited to 'FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S')
-rw-r--r--FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S235
1 files changed, 235 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S b/FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S
new file mode 100644
index 000000000..0d8d1e4cf
--- /dev/null
+++ b/FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/Full_Demo/RegTest_GCC.S
@@ -0,0 +1,235 @@
+;/*
+; FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.
+; All rights reserved
+;
+; VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
+;
+; ***************************************************************************
+; * *
+; * FreeRTOS provides completely free yet professionally developed, *
+; * robust, strictly quality controlled, supported, and cross *
+; * platform software that has become a de facto standard. *
+; * *
+; * Help yourself get started quickly and support the FreeRTOS *
+; * project by purchasing a FreeRTOS tutorial book, reference *
+; * manual, or both from: http://www.FreeRTOS.org/Documentation *
+; * *
+; * Thank you! *
+; * *
+; ***************************************************************************
+;
+; This file is part of the FreeRTOS distribution.
+;
+; FreeRTOS is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License (version 2) as published by the
+; Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
+;
+; >>! NOTE: The modification to the GPL is included to allow you to distribute
+; >>! a combined work that includes FreeRTOS without being obliged to provide
+; >>! the source code for proprietary components outside of the FreeRTOS
+; >>! kernel.
+;
+; FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+; FOR A PARTICULAR PURPOSE. Full license text is available from the following
+; link: http://www.freertos.org/a00114.html
+;
+; 1 tab == 4 spaces!
+;
+; ***************************************************************************
+; * *
+; * Having a problem? Start by reading the FAQ "My application does *
+; * not run, what could be wrong?" *
+; * *
+; * http://www.FreeRTOS.org/FAQHelp.html *
+; * *
+; ***************************************************************************
+;
+; http://www.FreeRTOS.org - Documentation, books, training, latest versions,
+; license and Real Time Engineers Ltd. contact details.;
+;
+; http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
+; including FreeRTOS+Trace - an indispensable productivity tool, a DOS
+; compatible FAT file system, and our tiny thread aware UDP/IP stack.
+;
+; http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
+; Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
+; licenses offer ticketed support, indemnification and middleware.
+;
+; http://www.SafeRTOS.com - High Integrity Systems also provide a safety
+; engineered and independently SIL3 certified version for use in safety and
+; mission critical applications that require provable dependability.
+;
+; 1 tab == 4 spaces!
+;*/
+
+ .global _vRegTest1Implementation
+ .global _vRegTest2Implementation
+
+ .extern _ulRegTest1LoopCounter
+ .extern _ulRegTest2LoopCounter
+
+ .text
+
+
+;/* This function is explained in the comments at the top of main.c. */
+_vRegTest1Implementation:
+
+ ; Put a known value in each register.
+ MOV.L #1, R1
+ MOV.L #2, R2
+ MOV.L #3, R3
+ MOV.L #4, R4
+ MOV.L #5, R5
+ MOV.L #6, R6
+ MOV.L #7, R7
+ MOV.L #8, R8
+ MOV.L #9, R9
+ MOV.L #10, R10
+ MOV.L #11, R11
+ MOV.L #12, R12
+ MOV.L #13, R13
+ MOV.L #14, R14
+ MOV.L #15, R15
+
+ ; Loop, checking each itteration that each register still contains the
+ ; expected value.
+TestLoop1:
+
+ ; Push the registers that are going to get clobbered.
+ PUSHM R14-R15
+
+ ; Increment the loop counter to show this task is still getting CPU time.
+ MOV.L #_ulRegTest1LoopCounter, R14
+ MOV.L [ R14 ], R15
+ ADD #1, R15
+ MOV.L R15, [ R14 ]
+
+ ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register.
+ MOV.L #1, R14
+ MOV.L #0872E0H, R15
+ MOV.B R14, [R15]
+ NOP
+ NOP
+
+ ; Restore the clobbered registers.
+ POPM R14-R15
+
+ ; Now compare each register to ensure it still contains the value that was
+ ; set before this loop was entered.
+ CMP #1, R1
+ BNE RegTest1Error
+ CMP #2, R2
+ BNE RegTest1Error
+ CMP #3, R3
+ BNE RegTest1Error
+ CMP #4, R4
+ BNE RegTest1Error
+ CMP #5, R5
+ BNE RegTest1Error
+ CMP #6, R6
+ BNE RegTest1Error
+ CMP #7, R7
+ BNE RegTest1Error
+ CMP #8, R8
+ BNE RegTest1Error
+ CMP #9, R9
+ BNE RegTest1Error
+ CMP #10, R10
+ BNE RegTest1Error
+ CMP #11, R11
+ BNE RegTest1Error
+ CMP #12, R12
+ BNE RegTest1Error
+ CMP #13, R13
+ BNE RegTest1Error
+ CMP #14, R14
+ BNE RegTest1Error
+ CMP #15, R15
+ BNE RegTest1Error
+
+ ; All comparisons passed, start a new itteratio of this loop.
+ BRA TestLoop1
+
+RegTest1Error:
+ ; A compare failed, just loop here so the loop counter stops incrementing
+ ; causing the check task to indicate the error.
+ BRA RegTest1Error
+;/*-----------------------------------------------------------*/
+
+;/* This function is explained in the comments at the top of main.c. */
+_vRegTest2Implementation:
+
+ ; Put a known value in each register.
+ MOV.L #10, R1
+ MOV.L #20, R2
+ MOV.L #30, R3
+ MOV.L #40, R4
+ MOV.L #50, R5
+ MOV.L #60, R6
+ MOV.L #70, R7
+ MOV.L #80, R8
+ MOV.L #90, R9
+ MOV.L #100, R10
+ MOV.L #110, R11
+ MOV.L #120, R12
+ MOV.L #130, R13
+ MOV.L #140, R14
+ MOV.L #150, R15
+
+ ; Loop, checking on each itteration that each register still contains the
+ ; expected value.
+TestLoop2:
+
+ ; Push the registers that are going to get clobbered.
+ PUSHM R14-R15
+
+ ; Increment the loop counter to show this task is still getting CPU time.
+ MOV.L #_ulRegTest2LoopCounter, R14
+ MOV.L [ R14 ], R15
+ ADD #1, R15
+ MOV.L R15, [ R14 ]
+
+ ; Restore the clobbered registers.
+ POPM R14-R15
+
+ CMP #10, R1
+ BNE RegTest2Error
+ CMP #20, R2
+ BNE RegTest2Error
+ CMP #30, R3
+ BNE RegTest2Error
+ CMP #40, R4
+ BNE RegTest2Error
+ CMP #50, R5
+ BNE RegTest2Error
+ CMP #60, R6
+ BNE RegTest2Error
+ CMP #70, R7
+ BNE RegTest2Error
+ CMP #80, R8
+ BNE RegTest2Error
+ CMP #90, R9
+ BNE RegTest2Error
+ CMP #100, R10
+ BNE RegTest2Error
+ CMP #110, R11
+ BNE RegTest2Error
+ CMP #120, R12
+ BNE RegTest2Error
+ CMP #130, R13
+ BNE RegTest2Error
+ CMP #140, R14
+ BNE RegTest2Error
+ CMP #150, R15
+ BNE RegTest2Error
+
+ ; All comparisons passed, start a new itteratio of this loop.
+ BRA TestLoop2
+
+RegTest2Error:
+ ; A compare failed, just loop here so the loop counter stops incrementing
+ ; - causing the check task to indicate the error.
+ BRA RegTest2Error
+
+ .END