;/*
;	FreeRTOS V5.4.0 - Copyright (C) 2003-2009 Richard Barry.
;
;	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 exception 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.  
;	Alternative commercial license and support terms are also available upon 
;	request.  See the licensing section of http://www.FreeRTOS.org for full 
;	license details.
;
;	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 along
;	with FreeRTOS; if not, write to the Free Software Foundation, Inc., 59
;	Temple Place, Suite 330, Boston, MA  02111-1307  USA.
;
;
;	***************************************************************************
;	*                                                                         *
;	* Looking for a quick start?  Then check out the FreeRTOS eBook!          *
;	* See http://www.FreeRTOS.org/Documentation for details                   *
;	*                                                                         *
;	***************************************************************************
;
;	1 tab == 4 spaces!
;
;	Please ensure to read the configuration and relevant port sections of the
;	online documentation.
;
;	http://www.FreeRTOS.org - Documentation, latest information, license and
;	contact details.
;
;	http://www.SafeRTOS.com - A version that is certified for use in safety
;	critical systems.
;
;	http://www.OpenRTOS.com - Commercial support, development, porting,
;	licensing and training services.
;*/

;
; This file defines a wrapper for the interrupt generated each time the button
; on the target board is pushed.  The asm wrapper is used to save and restore
; the task context as a context switch may occur within the ISR itself.
; The C portion of the ISR is defined within ButtonTask.c.
;

; Include the portSAVE_CONTEXT and portRESTORE_CONTEXT macros.
#include "ISR_Support.h"

	PUBLIC    vButtonISRWrapper
	EXTERN    vButtonISRHandler

    RSEG CODE:CODE
	
vButtonISRWrapper:
	; Save the current task context.	
	portSAVE_CONTEXT

	; Call the C portion of the ISR.
	call vButtonISRHandler

	; Restore the context of whichever task is to run next - which might be
	; different from the task that was originally interrupted.
	portRESTORE_CONTEXT
	reti



	; Place the ISR into the vector table.
	COMMON INTVEC:CODE:ROOT(1)
	ORG 8
`??vButtonISRWrapper??INTVEC 8`:
	DW vButtonISRWrapper


	END
