* \defgroup xQueueSend xQueueSend\r
  * \ingroup QueueManagement\r
  */\r
-signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portTickType xCopyPosition );\r
+signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );\r
 \r
 /**\r
  * queue. h\r
 
 \r
        + The assembler statements are now included in a single asm block rather\r
          than each line having its own asm block.\r
+\r
+       Changes from V4.5.0\r
+\r
+       + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame\r
+         pointer.  Variables declared within ISRs must now be declared static.\r
 */\r
 \r
 #ifndef PORTMACRO_H\r
 #define portENTER_SWITCHING_ISR()                                                                              \\r
        /* Save the context of the interrupted task. */                                         \\r
        portSAVE_CONTEXT();                                                                                                     \\r
-                                                                                                                                               \\r
-       /* We don't know the stack requirements for the ISR, so the frame */\\r
-       /* pointer will be set to the top of the task stack, and the stack*/\\r
-       /* pointer left where it is.  The IRQ stack will get used for any */\\r
-       /* functions calls made by this ISR. */                                                         \\r
-       asm volatile ( "SUB             R11, LR, #4" );                                                         \\r
        {\r
 \r
 #define portEXIT_SWITCHING_ISR( SwitchRequired )                                               \\r
 
 \r
        + The assembler statements are now included in a single asm block rather\r
          than each line having its own asm block.\r
+\r
+       + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame\r
+         pointer.  Variables declared within ISRs must now be declared static.\r
 */\r
 \r
 #ifndef PORTMACRO_H\r
 #define portENTER_SWITCHING_ISR()                                                                              \\r
        /* Save the context of the interrupted task. */                                         \\r
        portSAVE_CONTEXT();                                                                                                     \\r
-                                                                                                                                               \\r
-       /* We don't know the stack requirements for the ISR, so the frame */\\r
-       /* pointer will be set to the top of the task stack, and the stack*/\\r
-       /* pointer left where it is.  The IRQ stack will get used for any */\\r
-       /* functions calls made by this ISR. */                                                         \\r
-       asm volatile ( "SUB             R11, LR, #4" );                                                 \\r
        {\r
 \r
 #define portEXIT_SWITCHING_ISR( SwitchRequired )                                               \\r
 
 \r
        + The assembler statements are now included in a single asm block rather\r
          than each line having its own asm block.\r
+\r
+       + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame\r
+         pointer.  Variables declared within ISRs must now be declared static.\r
 */\r
 \r
 #ifndef PORTMACRO_H\r
 #define portENTER_SWITCHING_ISR()                                                                              \\r
        /* Save the context of the interrupted task. */                                         \\r
        portSAVE_CONTEXT();                                                                                                     \\r
-                                                                                                                                               \\r
-       /* We don't know the stack requirements for the ISR, so the frame */\\r
-       /* pointer will be set to the top of the task stack, and the stack*/\\r
-       /* pointer left where it is.  The IRQ stack will get used for any */\\r
-       /* functions calls made by this ISR. */                                                         \\r
-       asm volatile ( "SUB             R11, LR, #4" );                                                 \\r
        {\r
 \r
 #define portEXIT_SWITCHING_ISR( SwitchRequired )                                               \\r
 
 \r
        + The assembler statements are now included in a single asm block rather\r
          than each line having its own asm block.\r
+\r
+       + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame\r
+         pointer.  Variables declared within ISRs must now be declared static.\r
 */\r
 \r
 #ifndef PORTMACRO_H\r
 #define portENTER_SWITCHING_ISR()                                                                              \\r
        /* Save the context of the interrupted task. */                                         \\r
        portSAVE_CONTEXT();                                                                                                     \\r
-                                                                                                                                               \\r
-       /* We don't know the stack requirements for the ISR, so the frame */\\r
-       /* pointer will be set to the top of the task stack, and the stack*/\\r
-       /* pointer left where it is.  The IRQ stack will get used for any */\\r
-       /* functions calls made by this ISR. */                                                         \\r
-       asm volatile ( "SUB             R11, LR, #4" );                                                 \\r
        {\r
 \r
 #define portEXIT_SWITCHING_ISR( SwitchRequired )                                               \\r