diff --git a/Source/portable/MSVC-MingW/port.c b/Source/portable/MSVC-MingW/port.c
index 55d2ebe..b4d32f2 100644
--- a/Source/portable/MSVC-MingW/port.c
+++ b/Source/portable/MSVC-MingW/port.c
@@ -1,5 +1,5 @@
 /*
-    FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd.
+    FreeRTOS V7.1.1-rc1 - Copyright (C) 2011 Real Time Engineers Ltd.
 	
 
     ***************************************************************************
@@ -77,7 +77,6 @@
  * Interrupt handlers used by the kernel itself.  These are executed from the
  * simulated interrupt handler thread.
  */
-static unsigned long prvProcessDeleteThreadInterrupt( void );
 static unsigned long prvProcessYieldInterrupt( void );
 static unsigned long prvProcessTickInterrupt( void );
 
@@ -150,7 +149,7 @@
 		{
 			Sleep( portTICK_RATE_MS );
 		}
-	
+
 		WaitForSingleObject( pvInterruptEventMutex, INFINITE );
 
 		/* The timer has expired, generate the simulated tick event. */
@@ -204,7 +203,6 @@
 	/* Install the interrupt handlers used by the scheduler itself. */
 	vPortSetInterruptHandler( portINTERRUPT_YIELD, prvProcessYieldInterrupt );
 	vPortSetInterruptHandler( portINTERRUPT_TICK, prvProcessTickInterrupt );
-	vPortSetInterruptHandler( portINTERRUPT_DELETE_THREAD, prvProcessDeleteThreadInterrupt );
 
 	/* Create the events and mutexes that are used to synchronise all the
 	threads. */
@@ -270,12 +268,6 @@
 }
 /*-----------------------------------------------------------*/
 
-static unsigned long prvProcessDeleteThreadInterrupt( void )
-{
-	return pdTRUE;
-}
-/*-----------------------------------------------------------*/
-
 static unsigned long prvProcessYieldInterrupt( void )
 {
 	return pdTRUE;
@@ -361,15 +353,7 @@
 			{
 				/* Suspend the old thread. */
 				pxThreadState = ( xThreadState *) *( ( unsigned long * ) pvOldCurrentTCB );
-
-				if( ( ulSwitchRequired & ( 1 << portINTERRUPT_DELETE_THREAD ) ) != pdFALSE )
-				{
-					TerminateThread( pxThreadState->pvThread, 0 );
-				}
-				else
-				{
-					SuspendThread( pxThreadState->pvThread );
-				}							
+				SuspendThread( pxThreadState->pvThread );
 
 				/* Obtain the state of the task now selected to enter the 
 				Running state. */
@@ -387,23 +371,13 @@
 {
 xThreadState *pxThreadState;
 
-	if( pvTaskToDelete == pxCurrentTCB )
-	{
-		/* The task is deleting itself, and so the thread that is running now
-		is also to be deleted.  This has to be deferred until this thread is
-		no longer running, so its done in the simulated interrupt handler thread. */
-		vPortGenerateSimulatedInterrupt( portINTERRUPT_DELETE_THREAD );
-	}
-	else
-	{
-		WaitForSingleObject( pvInterruptEventMutex, INFINITE );
+	WaitForSingleObject( pvInterruptEventMutex, INFINITE );
 
-		/* Find the handle of the thread being deleted. */
-		pxThreadState = ( xThreadState * ) ( *( unsigned long *) pvTaskToDelete );
-		TerminateThread( pxThreadState->pvThread, 0 );
+	/* Find the handle of the thread being deleted. */
+	pxThreadState = ( xThreadState * ) ( *( unsigned long *) pvTaskToDelete );
+	TerminateThread( pxThreadState->pvThread, 0 );
 
-		ReleaseMutex( pvInterruptEventMutex );
-	}
+	ReleaseMutex( pvInterruptEventMutex );
 }
 /*-----------------------------------------------------------*/
 
diff --git a/Source/portable/MSVC-MingW/portmacro.h b/Source/portable/MSVC-MingW/portmacro.h
index c8529e1..5e7bf68 100644
--- a/Source/portable/MSVC-MingW/portmacro.h
+++ b/Source/portable/MSVC-MingW/portmacro.h
@@ -1,5 +1,5 @@
 /*
-    FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd.
+    FreeRTOS V7.1.1-rc1 - Copyright (C) 2011 Real Time Engineers Ltd.
 	
 
     ***************************************************************************
@@ -84,7 +84,7 @@
 #define portYIELD()					vPortGenerateSimulatedInterrupt( portINTERRUPT_YIELD )
 
 void vPortDeleteThread( void *pvThreadToDelete );
-#define traceTASK_DELETE( pxTCB )	vPortDeleteThread( pxTCB )
+#define portCLEAN_UP_TCB( pxTCB )	vPortDeleteThread( pxTCB )
 #define portDISABLE_INTERRUPTS()
 #define portENABLE_INTERRUPTS()
 
@@ -102,7 +102,6 @@
 
 #define portINTERRUPT_YIELD				( 0UL )
 #define portINTERRUPT_TICK				( 1UL )
-#define portINTERRUPT_DELETE_THREAD		( 2UL )
 
 /* 
  * Raise a simulated interrupt represented by the bit mask in ulInterruptMask.
