From 5bccc203565a076d86c35c12a51df364c250abb9 Mon Sep 17 00:00:00 2001
From: Richard Barry <ribarry@amazon.com>
Date: Sun, 19 Oct 2008 17:44:56 +0000
Subject: [PATCH] Update to allow low power mode to be used with the RTOS.

---
 .../Rowley/MSP430F449/Port1/portext.asm       | 66 +++++++++++++++++--
 1 file changed, 61 insertions(+), 5 deletions(-)

diff --git a/Source/portable/Rowley/MSP430F449/Port1/portext.asm b/Source/portable/Rowley/MSP430F449/Port1/portext.asm
index 4bf0aeb06e..aa616ad1da 100644
--- a/Source/portable/Rowley/MSP430F449/Port1/portext.asm
+++ b/Source/portable/Rowley/MSP430F449/Port1/portext.asm
@@ -1,6 +1,56 @@
+/*
+	FreeRTOS.org V5.0.4 - Copyright (C) 2003-2008 Richard Barry.
+
+	This file is part of the FreeRTOS.org distribution.
+
+	FreeRTOS.org is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	FreeRTOS.org 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.org; if not, write to the Free Software
+	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+	A special exception to the GPL can be applied should you wish to distribute
+	a combined work that includes FreeRTOS.org, without being obliged to provide
+	the source code for any proprietary components.  See the licensing section 
+	of http://www.FreeRTOS.org for full details of how and when the exception
+	can be applied.
+
+    ***************************************************************************
+    ***************************************************************************
+    *                                                                         *
+    * SAVE TIME AND MONEY!  We can port FreeRTOS.org to your own hardware,    *
+    * and even write all or part of your application on your behalf.          *
+    * See http://www.OpenRTOS.com for details of the services we provide to   *
+    * expedite your project.                                                  *
+    *                                                                         *
+    ***************************************************************************
+    ***************************************************************************
+
+	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.
+*/
+
 #include "FreeRTOSConfig.h"
 
 portSAVE_CONTEXT macro
+                /* Save the remaining registers. */
 		push	r4
 		push	r5
 		push	r6
@@ -37,6 +87,12 @@ portRESTORE_CONTEXT macro
 		pop		r6
 		pop		r5
 		pop		r4
+
+		/* The last thing on the stack will be the status register.
+                Ensure the power down bits are clear ready for the next
+                time this power down register is popped from the stack. */
+		bic.w   #0xf0,0(SP)
+
 		reti
 		endm
 /*-----------------------------------------------------------*/
@@ -77,13 +133,13 @@ _vPortYield::
 		dint			
 				
 		/* Save the context of the current task. */
-        portSAVE_CONTEXT			
+		portSAVE_CONTEXT			
 
-        /* Switch to the highest priority task that is ready to run. */
-        call	#_vTaskSwitchContext		
+		/* Switch to the highest priority task that is ready to run. */
+		call	#_vTaskSwitchContext		
 
-        /* Restore the context of the new task. */
-        portRESTORE_CONTEXT
+		/* Restore the context of the new task. */
+		portRESTORE_CONTEXT
 /*-----------------------------------------------------------*/