/*
    FreeRTOS V7.4.1 - Copyright (C) 2013 Real Time Engineers Ltd.

    FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME.  PLEASE VISIT
    http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

    ***************************************************************************
     *                                                                       *
     *    FreeRTOS tutorial books are available in pdf and paperback.        *
     *    Complete, revised, and edited pdf reference manuals are also       *
     *    available.                                                         *
     *                                                                       *
     *    Purchasing FreeRTOS documentation will not only help you, by       *
     *    ensuring you get running as quickly as possible and with an        *
     *    in-depth knowledge of how to use FreeRTOS, it will also help       *
     *    the FreeRTOS project to continue with its mission of providing     *
     *    professional grade, cross platform, de facto standard solutions    *
     *    for microcontrollers - completely free of charge!                  *
     *                                                                       *
     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *
     *                                                                       *
     *    Thank you for using FreeRTOS, and thank you for your support!      *
     *                                                                       *
    ***************************************************************************


    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.  See the GNU General Public License for more
    details. You should have received a copy of the GNU General Public License
    and the FreeRTOS license exception along with FreeRTOS; if not it can be
    viewed here: http://www.freertos.org/a00114.html and also obtained by
    writing to Real Time Engineers Ltd., contact details for whom are available
    on the FreeRTOS WEB site.

    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, and our new
    fully thread aware and reentrant UDP/IP stack.

    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
    Integrity Systems, who sell the code with commercial support,
    indemnification and middleware, under the OpenRTOS brand.

    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.
*/

	PUBLIC _vRegTest1Implementation
	PUBLIC _vRegTest2Implementation

	EXTERN _ulRegTest1CycleCount
	EXTERN _ulRegTest2CycleCount

	RSEG CODE:CODE(4)

_vRegTest1Implementation:

		/* Set each register to a known value. */
		MOV.L	#0x33333333, R15
		MVTACHI	R15
		MOV.L	#0x44444444, R15
		MVTACLO	R15
		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 iteration 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	#_ulRegTest1CycleCount, 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

		/* Check the accumulator value. */
		MVFACHI	R15
		CMP		#0x33333333, R15
		BNE		RegTest2Error
		MVFACMI	R15
		CMP		#0x33334444, R15
		BNE		RegTest2Error

		/* 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 iteration of this loop. */
		BRA		TestLoop1

	/* A compare failed, just loop here so the loop counter stops
	incrementing causing the check timer to indicate the error. */
	RegTest1Error:
		BRA RegTest1Error

/*-----------------------------------------------------------*/

_vRegTest2Implementation:

		/* Set each register to a known value. */
		MOV.L	#0x11111111, R15
		MVTACHI	R15
		MOV.L	#0x22222222, R15
		MVTACLO	R15
		MOV.L	#100, R1
		MOV.L	#200, R2
		MOV.L	#300, R3
		MOV.L	#400, R4
		MOV.L	#500, R5
		MOV.L	#600, R6
		MOV.L	#700, R7
		MOV.L	#800, R8
		MOV.L	#900, R9
		MOV.L	#1000, R10
		MOV.L	#1001, R11
		MOV.L	#1002, R12
		MOV.L	#1003, R13
		MOV.L	#1004, R14
		MOV.L	#1005, R15

	/* Loop, checking each iteration 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	#_ulRegTest2CycleCount, R14
		MOV.L	[ R14 ], R15
		ADD		#1, R15
		MOV.L	R15, [ R14 ]

		/* Check the accumulator value. */
		MVFACHI	R15
		CMP		#0x11111111, R15
		BNE		RegTest2Error
		MVFACMI	R15
		CMP		#0x11112222, R15
		BNE		RegTest2Error

		/* 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		#100, R1
		BNE		RegTest2Error
		CMP		#200, R2
		BNE		RegTest2Error
		CMP		#300, R3
		BNE		RegTest2Error
		CMP		#400, R4
		BNE		RegTest2Error
		CMP		#500, R5
		BNE		RegTest2Error
		CMP		#600, R6
		BNE		RegTest2Error
		CMP		#700, R7
		BNE		RegTest2Error
		CMP		#800, R8
		BNE		RegTest2Error
		CMP		#900, R9
		BNE		RegTest2Error
		CMP		#1000, R10
		BNE		RegTest2Error
		CMP		#1001, R11
		BNE		RegTest2Error
		CMP		#1002, R12
		BNE		RegTest2Error
		CMP		#1003, R13
		BNE		RegTest2Error
		CMP		#1004, R14
		BNE		RegTest2Error
		CMP		#1005, R15
		BNE		RegTest2Error

		/* All comparisons passed, start a new iteration of this loop. */
		BRA		TestLoop2

	/* A compare failed, just loop here so the loop counter stops
	incrementing causing the check timer to indicate the error. */
	RegTest2Error:
		BRA RegTest2Error

/*-----------------------------------------------------------*/

		END

