Official mbed Real Time Operating System based on the RTX implementation of the CMSIS-RTOS API open standard. Support for nucleo F401RE

Dependents:   rtos_basic_stm32_F401

Fork of mbed-rtos by mbed official

Files at this revision

API Documentation at this revision

Comitter:
bogdanm
Date:
Mon Aug 05 14:12:52 2013 +0300
Parent:
12:58b30ac3f00e
Child:
14:ee87e782d34f
Commit message:
Update sources to revision 64

Changed in this revision

rtx/KL25Z/ARM/HAL_CM0.c Show diff for this revision Revisions of this file
rtx/KL25Z/ARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC11U24/GCC_ARM/HAL_CM0.s Show diff for this revision Revisions of this file
rtx/LPC11U24/GCC_ARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC11U24/uARM/HAL_CM0.c Show diff for this revision Revisions of this file
rtx/LPC11U24/uARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC1768/ARM/HAL_CM3.c Show diff for this revision Revisions of this file
rtx/LPC1768/ARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC1768/GCC_ARM/HAL_CM3.s Show diff for this revision Revisions of this file
rtx/LPC1768/GCC_ARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC4088/ARM/HAL_CM4.c Show diff for this revision Revisions of this file
rtx/LPC4088/ARM/SVC_Table.s Show diff for this revision Revisions of this file
rtx/LPC4088/GCC_CR/HAL_CM4.s Show diff for this revision Revisions of this file
rtx/LPC4088/GCC_CR/SVC_Table.s Show diff for this revision Revisions of this file
rtx/RTX_CM_lib.h Show annotated file Show diff for this revision Revisions of this file
rtx/RTX_Conf_CM.c Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0/TOOLCHAIN_ARM/HAL_CM0.c Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0/TOOLCHAIN_ARM/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0/TOOLCHAIN_GCC/HAL_CM0.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0/TOOLCHAIN_GCC/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0P/TOOLCHAIN_ARM/HAL_CM0.c Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0P/TOOLCHAIN_ARM/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0P/TOOLCHAIN_GCC/HAL_CM0.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M0P/TOOLCHAIN_GCC/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M3/TOOLCHAIN_ARM/HAL_CM3.c Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M3/TOOLCHAIN_ARM/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M3/TOOLCHAIN_GCC/HAL_CM3.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M4/TOOLCHAIN_ARM/HAL_CM4.c Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M4/TOOLCHAIN_ARM/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M4/TOOLCHAIN_GCC/HAL_CM4.s Show annotated file Show diff for this revision Revisions of this file
rtx/TARGET_M4/TOOLCHAIN_GCC/SVC_Table.s Show annotated file Show diff for this revision Revisions of this file
rtx/cmsis_os.h Show annotated file Show diff for this revision Revisions of this file
--- a/rtx/KL25Z/ARM/HAL_CM0.c	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM0.C
- *      Purpose: Hardware Abstraction Layer for Cortex-M0
- *      Rev.:    V4.60
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-#include "rt_TypeDef.h"
-#include "RTX_Conf.h"
-#include "rt_System.h"
-#include "rt_HAL_CM.h"
-#include "rt_Task.h"
-#include "rt_MemBox.h"
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-__asm void rt_set_PSP (U32 stack) {
-        MSR     PSP,R0
-        BX      LR
-}
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-__asm U32 rt_get_PSP (void) {
-        MRS     R0,PSP
-        BX      LR
-}
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-__asm void os_set_env (void) {
-   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-        MOV     R0,SP                   ; PSP = MSP
-        MSR     PSP,R0
-        LDR     R0,=__cpp(&os_flags)
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        BNE     PrivilegedE
-        MOVS    R0,#0x03                ; Unprivileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-PrivilegedE
-        MOVS    R0,#0x02                ; Privileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-__asm void *_alloc_box (void *box_mem) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R3,=__cpp(rt_alloc_box)
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedA
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedA
-        SVC     0
-        BX      LR
-PrivilegedA
-        BX      R12
-
-        ALIGN
-}
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-__asm int _free_box (void *box_mem, void *box) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R3,=__cpp(rt_free_box)
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedF
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedF
-        SVC     0
-        BX      LR
-PrivilegedF
-        BX      R12
-
-        ALIGN
-}
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-__asm void SVC_Handler (void) {
-        PRESERVE8
-
-        IMPORT  SVC_Count
-        IMPORT  SVC_Table
-        IMPORT  rt_stk_check
-
-        MRS     R0,PSP                  ; Read PSP
-        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
-        SUBS    R1,R1,#2                ; Point to SVC Instruction
-        LDRB    R1,[R1]                 ; Load SVC Number
-        CMP     R1,#0
-        BNE     SVC_User                ; User SVC Number > 0
-
-        MOV     LR,R4
-        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
-        MOV     R12,R4
-        MOV     R4,LR
-        BLX     R12                     ; Call SVC Function 
-
-        MRS     R3,PSP                  ; Read PSP
-        STMIA   R3!,{R0-R2}             ; Store return values
-
-        LDR     R3,=__cpp(&os_tsk)
-        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     SVC_Exit                ; no task switch
-
-        SUBS    R3,#8
-        CMP     R1,#0                   ; Runtask deleted?
-        BEQ     SVC_Next
-
-        MRS     R0,PSP                  ; Read PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack       
-        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
-        
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-SVC_Next
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
-        ADDS    R0,R0,#16               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  ; Write PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
-
-SVC_Exit
-        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
-        MVNS    R0,R0
-        BX      R0                      ; RETI to Thread Mode, use PSP
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User
-        PUSH    {R4,LR}                 ; Save Registers
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                ; Overflow
-
-        LDR     R4,=SVC_Table-4
-        LSLS    R1,R1,#2
-        LDR     R4,[R4,R1]              ; Load SVC Function Address
-        MOV     LR,R4
-
-        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
-        MOV     R12,R4
-        BLX     LR                      ; Call SVC Function
-
-        MRS     R4,PSP                  ; Read PSP
-        STMIA   R4!,{R0-R3}             ; Function return values
-SVC_Done
-        POP     {R4,PC}                 ; RETI
-
-        ALIGN
-}
-
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-__asm void PendSV_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_pop_req)
-
-Sys_Switch
-        LDR     R3,=__cpp(&os_tsk)
-        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     Sys_Exit                ; no task switch
-
-        SUBS    R3,#8
-
-        MRS     R0,PSP                  ; Read PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack
-        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
-        
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
-        ADDS    R0,R0,#16               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  ; Write PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
-
-Sys_Exit
-        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
-        MVNS    R0,R0
-        BX      R0                      ; RETI to Thread Mode, use PSP
-
-        ALIGN
-}
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-__asm void SysTick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-__asm void OS_Tick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(os_tick_irqack)
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
-
--- a/rtx/KL25Z/ARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.60
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-                AREA    SVC_TABLE, CODE, READONLY
-
-                EXPORT  SVC_Count
-
-SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
-SVC_Count       DCD     SVC_Cnt
-
-; Import user SVC functions here.
-;               IMPORT  __SVC_1
-
-                EXPORT  SVC_Table
-SVC_Table
-; Insert user SVC functions here. SVC 0 used by RTL Kernel.
-;               DCD     __SVC_1                 ; user SVC function
-
-SVC_End
-
-                END
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC11U24/GCC_ARM/HAL_CM0.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM0.S
- *      Purpose: Hardware Abstraction Layer for Cortex-M0
- *      Rev.:    V4.60
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-        .file   "HAL_CM0.S"
-        .syntax unified
-
-        .equ    TCB_TSTACK, 36
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-        .thumb
-
-        .section ".text"
-        .align  2
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-#       void rt_set_PSP (U32 stack);
-
-        .thumb_func
-        .type   rt_set_PSP, %function
-        .global rt_set_PSP
-rt_set_PSP:
-        .fnstart
-        .cantunwind
-
-        MSR     PSP,R0
-        BX      LR
-
-        .fnend
-        .size   rt_set_PSP, .-rt_set_PSP
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-#       U32 rt_get_PSP (void);
-
-        .thumb_func
-        .type   rt_get_PSP, %function
-        .global rt_get_PSP
-rt_get_PSP:
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP
-        BX      LR
-
-        .fnend
-        .size   rt_get_PSP, .-rt_get_PSP
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-#       void os_set_env (void);
-        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-
-        .thumb_func
-        .type   os_set_env, %function
-        .global os_set_env
-os_set_env:
-        .fnstart
-        .cantunwind
-
-        MOV     R0,SP                   /* PSP = MSP */
-        MSR     PSP,R0
-        LDR     R0,=os_flags
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        BNE     PrivilegedE
-        MOVS    R0,#0x03                /* Unprivileged Thread mode, use PSP */
-        MSR     CONTROL,R0
-        BX      LR
-PrivilegedE:
-        MOVS    R0,#0x02                /* Privileged Thread mode, use PSP */
-        MSR     CONTROL,R0
-        BX      LR
-
-        .fnend
-        .size   os_set_env, .-os_set_env
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-#      void *_alloc_box (void *box_mem);
-       /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _alloc_box, %function
-        .global _alloc_box
-_alloc_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R3,=rt_alloc_box
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedA
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedA
-        SVC     0
-        BX      LR
-PrivilegedA:
-        BX      R12
-
-        .fnend
-        .size   _alloc_box, .-_alloc_box
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-#       int _free_box (void *box_mem, void *box);
-        /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _free_box, %function
-        .global _free_box
-_free_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R3,=rt_free_box
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedF
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedF
-        SVC     0
-        BX      LR
-PrivilegedF:
-        BX      R12
-
-        .fnend
-        .size   _free_box, .-_free_box
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-#       void SVC_Handler (void);
-
-        .thumb_func
-        .type   SVC_Handler, %function
-        .global SVC_Handler
-SVC_Handler:
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP                  /* Read PSP */
-        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
-        SUBS    R1,R1,#2                /* Point to SVC Instruction */
-        LDRB    R1,[R1]                 /* Load SVC Number */
-        CMP     R1,#0
-        BNE     SVC_User                /* User SVC Number > 0 */
-
-        MOV     LR,R4
-        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
-        MOV     R12,R4
-        MOV     R4,LR
-        BLX     R12                     /* Call SVC Function */
-
-        MRS     R3,PSP                  /* Read PSP */
-        STMIA   R3!,{R0-R2}             /* Store return values */
-
-        LDR     R3,=os_tsk
-        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        BEQ     SVC_Exit                /* no task switch */
-
-        SUBS    R3,#8
-        CMP     R1,#0                   /* Runtask deleted? */
-        BEQ     SVC_Next
-
-        MRS     R0,PSP                  /* Read PSP */
-        SUBS    R0,R0,#32               /* Adjust Start Address */
-        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */       
-        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-SVC_Next:
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
-        ADDS    R0,R0,#16               /* Adjust Start Address */
-        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  /* Write PSP */
-        SUBS    R0,R0,#32               /* Adjust Start Address */
-        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
-
-SVC_Exit:
-        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
-        MVNS    R0,R0
-        BX      R0                      /* RETI to Thread Mode, use PSP */
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User:
-        PUSH    {R4,LR}                 /* Save Registers */
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                /* Overflow */
-
-        LDR     R4,=SVC_Table-4
-        LSLS    R1,R1,#2
-        LDR     R4,[R4,R1]              /* Load SVC Function Address */
-        MOV     LR,R4
-
-        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
-        MOV     R12,R4
-        BLX     LR                      /* Call SVC Function */
-
-        MRS     R4,PSP                  /* Read PSP */
-        STMIA   R4!,{R0-R3}             /* Function return values */
-SVC_Done:
-        POP     {R4,PC}                 /* RETI */
-
-        .fnend
-        .size   SVC_Handler, .-SVC_Handler
-        
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-#       void PendSV_Handler (void);
-
-        .thumb_func
-        .type   PendSV_Handler, %function
-        .global PendSV_Handler
-        .global Sys_Switch
-PendSV_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      rt_pop_req
-
-Sys_Switch:
-        LDR     R3,=os_tsk
-        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        BEQ     Sys_Exit                /* no task switch */
-
-        SUBS    R3,#8
-
-        MRS     R0,PSP                  /* Read PSP */
-        SUBS    R0,R0,#32               /* Adjust Start Address */
-        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */
-        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
-        ADDS    R0,R0,#16               /* Adjust Start Address */
-        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  /* Write PSP */
-        SUBS    R0,R0,#32               /* Adjust Start Address */
-        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
-
-Sys_Exit:
-        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
-        MVNS    R0,R0
-        BX      R0                      /* RETI to Thread Mode, use PSP */
-
-        .fnend
-        .size   PendSV_Handler, .-PendSV_Handler
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-#       void SysTick_Handler (void);
-
-        .thumb_func
-        .type   SysTick_Handler, %function
-        .global SysTick_Handler
-SysTick_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   SysTick_Handler, .-SysTick_Handler
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-#       void OS_Tick_Handler (void);
-
-        .thumb_func
-        .type   OS_Tick_Handler, %function
-        .global OS_Tick_Handler
-OS_Tick_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      os_tick_irqack
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   OS_Tick_Handler, .-OS_Tick_Handler
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC11U24/GCC_ARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.60
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-        .file   "SVC_Table.S"
-
-
-        .section ".svc_table"
-
-        .global  SVC_Table
-SVC_Table:
-/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
-#       .long   __SVC_1                 /* user SVC function */
-SVC_End:
-
-        .global  SVC_Count
-SVC_Count:
-        .long   (SVC_End-SVC_Table)/4
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC11U24/uARM/HAL_CM0.c	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM0.C
- *      Purpose: Hardware Abstraction Layer for Cortex-M0
- *      Rev.:    V4.60
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-#include "rt_TypeDef.h"
-#include "RTX_Conf.h"
-#include "rt_System.h"
-#include "rt_HAL_CM.h"
-#include "rt_Task.h"
-#include "rt_MemBox.h"
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-__asm void rt_set_PSP (U32 stack) {
-        MSR     PSP,R0
-        BX      LR
-}
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-__asm U32 rt_get_PSP (void) {
-        MRS     R0,PSP
-        BX      LR
-}
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-__asm void os_set_env (void) {
-   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-        MOV     R0,SP                   ; PSP = MSP
-        MSR     PSP,R0
-        LDR     R0,=__cpp(&os_flags)
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        BNE     PrivilegedE
-        MOVS    R0,#0x03                ; Unprivileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-PrivilegedE
-        MOVS    R0,#0x02                ; Privileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-__asm void *_alloc_box (void *box_mem) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R3,=__cpp(rt_alloc_box)
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedA
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedA
-        SVC     0
-        BX      LR
-PrivilegedA
-        BX      R12
-
-        ALIGN
-}
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-__asm int _free_box (void *box_mem, void *box) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R3,=__cpp(rt_free_box)
-        MOV     R12,R3
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BNE     PrivilegedF
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BEQ     PrivilegedF
-        SVC     0
-        BX      LR
-PrivilegedF
-        BX      R12
-
-        ALIGN
-}
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-__asm void SVC_Handler (void) {
-        PRESERVE8
-
-        IMPORT  SVC_Count
-        IMPORT  SVC_Table
-        IMPORT  rt_stk_check
-
-        MRS     R0,PSP                  ; Read PSP
-        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
-        SUBS    R1,R1,#2                ; Point to SVC Instruction
-        LDRB    R1,[R1]                 ; Load SVC Number
-        CMP     R1,#0
-        BNE     SVC_User                ; User SVC Number > 0
-
-        MOV     LR,R4
-        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
-        MOV     R12,R4
-        MOV     R4,LR
-        BLX     R12                     ; Call SVC Function 
-
-        MRS     R3,PSP                  ; Read PSP
-        STMIA   R3!,{R0-R2}             ; Store return values
-
-        LDR     R3,=__cpp(&os_tsk)
-        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     SVC_Exit                ; no task switch
-
-        SUBS    R3,#8
-        CMP     R1,#0                   ; Runtask deleted?
-        BEQ     SVC_Next
-
-        MRS     R0,PSP                  ; Read PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack       
-        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
-        
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-SVC_Next
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
-        ADDS    R0,R0,#16               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  ; Write PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
-
-SVC_Exit
-        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
-        MVNS    R0,R0
-        BX      R0                      ; RETI to Thread Mode, use PSP
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User
-        PUSH    {R4,LR}                 ; Save Registers
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                ; Overflow
-
-        LDR     R4,=SVC_Table-4
-        LSLS    R1,R1,#2
-        LDR     R4,[R4,R1]              ; Load SVC Function Address
-        MOV     LR,R4
-
-        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
-        MOV     R12,R4
-        BLX     LR                      ; Call SVC Function
-
-        MRS     R4,PSP                  ; Read PSP
-        STMIA   R4!,{R0-R3}             ; Function return values
-SVC_Done
-        POP     {R4,PC}                 ; RETI
-
-        ALIGN
-}
-
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-__asm void PendSV_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_pop_req)
-
-Sys_Switch
-        LDR     R3,=__cpp(&os_tsk)
-        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     Sys_Exit                ; no task switch
-
-        SUBS    R3,#8
-
-        MRS     R0,PSP                  ; Read PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack
-        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
-        MOV     R4,R8
-        MOV     R5,R9
-        MOV     R6,R10
-        MOV     R7,R11
-        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
-        
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
-        ADDS    R0,R0,#16               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
-        MOV     R8,R4
-        MOV     R9,R5
-        MOV     R10,R6
-        MOV     R11,R7
-        MSR     PSP,R0                  ; Write PSP
-        SUBS    R0,R0,#32               ; Adjust Start Address
-        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
-
-Sys_Exit
-        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
-        MVNS    R0,R0
-        BX      R0                      ; RETI to Thread Mode, use PSP
-
-        ALIGN
-}
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-__asm void SysTick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-__asm void OS_Tick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(os_tick_irqack)
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
-
--- a/rtx/LPC11U24/uARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.60
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-                AREA    SVC_TABLE, CODE, READONLY
-
-                EXPORT  SVC_Count
-
-SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
-SVC_Count       DCD     SVC_Cnt
-
-; Import user SVC functions here.
-;               IMPORT  __SVC_1
-
-                EXPORT  SVC_Table
-SVC_Table
-; Insert user SVC functions here. SVC 0 used by RTL Kernel.
-;               DCD     __SVC_1                 ; user SVC function
-
-SVC_End
-
-                END
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC1768/ARM/HAL_CM3.c	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM3.C
- *      Purpose: Hardware Abstraction Layer for Cortex-M3
- *      Rev.:    V4.60
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-#include "rt_TypeDef.h"
-#include "RTX_Conf.h"
-#include "rt_System.h"
-#include "rt_HAL_CM.h"
-#include "rt_Task.h"
-#include "rt_MemBox.h"
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-__asm void rt_set_PSP (U32 stack) {
-        MSR     PSP,R0
-        BX      LR
-}
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-__asm U32 rt_get_PSP (void) {
-        MRS     R0,PSP
-        BX      LR
-}
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-__asm void os_set_env (void) {
-   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-        MOV     R0,SP                   ; PSP = MSP
-        MSR     PSP,R0
-        LDR     R0,=__cpp(&os_flags)
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        MOVNE   R0,#0x02                ; Privileged Thread mode, use PSP
-        MOVEQ   R0,#0x03                ; Unprivileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-__asm void *_alloc_box (void *box_mem) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R12,=__cpp(rt_alloc_box)
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-__asm int _free_box (void *box_mem, void *box) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R12,=__cpp(rt_free_box)
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-__asm void SVC_Handler (void) {
-        PRESERVE8
-
-        IMPORT  SVC_Count
-        IMPORT  SVC_Table
-        IMPORT  rt_stk_check
-
-        MRS     R0,PSP                  ; Read PSP
-        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
-        LDRB    R1,[R1,#-2]             ; Load SVC Number
-        CBNZ    R1,SVC_User
-
-        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
-        BLX     R12                     ; Call SVC Function 
-
-        MRS     R12,PSP                 ; Read PSP
-        STM     R12,{R0-R2}             ; Store return values
-
-        LDR     R3,=__cpp(&os_tsk)
-        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     SVC_Exit                ; no task switch
-
-        CBZ     R1,SVC_Next             ; Runtask deleted?
-        STMDB   R12!,{R4-R11}           ; Save Old context
-        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-SVC_Next
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
-        LDMIA   R12!,{R4-R11}           ; Restore New Context
-        MSR     PSP,R12                 ; Write PSP
-
-SVC_Exit
-        MVN     LR,#:NOT:0xFFFFFFFD     ; set EXC_RETURN value
-        BX      LR
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User
-        PUSH    {R4,LR}                 ; Save Registers
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                ; Overflow
-
-        LDR     R4,=SVC_Table-4
-        LDR     R4,[R4,R1,LSL #2]       ; Load SVC Function Address
-
-        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
-        BLX     R4                      ; Call SVC Function
-
-        MRS     R12,PSP
-        STM     R12,{R0-R3}             ; Function return values
-SVC_Done
-        POP     {R4,PC}                 ; RETI
-
-        ALIGN
-}
-
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-__asm void PendSV_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_pop_req)
-
-Sys_Switch
-        LDR     R3,=__cpp(&os_tsk)
-        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-        BEQ     Sys_Exit
-
-        MRS     R12,PSP                 ; Read PSP
-        STMDB   R12!,{R4-R11}           ; Save Old context
-        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
-        LDMIA   R12!,{R4-R11}           ; Restore New Context
-        MSR     PSP,R12                 ; Write PSP
-
-Sys_Exit
-        MVN     LR,#:NOT:0xFFFFFFFD     ; set EXC_RETURN value
-        BX      LR                      ; Return to Thread Mode
-
-        ALIGN
-}
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-__asm void SysTick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-__asm void OS_Tick_Handler (void) {
-        PRESERVE8
-
-        BL      __cpp(os_tick_irqack)
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
-
--- a/rtx/LPC1768/ARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.60
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-                AREA    SVC_TABLE, CODE, READONLY
-
-                EXPORT  SVC_Count
-
-SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
-SVC_Count       DCD     SVC_Cnt
-
-; Import user SVC functions here.
-;               IMPORT  __SVC_1
-
-                EXPORT  SVC_Table
-SVC_Table
-; Insert user SVC functions here. SVC 0 used by RTL Kernel.
-;               DCD     __SVC_1                 ; user SVC function
-
-SVC_End
-
-                END
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC1768/GCC_ARM/HAL_CM3.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM3.S
- *      Purpose: Hardware Abstraction Layer for Cortex-M3
- *      Rev.:    V4.60
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-        .file   "HAL_CM3.S"
-        .syntax unified
-
-        .equ    TCB_TSTACK, 36
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-        .thumb
-
-        .section ".text"
-        .align  2
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-#       void rt_set_PSP (U32 stack);
-
-        .thumb_func
-        .type   rt_set_PSP, %function
-        .global rt_set_PSP
-rt_set_PSP:
-        .fnstart
-        .cantunwind
-
-        MSR     PSP,R0
-        BX      LR
-
-        .fnend
-        .size   rt_set_PSP, .-rt_set_PSP
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-#       U32 rt_get_PSP (void);
-
-        .thumb_func
-        .type   rt_get_PSP, %function
-        .global rt_get_PSP
-rt_get_PSP:
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP
-        BX      LR
-
-        .fnend
-        .size   rt_get_PSP, .-rt_get_PSP
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-#       void os_set_env (void);
-        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-
-        .thumb_func
-        .type   os_set_env, %function
-        .global os_set_env
-os_set_env:
-        .fnstart
-        .cantunwind
-
-        MOV     R0,SP                   /* PSP = MSP */
-        MSR     PSP,R0
-        LDR     R0,=os_flags
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        ITE     NE
-        MOVNE   R0,#0x02                /* Privileged Thread mode, use PSP */
-        MOVEQ   R0,#0x03                /* Unprivileged Thread mode, use PSP */
-        MSR     CONTROL,R0
-        BX      LR
-
-        .fnend
-        .size   os_set_env, .-os_set_env
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-#      void *_alloc_box (void *box_mem);
-       /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _alloc_box, %function
-        .global _alloc_box
-_alloc_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R12,=rt_alloc_box
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        IT      NE
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        IT      EQ
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        .fnend
-        .size   _alloc_box, .-_alloc_box
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-#       int _free_box (void *box_mem, void *box);
-        /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _free_box, %function
-        .global _free_box
-_free_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R12,=rt_free_box
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        IT      NE
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        IT      EQ
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        .fnend
-        .size   _free_box, .-_free_box
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-#       void SVC_Handler (void);
-
-        .thumb_func
-        .type   SVC_Handler, %function
-        .global SVC_Handler
-SVC_Handler:
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP                  /* Read PSP */
-        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
-        LDRB    R1,[R1,#-2]             /* Load SVC Number */
-        CBNZ    R1,SVC_User
-
-        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
-        BLX     R12                     /* Call SVC Function */
-
-        MRS     R12,PSP                 /* Read PSP */
-        STM     R12,{R0-R2}             /* Store return values */
-
-        LDR     R3,=os_tsk
-        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        BEQ     SVC_Exit                /* no task switch */
-
-        CBZ     R1,SVC_Next             /* Runtask deleted? */
-        STMDB   R12!,{R4-R11}           /* Save Old context */
-        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-SVC_Next:
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
-        LDMIA   R12!,{R4-R11}           /* Restore New Context */
-        MSR     PSP,R12                 /* Write PSP */
-
-SVC_Exit:
-        MVN     LR,#~0xFFFFFFFD         /* set EXC_RETURN value */
-        BX      LR
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User:
-        PUSH    {R4,LR}                 /* Save Registers */
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                /* Overflow */
-
-        LDR     R4,=SVC_Table-4
-        LDR     R4,[R4,R1,LSL #2]       /* Load SVC Function Address */
-
-        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
-        BLX     R4                      /* Call SVC Function */
-
-        MRS     R12,PSP
-        STM     R12,{R0-R3}             /* Function return values */
-SVC_Done:
-        POP     {R4,PC}                 /* RETI */
-
-        .fnend
-        .size   SVC_Handler, .-SVC_Handler
-        
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-#       void PendSV_Handler (void);
-
-        .thumb_func
-        .type   PendSV_Handler, %function
-        .global PendSV_Handler
-        .global Sys_Switch
-PendSV_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      rt_pop_req
-
-Sys_Switch:
-        LDR     R3,=os_tsk
-        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        BEQ     Sys_Exit
-
-        MRS     R12,PSP                 /* Read PSP */
-        STMDB   R12!,{R4-R11}           /* Save Old context */
-        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
-        LDMIA   R12!,{R4-R11}           /* Restore New Context */
-        MSR     PSP,R12                 /* Write PSP */
-
-Sys_Exit:
-        MVN     LR,#~0xFFFFFFFD         /* set EXC_RETURN value */
-        BX      LR                      /* Return to Thread Mode */
-
-        .fnend
-        .size   PendSV_Handler, .-PendSV_Handler
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-#       void SysTick_Handler (void);
-
-        .thumb_func
-        .type   SysTick_Handler, %function
-        .global SysTick_Handler
-SysTick_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   SysTick_Handler, .-SysTick_Handler
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-#       void OS_Tick_Handler (void);
-
-        .thumb_func
-        .type   OS_Tick_Handler, %function
-        .global OS_Tick_Handler
-OS_Tick_Handler:
-        .fnstart
-        .cantunwind
-
-        BL      os_tick_irqack
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   OS_Tick_Handler, .-OS_Tick_Handler
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC1768/GCC_ARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.60
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-        .file   "SVC_Table.S"
-
-
-        .section ".svc_table"
-
-        .global  SVC_Table
-SVC_Table:
-/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
-#       .long   __SVC_1                 /* user SVC function */
-SVC_End:
-
-        .global  SVC_Count
-SVC_Count:
-        .long   (SVC_End-SVC_Table)/4
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC4088/ARM/HAL_CM4.c	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,309 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM4.C
- *      Purpose: Hardware Abstraction Layer for Cortex-M4
- *      Rev.:    V4.70
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-#include "rt_TypeDef.h"
-#include "RTX_Conf.h"
-#include "rt_System.h"
-#include "rt_HAL_CM.h"
-#include "rt_Task.h"
-#include "rt_MemBox.h"
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-__asm void rt_set_PSP (U32 stack) {
-        MSR     PSP,R0
-        BX      LR
-}
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-__asm U32 rt_get_PSP (void) {
-        MRS     R0,PSP
-        BX      LR
-}
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-__asm void os_set_env (void) {
-   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-        MOV     R0,SP                   ; PSP = MSP
-        MSR     PSP,R0
-        LDR     R0,=__cpp(&os_flags)
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        MOVNE   R0,#0x02                ; Privileged Thread mode, use PSP
-        MOVEQ   R0,#0x03                ; Unprivileged Thread mode, use PSP
-        MSR     CONTROL,R0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-__asm void *_alloc_box (void *box_mem) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R12,=__cpp(rt_alloc_box)
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-__asm int _free_box (void *box_mem, void *box) {
-   /* Function wrapper for Unprivileged/Privileged mode. */
-        LDR     R12,=__cpp(rt_free_box)
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        ALIGN
-}
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-__asm void SVC_Handler (void) {
-        PRESERVE8
-
-        IMPORT  SVC_Count
-        IMPORT  SVC_Table
-        IMPORT  rt_stk_check
-
-#ifdef  IFX_XMC4XXX
-        EXPORT  SVC_Handler_Veneer
-SVC_Handler_Veneer        
-#endif
-
-        MRS     R0,PSP                  ; Read PSP
-        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
-        LDRB    R1,[R1,#-2]             ; Load SVC Number
-        CBNZ    R1,SVC_User
-
-        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
-        PUSH    {R4,LR}                 ; Save EXC_RETURN
-        BLX     R12                     ; Call SVC Function 
-        POP     {R4,LR}                 ; Restore EXC_RETURN
-
-        MRS     R12,PSP                 ; Read PSP
-        STM     R12,{R0-R2}             ; Store return values
-
-        LDR     R3,=__cpp(&os_tsk)
-        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-#ifdef  IFX_XMC4XXX
-        PUSHEQ  {LR}
-        POPEQ   {PC}
-#else
-        BXEQ    LR                      ; RETI, no task switch
-#endif
-
-        CBZ     R1,SVC_Next             ; Runtask deleted?
-        TST     LR,#0x10                ; is it extended frame?
-        VSTMDBEQ R12!,{S16-S31}         ; yes, stack also VFP hi-regs
-        MOVEQ   R0,#0x01                ; os_tsk->stack_frame val
-        MOVNE   R0,#0x00
-        STRB    R0,[R1,#TCB_STACKF]     ; os_tsk.run->stack_frame = val
-        STMDB   R12!,{R4-R11}           ; Save Old context
-        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-SVC_Next
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
-        LDMIA   R12!,{R4-R11}           ; Restore New Context
-        LDRB    R0,[R2,#TCB_STACKF]     ; Stack Frame
-        CMP     R0,#0                   ; Basic/Extended Stack Frame
-        VLDMIANE R12!,{S16-S31}         ; restore VFP hi-registers
-        MVNNE   LR,#:NOT:0xFFFFFFED     ; set EXC_RETURN value
-        MVNEQ   LR,#:NOT:0xFFFFFFFD
-        MSR     PSP,R12                 ; Write PSP
-
-SVC_Exit
-#ifdef  IFX_XMC4XXX
-        PUSH    {LR}
-        POP     {PC}
-#else
-        BX      LR
-#endif
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User
-        PUSH    {R4,LR}                 ; Save Registers
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                ; Overflow
-
-        LDR     R4,=SVC_Table-4
-        LDR     R4,[R4,R1,LSL #2]       ; Load SVC Function Address
-
-        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
-        BLX     R4                      ; Call SVC Function
-
-        MRS     R12,PSP
-        STM     R12,{R0-R3}             ; Function return values
-SVC_Done
-        POP     {R4,PC}                 ; RETI
-
-        ALIGN
-}
-
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-__asm void PendSV_Handler (void) {
-        PRESERVE8
-
-#ifdef  IFX_XMC4XXX
-        EXPORT  PendSV_Handler_Veneer
-PendSV_Handler_Veneer        
-#endif
-
-        PUSH    {R4,LR}                 ; Save EXC_RETURN
-        BL      __cpp(rt_pop_req)
-
-Sys_Switch
-        POP     {R4,LR}                 ; Restore EXC_RETURN
-
-        LDR     R3,=__cpp(&os_tsk)
-        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
-        CMP     R1,R2
-#ifdef  IFX_XMC4XXX
-        PUSHEQ  {LR}
-        POPEQ   {PC}
-#else
-        BXEQ    LR                      ; RETI, no task switch
-#endif
-
-        MRS     R12,PSP                 ; Read PSP
-        TST     LR,#0x10                ; is it extended frame?
-        VSTMDBEQ R12!,{S16-S31}         ; yes, stack also VFP hi-regs
-        MOVEQ   R0,#0x01                ; os_tsk->stack_frame val
-        MOVNE   R0,#0x00
-        STRB    R0,[R1,#TCB_STACKF]     ; os_tsk.run->stack_frame = val
-        STMDB   R12!,{R4-R11}           ; Save Old context
-        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            ; Check for Stack overflow
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
-
-        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
-        LDMIA   R12!,{R4-R11}           ; Restore New Context
-        LDRB    R0,[R2,#TCB_STACKF]     ; Stack Frame
-        CMP     R0,#0                   ; Basic/Extended Stack Frame
-        VLDMIANE R12!,{S16-S31}         ; restore VFP hi-regs
-        MVNNE   LR,#:NOT:0xFFFFFFED     ; set EXC_RETURN value
-        MVNEQ   LR,#:NOT:0xFFFFFFFD
-        MSR     PSP,R12                 ; Write PSP
-
-Sys_Exit
-#ifdef  IFX_XMC4XXX
-        PUSH    {LR}
-        POP     {PC}
-#else
-        BX      LR                      ; Return to Thread Mode
-#endif
-
-        ALIGN
-}
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-__asm void SysTick_Handler (void) {
-        PRESERVE8
-
-#ifdef  IFX_XMC4XXX
-        EXPORT  SysTick_Handler_Veneer
-SysTick_Handler_Veneer        
-#endif
-
-        PUSH    {R4,LR}                 ; Save EXC_RETURN
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-__asm void OS_Tick_Handler (void) {
-        PRESERVE8
-
-        PUSH    {R4,LR}                 ; Save EXC_RETURN
-        BL      __cpp(os_tick_irqack)
-        BL      __cpp(rt_systick)
-        B       Sys_Switch
-
-        ALIGN
-}
-
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
-
--- a/rtx/LPC4088/ARM/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.70
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-                AREA    SVC_TABLE, CODE, READONLY
-
-                EXPORT  SVC_Count
-
-SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
-SVC_Count       DCD     SVC_Cnt
-
-; Import user SVC functions here.
-;               IMPORT  __SVC_1
-
-                EXPORT  SVC_Table
-SVC_Table
-; Insert user SVC functions here. SVC 0 used by RTL Kernel.
-;               DCD     __SVC_1                 ; user SVC function
-
-SVC_End
-
-                END
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC4088/GCC_CR/HAL_CM4.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,389 +0,0 @@
-/*----------------------------------------------------------------------------
- *      RL-ARM - RTX
- *----------------------------------------------------------------------------
- *      Name:    HAL_CM4.S
- *      Purpose: Hardware Abstraction Layer for Cortex-M4
- *      Rev.:    V4.70
- *----------------------------------------------------------------------------
- *
- * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *  - Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *  - Neither the name of ARM  nor the names of its contributors may be used 
- *    to endorse or promote products derived from this software without 
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
-        .file   "HAL_CM4.S"
-        .syntax unified
-
-        .equ    TCB_STACKF, 32
-        .equ    TCB_TSTACK, 36
-
-
-/*----------------------------------------------------------------------------
- *      Functions
- *---------------------------------------------------------------------------*/
-
-        .thumb
-
-        .section ".text"
-        .align  2
-
-
-/*--------------------------- rt_set_PSP ------------------------------------*/
-
-#       void rt_set_PSP (U32 stack);
-
-        .thumb_func
-        .type   rt_set_PSP, %function
-        .global rt_set_PSP
-rt_set_PSP:
-        .fnstart
-        .cantunwind
-
-        MSR     PSP,R0
-        BX      LR
-
-        .fnend
-        .size   rt_set_PSP, .-rt_set_PSP
-
-
-/*--------------------------- rt_get_PSP ------------------------------------*/
-
-#       U32 rt_get_PSP (void);
-
-        .thumb_func
-        .type   rt_get_PSP, %function
-        .global rt_get_PSP
-rt_get_PSP:
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP
-        BX      LR
-
-        .fnend
-        .size   rt_get_PSP, .-rt_get_PSP
-
-
-/*--------------------------- os_set_env ------------------------------------*/
-
-#       void os_set_env (void);
-        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-
-        .thumb_func
-        .type   os_set_env, %function
-        .global os_set_env
-os_set_env:
-        .fnstart
-        .cantunwind
-
-        MOV     R0,SP                   /* PSP = MSP */
-        MSR     PSP,R0
-        LDR     R0,=os_flags
-        LDRB    R0,[R0]
-        LSLS    R0,#31
-        ITE     NE
-        MOVNE   R0,#0x02                /* Privileged Thread mode, use PSP */
-        MOVEQ   R0,#0x03                /* Unprivileged Thread mode, use PSP */
-        MSR     CONTROL,R0
-        BX      LR
-
-        .fnend
-        .size   os_set_env, .-os_set_env
-
-
-/*--------------------------- _alloc_box ------------------------------------*/
-
-#      void *_alloc_box (void *box_mem);
-       /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _alloc_box, %function
-        .global _alloc_box
-_alloc_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R12,=rt_alloc_box
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        IT      NE
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        IT      EQ
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        .fnend
-        .size   _alloc_box, .-_alloc_box
-
-
-/*--------------------------- _free_box -------------------------------------*/
-
-#       int _free_box (void *box_mem, void *box);
-        /* Function wrapper for Unprivileged/Privileged mode. */
-
-        .thumb_func
-        .type   _free_box, %function
-        .global _free_box
-_free_box:
-        .fnstart
-        .cantunwind
-
-        LDR     R12,=rt_free_box
-        MRS     R3,IPSR
-        LSLS    R3,#24
-        IT      NE
-        BXNE    R12
-        MRS     R3,CONTROL
-        LSLS    R3,#31
-        IT      EQ
-        BXEQ    R12
-        SVC     0
-        BX      LR
-
-        .fnend
-        .size   _free_box, .-_free_box
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-#       void SVC_Handler (void);
-
-        .thumb_func
-        .type   SVC_Handler, %function
-        .global SVC_Handler
-SVC_Handler:
-        .ifdef  IFX_XMC4XXX
-        .global SVC_Handler_Veneer
-SVC_Handler_Veneer:
-        .endif
-        .fnstart
-        .cantunwind
-
-        MRS     R0,PSP                  /* Read PSP */
-        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
-        LDRB    R1,[R1,#-2]             /* Load SVC Number */
-        CBNZ    R1,SVC_User
-
-        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
-        PUSH    {R4,LR}                 /* Save EXC_RETURN */
-        BLX     R12                     /* Call SVC Function */
-        POP     {R4,LR}                 /* Restore EXC_RETURN */
-
-        MRS     R12,PSP                 /* Read PSP */
-        STM     R12,{R0-R2}             /* Store return values */
-
-        LDR     R3,=os_tsk
-        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        .ifdef  IFX_XMC4XXX
-        ITT     EQ
-        PUSHEQ  {LR}
-        POPEQ   {PC}
-        .else
-        IT      EQ
-        BXEQ    LR                      /* RETI, no task switch */
-        .endif
-
-        CBZ     R1,SVC_Next             /* Runtask deleted? */
-        TST     LR,#0x10                /* is it extended frame? */
-        ITTE    EQ
-        VSTMDBEQ R12!,{S16-S31}         /* yes, stack also VFP hi-regs */
-        MOVEQ   R0,#0x01                /* os_tsk->stack_frame val */
-        MOVNE   R0,#0x00
-        STRB    R0,[R1,#TCB_STACKF]     /* os_tsk.run->stack_frame = val */
-        STMDB   R12!,{R4-R11}           /* Save Old context */
-        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-SVC_Next:
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
-        LDMIA   R12!,{R4-R11}           /* Restore New Context */
-        LDRB    R0,[R2,#TCB_STACKF]     /* Stack Frame */
-        CMP     R0,#0                   /* Basic/Extended Stack Frame */
-        ITTE    NE
-        VLDMIANE R12!,{S16-S31}         /* restore VFP hi-registers */
-        MVNNE   LR,#~0xFFFFFFED         /* set EXC_RETURN value */
-        MVNEQ   LR,#~0xFFFFFFFD
-        MSR     PSP,R12                 /* Write PSP */
-
-SVC_Exit:
-        .ifdef  IFX_XMC4XXX
-        PUSH    {LR}
-        POP     {PC}
-        .else
-        BX      LR
-        .endif
-
-        /*------------------- User SVC ------------------------------*/
-
-SVC_User:
-        PUSH    {R4,LR}                 /* Save Registers */
-        LDR     R2,=SVC_Count
-        LDR     R2,[R2]
-        CMP     R1,R2
-        BHI     SVC_Done                /* Overflow */
-
-        LDR     R4,=SVC_Table-4
-        LDR     R4,[R4,R1,LSL #2]       /* Load SVC Function Address */
-
-        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
-        BLX     R4                      /* Call SVC Function */
-
-        MRS     R12,PSP
-        STM     R12,{R0-R3}             /* Function return values */
-SVC_Done:
-        POP     {R4,PC}                 /* RETI */
-
-        .fnend
-        .size   SVC_Handler, .-SVC_Handler
-        
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-#       void PendSV_Handler (void);
-
-        .thumb_func
-        .type   PendSV_Handler, %function
-        .global PendSV_Handler
-        .global Sys_Switch
-PendSV_Handler:
-        .ifdef  IFX_XMC4XXX
-        .global PendSV_Handler_Veneer
-PendSV_Handler_Veneer:
-        .endif
-        .fnstart
-        .cantunwind
-
-        PUSH    {R4,LR}                 /* Save EXC_RETURN */
-        BL      rt_pop_req
-
-Sys_Switch:
-        POP     {R4,LR}                 /* Restore EXC_RETURN */
-
-        LDR     R3,=os_tsk
-        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
-        CMP     R1,R2
-        .ifdef  IFX_XMC4XXX
-        ITT     EQ
-        PUSHEQ  {LR}
-        POPEQ   {PC}
-        .else
-        IT      EQ
-        BXEQ    LR                      /* RETI, no task switch */
-        .endif
-
-        MRS     R12,PSP                 /* Read PSP */
-        TST     LR,#0x10                /* is it extended frame? */
-        ITTE    EQ
-        VSTMDBEQ R12!,{S16-S31}         /* yes, stack also VFP hi-regs */
-        MOVEQ   R0,#0x01                /* os_tsk->stack_frame val */
-        MOVNE   R0,#0x00
-        STRB    R0,[R1,#TCB_STACKF]     /* os_tsk.run->stack_frame = val */
-        STMDB   R12!,{R4-R11}           /* Save Old context */
-        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
-
-        PUSH    {R2,R3}
-        BL      rt_stk_check            /* Check for Stack overflow */
-        POP     {R2,R3}
-
-        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
-
-        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
-        LDMIA   R12!,{R4-R11}           /* Restore New Context */
-        LDRB    R0,[R2,#TCB_STACKF]     /* Stack Frame */
-        CMP     R0,#0                   /* Basic/Extended Stack Frame */
-        ITTE    NE
-        VLDMIANE R12!,{S16-S31}         /* restore VFP hi-registers */
-        MVNNE   LR,#~0xFFFFFFED         /* set EXC_RETURN value */
-        MVNEQ   LR,#~0xFFFFFFFD
-        MSR     PSP,R12                 /* Write PSP */
-
-Sys_Exit:
-        .ifdef  IFX_XMC4XXX
-        PUSH    {LR}
-        POP     {PC}
-        .else
-        BX      LR                      /* Return to Thread Mode */
-        .endif
-
-        .fnend
-        .size   PendSV_Handler, .-PendSV_Handler
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-#       void SysTick_Handler (void);
-
-        .thumb_func
-        .type   SysTick_Handler, %function
-        .global SysTick_Handler
-SysTick_Handler:
-        .ifdef  IFX_XMC4XXX
-        .global SysTick_Handler_Veneer
-SysTick_Handler_Veneer:
-        .endif
-        .fnstart
-        .cantunwind
-
-        PUSH    {R4,LR}                 /* Save EXC_RETURN */
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   SysTick_Handler, .-SysTick_Handler
-
-
-/*-------------------------- OS_Tick_Handler --------------------------------*/
-
-#       void OS_Tick_Handler (void);
-
-        .thumb_func
-        .type   OS_Tick_Handler, %function
-        .global OS_Tick_Handler
-OS_Tick_Handler:
-        .fnstart
-        .cantunwind
-
-        PUSH    {R4,LR}                 /* Save EXC_RETURN */
-        BL      os_tick_irqack
-        BL      rt_systick
-        B       Sys_Switch
-
-        .fnend
-        .size   OS_Tick_Handler, .-OS_Tick_Handler
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/LPC4088/GCC_CR/SVC_Table.s	Thu May 30 17:08:58 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-;/*----------------------------------------------------------------------------
-; *      RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; *      Name:    SVC_TABLE.S
-; *      Purpose: Pre-defined SVC Table for Cortex-M
-; *      Rev.:    V4.70
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; *  - Redistributions of source code must retain the above copyright
-; *    notice, this list of conditions and the following disclaimer.
-; *  - Redistributions in binary form must reproduce the above copyright
-; *    notice, this list of conditions and the following disclaimer in the
-; *    documentation and/or other materials provided with the distribution.
-; *  - Neither the name of ARM  nor the names of its contributors may be used 
-; *    to endorse or promote products derived from this software without 
-; *    specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
-        .file   "SVC_Table.S"
-
-
-        .section ".svc_table"
-
-        .global  SVC_Table
-SVC_Table:
-/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
-#       .long   __SVC_1                 /* user SVC function */
-SVC_End:
-
-        .global  SVC_Count
-SVC_Count:
-        .long   (SVC_End-SVC_Table)/4
-
-
-        .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
--- a/rtx/RTX_CM_lib.h	Thu May 30 17:08:58 2013 +0100
+++ b/rtx/RTX_CM_lib.h	Mon Aug 05 14:12:52 2013 +0300
@@ -205,12 +205,18 @@
 #elif TARGET_LPC11U24
 #define INITIAL_SP            (0x10001000UL)
 
+#elif TARGET_LPC1114
+#define INITIAL_SP            (0x10001000UL)
+
 #elif TARGET_KL25Z
 #define INITIAL_SP            (0x20003000UL)
 
 #elif TARGET_LPC4088
 #define INITIAL_SP            (0x10010000UL)
 
+#elif TARGET_LPC1347
+#define INITIAL_SP            (0x10002000UL)
+
 #endif
 
 #ifdef __CC_ARM
--- a/rtx/RTX_Conf_CM.c	Thu May 30 17:08:58 2013 +0100
+++ b/rtx/RTX_Conf_CM.c	Mon Aug 05 14:12:52 2013 +0300
@@ -49,18 +49,18 @@
 //       counting "main", but not counting "osTimerThread"
 //   <i> Default: 6
 #ifndef OS_TASKCNT
-#  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
+#  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC1347)
 #    define OS_TASKCNT         14
-#  elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z)
+#  elif defined(TARGET_LPC11U24) || (TARGET_LPC1114) || defined(TARGET_KL25Z)
 #    define OS_TASKCNT         6
 #  endif
 #endif
 
 //   <o>Scheduler (+ interrupts) stack size [bytes] <64-4096:8><#/4>
 #ifndef OS_SCHEDULERSTKSIZE
-#  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
+#  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC1347)
 #      define OS_SCHEDULERSTKSIZE    256
-#  elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z)
+#  elif defined(TARGET_LPC11U24) || (TARGET_LPC1114) || defined(TARGET_KL25Z)
 #      define OS_SCHEDULERSTKSIZE    128
 #  endif
 #endif
@@ -104,7 +104,10 @@
 #  if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
 #    define OS_CLOCK       96000000
 
-#  elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z)
+#  elif defined(TARGET_LPC1347)
+#    define OS_CLOCK       72000000
+
+#  elif defined(TARGET_LPC11U24) || (TARGET_LPC1114) || defined(TARGET_KL25Z)
 #    define OS_CLOCK       48000000
 #
 #  elif defined(TARGET_LPC4088)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0/TOOLCHAIN_ARM/HAL_CM0.c	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,301 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM0.C
+ *      Purpose: Hardware Abstraction Layer for Cortex-M0
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+#include "rt_TypeDef.h"
+#include "RTX_Conf.h"
+#include "rt_System.h"
+#include "rt_HAL_CM.h"
+#include "rt_Task.h"
+#include "rt_MemBox.h"
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+__asm void rt_set_PSP (U32 stack) {
+        MSR     PSP,R0
+        BX      LR
+}
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+__asm U32 rt_get_PSP (void) {
+        MRS     R0,PSP
+        BX      LR
+}
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+__asm void os_set_env (void) {
+   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+        MOV     R0,SP                   ; PSP = MSP
+        MSR     PSP,R0
+        LDR     R0,=__cpp(&os_flags)
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        BNE     PrivilegedE
+        MOVS    R0,#0x03                ; Unprivileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+PrivilegedE
+        MOVS    R0,#0x02                ; Privileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+__asm void *_alloc_box (void *box_mem) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R3,=__cpp(rt_alloc_box)
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedA
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedA
+        SVC     0
+        BX      LR
+PrivilegedA
+        BX      R12
+
+        ALIGN
+}
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+__asm int _free_box (void *box_mem, void *box) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R3,=__cpp(rt_free_box)
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedF
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedF
+        SVC     0
+        BX      LR
+PrivilegedF
+        BX      R12
+
+        ALIGN
+}
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+__asm void SVC_Handler (void) {
+        PRESERVE8
+
+        IMPORT  SVC_Count
+        IMPORT  SVC_Table
+        IMPORT  rt_stk_check
+
+        MRS     R0,PSP                  ; Read PSP
+        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
+        SUBS    R1,R1,#2                ; Point to SVC Instruction
+        LDRB    R1,[R1]                 ; Load SVC Number
+        CMP     R1,#0
+        BNE     SVC_User                ; User SVC Number > 0
+
+        MOV     LR,R4
+        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
+        MOV     R12,R4
+        MOV     R4,LR
+        BLX     R12                     ; Call SVC Function 
+
+        MRS     R3,PSP                  ; Read PSP
+        STMIA   R3!,{R0-R2}             ; Store return values
+
+        LDR     R3,=__cpp(&os_tsk)
+        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     SVC_Exit                ; no task switch
+
+        SUBS    R3,#8
+        CMP     R1,#0                   ; Runtask deleted?
+        BEQ     SVC_Next
+
+        MRS     R0,PSP                  ; Read PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack       
+        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
+        
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+SVC_Next
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
+        ADDS    R0,R0,#16               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  ; Write PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
+
+SVC_Exit
+        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
+        MVNS    R0,R0
+        BX      R0                      ; RETI to Thread Mode, use PSP
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User
+        PUSH    {R4,LR}                 ; Save Registers
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                ; Overflow
+
+        LDR     R4,=SVC_Table-4
+        LSLS    R1,R1,#2
+        LDR     R4,[R4,R1]              ; Load SVC Function Address
+        MOV     LR,R4
+
+        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
+        MOV     R12,R4
+        BLX     LR                      ; Call SVC Function
+
+        MRS     R4,PSP                  ; Read PSP
+        STMIA   R4!,{R0-R3}             ; Function return values
+SVC_Done
+        POP     {R4,PC}                 ; RETI
+
+        ALIGN
+}
+
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+__asm void PendSV_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_pop_req)
+
+Sys_Switch
+        LDR     R3,=__cpp(&os_tsk)
+        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     Sys_Exit                ; no task switch
+
+        SUBS    R3,#8
+
+        MRS     R0,PSP                  ; Read PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack
+        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
+        
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
+        ADDS    R0,R0,#16               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  ; Write PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
+
+Sys_Exit
+        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
+        MVNS    R0,R0
+        BX      R0                      ; RETI to Thread Mode, use PSP
+
+        ALIGN
+}
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+__asm void SysTick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+__asm void OS_Tick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(os_tick_irqack)
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0/TOOLCHAIN_ARM/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,57 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+                AREA    SVC_TABLE, CODE, READONLY
+
+                EXPORT  SVC_Count
+
+SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
+SVC_Count       DCD     SVC_Cnt
+
+; Import user SVC functions here.
+;               IMPORT  __SVC_1
+
+                EXPORT  SVC_Table
+SVC_Table
+; Insert user SVC functions here. SVC 0 used by RTL Kernel.
+;               DCD     __SVC_1                 ; user SVC function
+
+SVC_End
+
+                END
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0/TOOLCHAIN_GCC/HAL_CM0.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,370 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM0.S
+ *      Purpose: Hardware Abstraction Layer for Cortex-M0
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+        .file   "HAL_CM0.S"
+        .syntax unified
+
+        .equ    TCB_TSTACK, 36
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+        .thumb
+
+        .section ".text"
+        .align  2
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+#       void rt_set_PSP (U32 stack);
+
+        .thumb_func
+        .type   rt_set_PSP, %function
+        .global rt_set_PSP
+rt_set_PSP:
+        .fnstart
+        .cantunwind
+
+        MSR     PSP,R0
+        BX      LR
+
+        .fnend
+        .size   rt_set_PSP, .-rt_set_PSP
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+#       U32 rt_get_PSP (void);
+
+        .thumb_func
+        .type   rt_get_PSP, %function
+        .global rt_get_PSP
+rt_get_PSP:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP
+        BX      LR
+
+        .fnend
+        .size   rt_get_PSP, .-rt_get_PSP
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+#       void os_set_env (void);
+        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+
+        .thumb_func
+        .type   os_set_env, %function
+        .global os_set_env
+os_set_env:
+        .fnstart
+        .cantunwind
+
+        MOV     R0,SP                   /* PSP = MSP */
+        MSR     PSP,R0
+        LDR     R0,=os_flags
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        BNE     PrivilegedE
+        MOVS    R0,#0x03                /* Unprivileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+PrivilegedE:
+        MOVS    R0,#0x02                /* Privileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+
+        .fnend
+        .size   os_set_env, .-os_set_env
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+#      void *_alloc_box (void *box_mem);
+       /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _alloc_box, %function
+        .global _alloc_box
+_alloc_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R3,=rt_alloc_box
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedA
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedA
+        SVC     0
+        BX      LR
+PrivilegedA:
+        BX      R12
+
+        .fnend
+        .size   _alloc_box, .-_alloc_box
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+#       int _free_box (void *box_mem, void *box);
+        /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _free_box, %function
+        .global _free_box
+_free_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R3,=rt_free_box
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedF
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedF
+        SVC     0
+        BX      LR
+PrivilegedF:
+        BX      R12
+
+        .fnend
+        .size   _free_box, .-_free_box
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+#       void SVC_Handler (void);
+
+        .thumb_func
+        .type   SVC_Handler, %function
+        .global SVC_Handler
+SVC_Handler:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP                  /* Read PSP */
+        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
+        SUBS    R1,R1,#2                /* Point to SVC Instruction */
+        LDRB    R1,[R1]                 /* Load SVC Number */
+        CMP     R1,#0
+        BNE     SVC_User                /* User SVC Number > 0 */
+
+        MOV     LR,R4
+        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
+        MOV     R12,R4
+        MOV     R4,LR
+        BLX     R12                     /* Call SVC Function */
+
+        MRS     R3,PSP                  /* Read PSP */
+        STMIA   R3!,{R0-R2}             /* Store return values */
+
+        LDR     R3,=os_tsk
+        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     SVC_Exit                /* no task switch */
+
+        SUBS    R3,#8
+        CMP     R1,#0                   /* Runtask deleted? */
+        BEQ     SVC_Next
+
+        MRS     R0,PSP                  /* Read PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */       
+        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+SVC_Next:
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
+        ADDS    R0,R0,#16               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  /* Write PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
+
+SVC_Exit:
+        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
+        MVNS    R0,R0
+        BX      R0                      /* RETI to Thread Mode, use PSP */
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User:
+        PUSH    {R4,LR}                 /* Save Registers */
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                /* Overflow */
+
+        LDR     R4,=SVC_Table-4
+        LSLS    R1,R1,#2
+        LDR     R4,[R4,R1]              /* Load SVC Function Address */
+        MOV     LR,R4
+
+        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
+        MOV     R12,R4
+        BLX     LR                      /* Call SVC Function */
+
+        MRS     R4,PSP                  /* Read PSP */
+        STMIA   R4!,{R0-R3}             /* Function return values */
+SVC_Done:
+        POP     {R4,PC}                 /* RETI */
+
+        .fnend
+        .size   SVC_Handler, .-SVC_Handler
+        
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+#       void PendSV_Handler (void);
+
+        .thumb_func
+        .type   PendSV_Handler, %function
+        .global PendSV_Handler
+        .global Sys_Switch
+PendSV_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_pop_req
+
+Sys_Switch:
+        LDR     R3,=os_tsk
+        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     Sys_Exit                /* no task switch */
+
+        SUBS    R3,#8
+
+        MRS     R0,PSP                  /* Read PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */
+        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
+        ADDS    R0,R0,#16               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  /* Write PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
+
+Sys_Exit:
+        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
+        MVNS    R0,R0
+        BX      R0                      /* RETI to Thread Mode, use PSP */
+
+        .fnend
+        .size   PendSV_Handler, .-PendSV_Handler
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+#       void SysTick_Handler (void);
+
+        .thumb_func
+        .type   SysTick_Handler, %function
+        .global SysTick_Handler
+SysTick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   SysTick_Handler, .-SysTick_Handler
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+#       void OS_Tick_Handler (void);
+
+        .thumb_func
+        .type   OS_Tick_Handler, %function
+        .global OS_Tick_Handler
+OS_Tick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      os_tick_irqack
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   OS_Tick_Handler, .-OS_Tick_Handler
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0/TOOLCHAIN_GCC/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,56 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+        .file   "SVC_Table.S"
+
+
+        .section ".svc_table"
+
+        .global  SVC_Table
+SVC_Table:
+/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
+#       .long   __SVC_1                 /* user SVC function */
+SVC_End:
+
+        .global  SVC_Count
+SVC_Count:
+        .long   (SVC_End-SVC_Table)/4
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0P/TOOLCHAIN_ARM/HAL_CM0.c	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,301 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM0.C
+ *      Purpose: Hardware Abstraction Layer for Cortex-M0
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+#include "rt_TypeDef.h"
+#include "RTX_Conf.h"
+#include "rt_System.h"
+#include "rt_HAL_CM.h"
+#include "rt_Task.h"
+#include "rt_MemBox.h"
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+__asm void rt_set_PSP (U32 stack) {
+        MSR     PSP,R0
+        BX      LR
+}
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+__asm U32 rt_get_PSP (void) {
+        MRS     R0,PSP
+        BX      LR
+}
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+__asm void os_set_env (void) {
+   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+        MOV     R0,SP                   ; PSP = MSP
+        MSR     PSP,R0
+        LDR     R0,=__cpp(&os_flags)
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        BNE     PrivilegedE
+        MOVS    R0,#0x03                ; Unprivileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+PrivilegedE
+        MOVS    R0,#0x02                ; Privileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+__asm void *_alloc_box (void *box_mem) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R3,=__cpp(rt_alloc_box)
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedA
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedA
+        SVC     0
+        BX      LR
+PrivilegedA
+        BX      R12
+
+        ALIGN
+}
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+__asm int _free_box (void *box_mem, void *box) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R3,=__cpp(rt_free_box)
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedF
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedF
+        SVC     0
+        BX      LR
+PrivilegedF
+        BX      R12
+
+        ALIGN
+}
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+__asm void SVC_Handler (void) {
+        PRESERVE8
+
+        IMPORT  SVC_Count
+        IMPORT  SVC_Table
+        IMPORT  rt_stk_check
+
+        MRS     R0,PSP                  ; Read PSP
+        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
+        SUBS    R1,R1,#2                ; Point to SVC Instruction
+        LDRB    R1,[R1]                 ; Load SVC Number
+        CMP     R1,#0
+        BNE     SVC_User                ; User SVC Number > 0
+
+        MOV     LR,R4
+        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
+        MOV     R12,R4
+        MOV     R4,LR
+        BLX     R12                     ; Call SVC Function 
+
+        MRS     R3,PSP                  ; Read PSP
+        STMIA   R3!,{R0-R2}             ; Store return values
+
+        LDR     R3,=__cpp(&os_tsk)
+        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     SVC_Exit                ; no task switch
+
+        SUBS    R3,#8
+        CMP     R1,#0                   ; Runtask deleted?
+        BEQ     SVC_Next
+
+        MRS     R0,PSP                  ; Read PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack       
+        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
+        
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+SVC_Next
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
+        ADDS    R0,R0,#16               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  ; Write PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
+
+SVC_Exit
+        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
+        MVNS    R0,R0
+        BX      R0                      ; RETI to Thread Mode, use PSP
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User
+        PUSH    {R4,LR}                 ; Save Registers
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                ; Overflow
+
+        LDR     R4,=SVC_Table-4
+        LSLS    R1,R1,#2
+        LDR     R4,[R4,R1]              ; Load SVC Function Address
+        MOV     LR,R4
+
+        LDMIA   R0,{R0-R3,R4}           ; Read R0-R3,R12 from stack
+        MOV     R12,R4
+        BLX     LR                      ; Call SVC Function
+
+        MRS     R4,PSP                  ; Read PSP
+        STMIA   R4!,{R0-R3}             ; Function return values
+SVC_Done
+        POP     {R4,PC}                 ; RETI
+
+        ALIGN
+}
+
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+__asm void PendSV_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_pop_req)
+
+Sys_Switch
+        LDR     R3,=__cpp(&os_tsk)
+        LDMIA   R3!,{R1,R2}             ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     Sys_Exit                ; no task switch
+
+        SUBS    R3,#8
+
+        MRS     R0,PSP                  ; Read PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        STR     R0,[R1,#TCB_TSTACK]     ; Update os_tsk.run->tsk_stack
+        STMIA   R0!,{R4-R7}             ; Save old context (R4-R7)
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             ; Save old context (R8-R11)
+        
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R0,[R2,#TCB_TSTACK]     ; os_tsk.new->tsk_stack
+        ADDS    R0,R0,#16               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R8-R11)
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  ; Write PSP
+        SUBS    R0,R0,#32               ; Adjust Start Address
+        LDMIA   R0!,{R4-R7}             ; Restore new Context (R4-R7)
+
+Sys_Exit
+        MOVS    R0,#:NOT:0xFFFFFFFD     ; Set EXC_RETURN value
+        MVNS    R0,R0
+        BX      R0                      ; RETI to Thread Mode, use PSP
+
+        ALIGN
+}
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+__asm void SysTick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+__asm void OS_Tick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(os_tick_irqack)
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0P/TOOLCHAIN_ARM/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,57 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+                AREA    SVC_TABLE, CODE, READONLY
+
+                EXPORT  SVC_Count
+
+SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
+SVC_Count       DCD     SVC_Cnt
+
+; Import user SVC functions here.
+;               IMPORT  __SVC_1
+
+                EXPORT  SVC_Table
+SVC_Table
+; Insert user SVC functions here. SVC 0 used by RTL Kernel.
+;               DCD     __SVC_1                 ; user SVC function
+
+SVC_End
+
+                END
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0P/TOOLCHAIN_GCC/HAL_CM0.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,370 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM0.S
+ *      Purpose: Hardware Abstraction Layer for Cortex-M0
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+        .file   "HAL_CM0.S"
+        .syntax unified
+
+        .equ    TCB_TSTACK, 36
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+        .thumb
+
+        .section ".text"
+        .align  2
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+#       void rt_set_PSP (U32 stack);
+
+        .thumb_func
+        .type   rt_set_PSP, %function
+        .global rt_set_PSP
+rt_set_PSP:
+        .fnstart
+        .cantunwind
+
+        MSR     PSP,R0
+        BX      LR
+
+        .fnend
+        .size   rt_set_PSP, .-rt_set_PSP
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+#       U32 rt_get_PSP (void);
+
+        .thumb_func
+        .type   rt_get_PSP, %function
+        .global rt_get_PSP
+rt_get_PSP:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP
+        BX      LR
+
+        .fnend
+        .size   rt_get_PSP, .-rt_get_PSP
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+#       void os_set_env (void);
+        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+
+        .thumb_func
+        .type   os_set_env, %function
+        .global os_set_env
+os_set_env:
+        .fnstart
+        .cantunwind
+
+        MOV     R0,SP                   /* PSP = MSP */
+        MSR     PSP,R0
+        LDR     R0,=os_flags
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        BNE     PrivilegedE
+        MOVS    R0,#0x03                /* Unprivileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+PrivilegedE:
+        MOVS    R0,#0x02                /* Privileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+
+        .fnend
+        .size   os_set_env, .-os_set_env
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+#      void *_alloc_box (void *box_mem);
+       /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _alloc_box, %function
+        .global _alloc_box
+_alloc_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R3,=rt_alloc_box
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedA
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedA
+        SVC     0
+        BX      LR
+PrivilegedA:
+        BX      R12
+
+        .fnend
+        .size   _alloc_box, .-_alloc_box
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+#       int _free_box (void *box_mem, void *box);
+        /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _free_box, %function
+        .global _free_box
+_free_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R3,=rt_free_box
+        MOV     R12,R3
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BNE     PrivilegedF
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BEQ     PrivilegedF
+        SVC     0
+        BX      LR
+PrivilegedF:
+        BX      R12
+
+        .fnend
+        .size   _free_box, .-_free_box
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+#       void SVC_Handler (void);
+
+        .thumb_func
+        .type   SVC_Handler, %function
+        .global SVC_Handler
+SVC_Handler:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP                  /* Read PSP */
+        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
+        SUBS    R1,R1,#2                /* Point to SVC Instruction */
+        LDRB    R1,[R1]                 /* Load SVC Number */
+        CMP     R1,#0
+        BNE     SVC_User                /* User SVC Number > 0 */
+
+        MOV     LR,R4
+        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
+        MOV     R12,R4
+        MOV     R4,LR
+        BLX     R12                     /* Call SVC Function */
+
+        MRS     R3,PSP                  /* Read PSP */
+        STMIA   R3!,{R0-R2}             /* Store return values */
+
+        LDR     R3,=os_tsk
+        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     SVC_Exit                /* no task switch */
+
+        SUBS    R3,#8
+        CMP     R1,#0                   /* Runtask deleted? */
+        BEQ     SVC_Next
+
+        MRS     R0,PSP                  /* Read PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */       
+        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+SVC_Next:
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
+        ADDS    R0,R0,#16               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  /* Write PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
+
+SVC_Exit:
+        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
+        MVNS    R0,R0
+        BX      R0                      /* RETI to Thread Mode, use PSP */
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User:
+        PUSH    {R4,LR}                 /* Save Registers */
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                /* Overflow */
+
+        LDR     R4,=SVC_Table-4
+        LSLS    R1,R1,#2
+        LDR     R4,[R4,R1]              /* Load SVC Function Address */
+        MOV     LR,R4
+
+        LDMIA   R0,{R0-R3,R4}           /* Read R0-R3,R12 from stack */
+        MOV     R12,R4
+        BLX     LR                      /* Call SVC Function */
+
+        MRS     R4,PSP                  /* Read PSP */
+        STMIA   R4!,{R0-R3}             /* Function return values */
+SVC_Done:
+        POP     {R4,PC}                 /* RETI */
+
+        .fnend
+        .size   SVC_Handler, .-SVC_Handler
+        
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+#       void PendSV_Handler (void);
+
+        .thumb_func
+        .type   PendSV_Handler, %function
+        .global PendSV_Handler
+        .global Sys_Switch
+PendSV_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_pop_req
+
+Sys_Switch:
+        LDR     R3,=os_tsk
+        LDMIA   R3!,{R1,R2}             /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     Sys_Exit                /* no task switch */
+
+        SUBS    R3,#8
+
+        MRS     R0,PSP                  /* Read PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        STR     R0,[R1,#TCB_TSTACK]     /* Update os_tsk.run->tsk_stack */
+        STMIA   R0!,{R4-R7}             /* Save old context (R4-R7) */
+        MOV     R4,R8
+        MOV     R5,R9
+        MOV     R6,R10
+        MOV     R7,R11
+        STMIA   R0!,{R4-R7}             /* Save old context (R8-R11) */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R0,[R2,#TCB_TSTACK]     /* os_tsk.new->tsk_stack */
+        ADDS    R0,R0,#16               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R8-R11) */
+        MOV     R8,R4
+        MOV     R9,R5
+        MOV     R10,R6
+        MOV     R11,R7
+        MSR     PSP,R0                  /* Write PSP */
+        SUBS    R0,R0,#32               /* Adjust Start Address */
+        LDMIA   R0!,{R4-R7}             /* Restore new Context (R4-R7) */
+
+Sys_Exit:
+        MOVS    R0,#~0xFFFFFFFD         /* Set EXC_RETURN value */
+        MVNS    R0,R0
+        BX      R0                      /* RETI to Thread Mode, use PSP */
+
+        .fnend
+        .size   PendSV_Handler, .-PendSV_Handler
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+#       void SysTick_Handler (void);
+
+        .thumb_func
+        .type   SysTick_Handler, %function
+        .global SysTick_Handler
+SysTick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   SysTick_Handler, .-SysTick_Handler
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+#       void OS_Tick_Handler (void);
+
+        .thumb_func
+        .type   OS_Tick_Handler, %function
+        .global OS_Tick_Handler
+OS_Tick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      os_tick_irqack
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   OS_Tick_Handler, .-OS_Tick_Handler
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M0P/TOOLCHAIN_GCC/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,56 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+        .file   "SVC_Table.S"
+
+
+        .section ".svc_table"
+
+        .global  SVC_Table
+SVC_Table:
+/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
+#       .long   __SVC_1                 /* user SVC function */
+SVC_End:
+
+        .global  SVC_Count
+SVC_Count:
+        .long   (SVC_End-SVC_Table)/4
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M3/TOOLCHAIN_ARM/HAL_CM3.c	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,249 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM3.C
+ *      Purpose: Hardware Abstraction Layer for Cortex-M3
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+#include "rt_TypeDef.h"
+#include "RTX_Conf.h"
+#include "rt_System.h"
+#include "rt_HAL_CM.h"
+#include "rt_Task.h"
+#include "rt_MemBox.h"
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+__asm void rt_set_PSP (U32 stack) {
+        MSR     PSP,R0
+        BX      LR
+}
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+__asm U32 rt_get_PSP (void) {
+        MRS     R0,PSP
+        BX      LR
+}
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+__asm void os_set_env (void) {
+   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+        MOV     R0,SP                   ; PSP = MSP
+        MSR     PSP,R0
+        LDR     R0,=__cpp(&os_flags)
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        MOVNE   R0,#0x02                ; Privileged Thread mode, use PSP
+        MOVEQ   R0,#0x03                ; Unprivileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+__asm void *_alloc_box (void *box_mem) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R12,=__cpp(rt_alloc_box)
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+__asm int _free_box (void *box_mem, void *box) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R12,=__cpp(rt_free_box)
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+__asm void SVC_Handler (void) {
+        PRESERVE8
+
+        IMPORT  SVC_Count
+        IMPORT  SVC_Table
+        IMPORT  rt_stk_check
+
+        MRS     R0,PSP                  ; Read PSP
+        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
+        LDRB    R1,[R1,#-2]             ; Load SVC Number
+        CBNZ    R1,SVC_User
+
+        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
+        BLX     R12                     ; Call SVC Function 
+
+        MRS     R12,PSP                 ; Read PSP
+        STM     R12,{R0-R2}             ; Store return values
+
+        LDR     R3,=__cpp(&os_tsk)
+        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     SVC_Exit                ; no task switch
+
+        CBZ     R1,SVC_Next             ; Runtask deleted?
+        STMDB   R12!,{R4-R11}           ; Save Old context
+        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+SVC_Next
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
+        LDMIA   R12!,{R4-R11}           ; Restore New Context
+        MSR     PSP,R12                 ; Write PSP
+
+SVC_Exit
+        MVN     LR,#:NOT:0xFFFFFFFD     ; set EXC_RETURN value
+        BX      LR
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User
+        PUSH    {R4,LR}                 ; Save Registers
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                ; Overflow
+
+        LDR     R4,=SVC_Table-4
+        LDR     R4,[R4,R1,LSL #2]       ; Load SVC Function Address
+
+        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
+        BLX     R4                      ; Call SVC Function
+
+        MRS     R12,PSP
+        STM     R12,{R0-R3}             ; Function return values
+SVC_Done
+        POP     {R4,PC}                 ; RETI
+
+        ALIGN
+}
+
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+__asm void PendSV_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_pop_req)
+
+Sys_Switch
+        LDR     R3,=__cpp(&os_tsk)
+        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+        BEQ     Sys_Exit
+
+        MRS     R12,PSP                 ; Read PSP
+        STMDB   R12!,{R4-R11}           ; Save Old context
+        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
+        LDMIA   R12!,{R4-R11}           ; Restore New Context
+        MSR     PSP,R12                 ; Write PSP
+
+Sys_Exit
+        MVN     LR,#:NOT:0xFFFFFFFD     ; set EXC_RETURN value
+        BX      LR                      ; Return to Thread Mode
+
+        ALIGN
+}
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+__asm void SysTick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+__asm void OS_Tick_Handler (void) {
+        PRESERVE8
+
+        BL      __cpp(os_tick_irqack)
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M3/TOOLCHAIN_ARM/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,57 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+                AREA    SVC_TABLE, CODE, READONLY
+
+                EXPORT  SVC_Count
+
+SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
+SVC_Count       DCD     SVC_Cnt
+
+; Import user SVC functions here.
+;               IMPORT  __SVC_1
+
+                EXPORT  SVC_Table
+SVC_Table
+; Insert user SVC functions here. SVC 0 used by RTL Kernel.
+;               DCD     __SVC_1                 ; user SVC function
+
+SVC_End
+
+                END
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M3/TOOLCHAIN_GCC/HAL_CM3.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,323 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM3.S
+ *      Purpose: Hardware Abstraction Layer for Cortex-M3
+ *      Rev.:    V4.60
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+        .file   "HAL_CM3.S"
+        .syntax unified
+
+        .equ    TCB_TSTACK, 36
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+        .thumb
+
+        .section ".text"
+        .align  2
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+#       void rt_set_PSP (U32 stack);
+
+        .thumb_func
+        .type   rt_set_PSP, %function
+        .global rt_set_PSP
+rt_set_PSP:
+        .fnstart
+        .cantunwind
+
+        MSR     PSP,R0
+        BX      LR
+
+        .fnend
+        .size   rt_set_PSP, .-rt_set_PSP
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+#       U32 rt_get_PSP (void);
+
+        .thumb_func
+        .type   rt_get_PSP, %function
+        .global rt_get_PSP
+rt_get_PSP:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP
+        BX      LR
+
+        .fnend
+        .size   rt_get_PSP, .-rt_get_PSP
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+#       void os_set_env (void);
+        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+
+        .thumb_func
+        .type   os_set_env, %function
+        .global os_set_env
+os_set_env:
+        .fnstart
+        .cantunwind
+
+        MOV     R0,SP                   /* PSP = MSP */
+        MSR     PSP,R0
+        LDR     R0,=os_flags
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        ITE     NE
+        MOVNE   R0,#0x02                /* Privileged Thread mode, use PSP */
+        MOVEQ   R0,#0x03                /* Unprivileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+
+        .fnend
+        .size   os_set_env, .-os_set_env
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+#      void *_alloc_box (void *box_mem);
+       /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _alloc_box, %function
+        .global _alloc_box
+_alloc_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R12,=rt_alloc_box
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        IT      NE
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        IT      EQ
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        .fnend
+        .size   _alloc_box, .-_alloc_box
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+#       int _free_box (void *box_mem, void *box);
+        /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _free_box, %function
+        .global _free_box
+_free_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R12,=rt_free_box
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        IT      NE
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        IT      EQ
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        .fnend
+        .size   _free_box, .-_free_box
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+#       void SVC_Handler (void);
+
+        .thumb_func
+        .type   SVC_Handler, %function
+        .global SVC_Handler
+SVC_Handler:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP                  /* Read PSP */
+        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
+        LDRB    R1,[R1,#-2]             /* Load SVC Number */
+        CBNZ    R1,SVC_User
+
+        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
+        BLX     R12                     /* Call SVC Function */
+
+        MRS     R12,PSP                 /* Read PSP */
+        STM     R12,{R0-R2}             /* Store return values */
+
+        LDR     R3,=os_tsk
+        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     SVC_Exit                /* no task switch */
+
+        CBZ     R1,SVC_Next             /* Runtask deleted? */
+        STMDB   R12!,{R4-R11}           /* Save Old context */
+        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+SVC_Next:
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
+        LDMIA   R12!,{R4-R11}           /* Restore New Context */
+        MSR     PSP,R12                 /* Write PSP */
+
+SVC_Exit:
+        MVN     LR,#~0xFFFFFFFD         /* set EXC_RETURN value */
+        BX      LR
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User:
+        PUSH    {R4,LR}                 /* Save Registers */
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                /* Overflow */
+
+        LDR     R4,=SVC_Table-4
+        LDR     R4,[R4,R1,LSL #2]       /* Load SVC Function Address */
+
+        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
+        BLX     R4                      /* Call SVC Function */
+
+        MRS     R12,PSP
+        STM     R12,{R0-R3}             /* Function return values */
+SVC_Done:
+        POP     {R4,PC}                 /* RETI */
+
+        .fnend
+        .size   SVC_Handler, .-SVC_Handler
+        
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+#       void PendSV_Handler (void);
+
+        .thumb_func
+        .type   PendSV_Handler, %function
+        .global PendSV_Handler
+        .global Sys_Switch
+PendSV_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_pop_req
+
+Sys_Switch:
+        LDR     R3,=os_tsk
+        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        BEQ     Sys_Exit
+
+        MRS     R12,PSP                 /* Read PSP */
+        STMDB   R12!,{R4-R11}           /* Save Old context */
+        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
+        LDMIA   R12!,{R4-R11}           /* Restore New Context */
+        MSR     PSP,R12                 /* Write PSP */
+
+Sys_Exit:
+        MVN     LR,#~0xFFFFFFFD         /* set EXC_RETURN value */
+        BX      LR                      /* Return to Thread Mode */
+
+        .fnend
+        .size   PendSV_Handler, .-PendSV_Handler
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+#       void SysTick_Handler (void);
+
+        .thumb_func
+        .type   SysTick_Handler, %function
+        .global SysTick_Handler
+SysTick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   SysTick_Handler, .-SysTick_Handler
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+#       void OS_Tick_Handler (void);
+
+        .thumb_func
+        .type   OS_Tick_Handler, %function
+        .global OS_Tick_Handler
+OS_Tick_Handler:
+        .fnstart
+        .cantunwind
+
+        BL      os_tick_irqack
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   OS_Tick_Handler, .-OS_Tick_Handler
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,56 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.60
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+        .file   "SVC_Table.S"
+
+
+        .section ".svc_table"
+
+        .global  SVC_Table
+SVC_Table:
+/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
+#       .long   __SVC_1                 /* user SVC function */
+SVC_End:
+
+        .global  SVC_Count
+SVC_Count:
+        .long   (SVC_End-SVC_Table)/4
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M4/TOOLCHAIN_ARM/HAL_CM4.c	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,309 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM4.C
+ *      Purpose: Hardware Abstraction Layer for Cortex-M4
+ *      Rev.:    V4.70
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+#include "rt_TypeDef.h"
+#include "RTX_Conf.h"
+#include "rt_System.h"
+#include "rt_HAL_CM.h"
+#include "rt_Task.h"
+#include "rt_MemBox.h"
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+__asm void rt_set_PSP (U32 stack) {
+        MSR     PSP,R0
+        BX      LR
+}
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+__asm U32 rt_get_PSP (void) {
+        MRS     R0,PSP
+        BX      LR
+}
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+__asm void os_set_env (void) {
+   /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+        MOV     R0,SP                   ; PSP = MSP
+        MSR     PSP,R0
+        LDR     R0,=__cpp(&os_flags)
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        MOVNE   R0,#0x02                ; Privileged Thread mode, use PSP
+        MOVEQ   R0,#0x03                ; Unprivileged Thread mode, use PSP
+        MSR     CONTROL,R0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+__asm void *_alloc_box (void *box_mem) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R12,=__cpp(rt_alloc_box)
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+__asm int _free_box (void *box_mem, void *box) {
+   /* Function wrapper for Unprivileged/Privileged mode. */
+        LDR     R12,=__cpp(rt_free_box)
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        ALIGN
+}
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+__asm void SVC_Handler (void) {
+        PRESERVE8
+
+        IMPORT  SVC_Count
+        IMPORT  SVC_Table
+        IMPORT  rt_stk_check
+
+#ifdef  IFX_XMC4XXX
+        EXPORT  SVC_Handler_Veneer
+SVC_Handler_Veneer        
+#endif
+
+        MRS     R0,PSP                  ; Read PSP
+        LDR     R1,[R0,#24]             ; Read Saved PC from Stack
+        LDRB    R1,[R1,#-2]             ; Load SVC Number
+        CBNZ    R1,SVC_User
+
+        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
+        PUSH    {R4,LR}                 ; Save EXC_RETURN
+        BLX     R12                     ; Call SVC Function 
+        POP     {R4,LR}                 ; Restore EXC_RETURN
+
+        MRS     R12,PSP                 ; Read PSP
+        STM     R12,{R0-R2}             ; Store return values
+
+        LDR     R3,=__cpp(&os_tsk)
+        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+#ifdef  IFX_XMC4XXX
+        PUSHEQ  {LR}
+        POPEQ   {PC}
+#else
+        BXEQ    LR                      ; RETI, no task switch
+#endif
+
+        CBZ     R1,SVC_Next             ; Runtask deleted?
+        TST     LR,#0x10                ; is it extended frame?
+        VSTMDBEQ R12!,{S16-S31}         ; yes, stack also VFP hi-regs
+        MOVEQ   R0,#0x01                ; os_tsk->stack_frame val
+        MOVNE   R0,#0x00
+        STRB    R0,[R1,#TCB_STACKF]     ; os_tsk.run->stack_frame = val
+        STMDB   R12!,{R4-R11}           ; Save Old context
+        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+SVC_Next
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
+        LDMIA   R12!,{R4-R11}           ; Restore New Context
+        LDRB    R0,[R2,#TCB_STACKF]     ; Stack Frame
+        CMP     R0,#0                   ; Basic/Extended Stack Frame
+        VLDMIANE R12!,{S16-S31}         ; restore VFP hi-registers
+        MVNNE   LR,#:NOT:0xFFFFFFED     ; set EXC_RETURN value
+        MVNEQ   LR,#:NOT:0xFFFFFFFD
+        MSR     PSP,R12                 ; Write PSP
+
+SVC_Exit
+#ifdef  IFX_XMC4XXX
+        PUSH    {LR}
+        POP     {PC}
+#else
+        BX      LR
+#endif
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User
+        PUSH    {R4,LR}                 ; Save Registers
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                ; Overflow
+
+        LDR     R4,=SVC_Table-4
+        LDR     R4,[R4,R1,LSL #2]       ; Load SVC Function Address
+
+        LDM     R0,{R0-R3,R12}          ; Read R0-R3,R12 from stack
+        BLX     R4                      ; Call SVC Function
+
+        MRS     R12,PSP
+        STM     R12,{R0-R3}             ; Function return values
+SVC_Done
+        POP     {R4,PC}                 ; RETI
+
+        ALIGN
+}
+
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+__asm void PendSV_Handler (void) {
+        PRESERVE8
+
+#ifdef  IFX_XMC4XXX
+        EXPORT  PendSV_Handler_Veneer
+PendSV_Handler_Veneer        
+#endif
+
+        PUSH    {R4,LR}                 ; Save EXC_RETURN
+        BL      __cpp(rt_pop_req)
+
+Sys_Switch
+        POP     {R4,LR}                 ; Restore EXC_RETURN
+
+        LDR     R3,=__cpp(&os_tsk)
+        LDM     R3,{R1,R2}              ; os_tsk.run, os_tsk.new
+        CMP     R1,R2
+#ifdef  IFX_XMC4XXX
+        PUSHEQ  {LR}
+        POPEQ   {PC}
+#else
+        BXEQ    LR                      ; RETI, no task switch
+#endif
+
+        MRS     R12,PSP                 ; Read PSP
+        TST     LR,#0x10                ; is it extended frame?
+        VSTMDBEQ R12!,{S16-S31}         ; yes, stack also VFP hi-regs
+        MOVEQ   R0,#0x01                ; os_tsk->stack_frame val
+        MOVNE   R0,#0x00
+        STRB    R0,[R1,#TCB_STACKF]     ; os_tsk.run->stack_frame = val
+        STMDB   R12!,{R4-R11}           ; Save Old context
+        STR     R12,[R1,#TCB_TSTACK]    ; Update os_tsk.run->tsk_stack
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            ; Check for Stack overflow
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 ; os_tsk.run = os_tsk.new
+
+        LDR     R12,[R2,#TCB_TSTACK]    ; os_tsk.new->tsk_stack
+        LDMIA   R12!,{R4-R11}           ; Restore New Context
+        LDRB    R0,[R2,#TCB_STACKF]     ; Stack Frame
+        CMP     R0,#0                   ; Basic/Extended Stack Frame
+        VLDMIANE R12!,{S16-S31}         ; restore VFP hi-regs
+        MVNNE   LR,#:NOT:0xFFFFFFED     ; set EXC_RETURN value
+        MVNEQ   LR,#:NOT:0xFFFFFFFD
+        MSR     PSP,R12                 ; Write PSP
+
+Sys_Exit
+#ifdef  IFX_XMC4XXX
+        PUSH    {LR}
+        POP     {PC}
+#else
+        BX      LR                      ; Return to Thread Mode
+#endif
+
+        ALIGN
+}
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+__asm void SysTick_Handler (void) {
+        PRESERVE8
+
+#ifdef  IFX_XMC4XXX
+        EXPORT  SysTick_Handler_Veneer
+SysTick_Handler_Veneer        
+#endif
+
+        PUSH    {R4,LR}                 ; Save EXC_RETURN
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+__asm void OS_Tick_Handler (void) {
+        PRESERVE8
+
+        PUSH    {R4,LR}                 ; Save EXC_RETURN
+        BL      __cpp(os_tick_irqack)
+        BL      __cpp(rt_systick)
+        B       Sys_Switch
+
+        ALIGN
+}
+
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M4/TOOLCHAIN_ARM/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,57 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.70
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+                AREA    SVC_TABLE, CODE, READONLY
+
+                EXPORT  SVC_Count
+
+SVC_Cnt         EQU    (SVC_End-SVC_Table)/4
+SVC_Count       DCD     SVC_Cnt
+
+; Import user SVC functions here.
+;               IMPORT  __SVC_1
+
+                EXPORT  SVC_Table
+SVC_Table
+; Insert user SVC functions here. SVC 0 used by RTL Kernel.
+;               DCD     __SVC_1                 ; user SVC function
+
+SVC_End
+
+                END
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M4/TOOLCHAIN_GCC/HAL_CM4.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,389 @@
+/*----------------------------------------------------------------------------
+ *      RL-ARM - RTX
+ *----------------------------------------------------------------------------
+ *      Name:    HAL_CM4.S
+ *      Purpose: Hardware Abstraction Layer for Cortex-M4
+ *      Rev.:    V4.70
+ *----------------------------------------------------------------------------
+ *
+ * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
+ * All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *  - Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  - Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *  - Neither the name of ARM  nor the names of its contributors may be used 
+ *    to endorse or promote products derived from this software without 
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *---------------------------------------------------------------------------*/
+
+        .file   "HAL_CM4.S"
+        .syntax unified
+
+        .equ    TCB_STACKF, 32
+        .equ    TCB_TSTACK, 36
+
+
+/*----------------------------------------------------------------------------
+ *      Functions
+ *---------------------------------------------------------------------------*/
+
+        .thumb
+
+        .section ".text"
+        .align  2
+
+
+/*--------------------------- rt_set_PSP ------------------------------------*/
+
+#       void rt_set_PSP (U32 stack);
+
+        .thumb_func
+        .type   rt_set_PSP, %function
+        .global rt_set_PSP
+rt_set_PSP:
+        .fnstart
+        .cantunwind
+
+        MSR     PSP,R0
+        BX      LR
+
+        .fnend
+        .size   rt_set_PSP, .-rt_set_PSP
+
+
+/*--------------------------- rt_get_PSP ------------------------------------*/
+
+#       U32 rt_get_PSP (void);
+
+        .thumb_func
+        .type   rt_get_PSP, %function
+        .global rt_get_PSP
+rt_get_PSP:
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP
+        BX      LR
+
+        .fnend
+        .size   rt_get_PSP, .-rt_get_PSP
+
+
+/*--------------------------- os_set_env ------------------------------------*/
+
+#       void os_set_env (void);
+        /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
+
+        .thumb_func
+        .type   os_set_env, %function
+        .global os_set_env
+os_set_env:
+        .fnstart
+        .cantunwind
+
+        MOV     R0,SP                   /* PSP = MSP */
+        MSR     PSP,R0
+        LDR     R0,=os_flags
+        LDRB    R0,[R0]
+        LSLS    R0,#31
+        ITE     NE
+        MOVNE   R0,#0x02                /* Privileged Thread mode, use PSP */
+        MOVEQ   R0,#0x03                /* Unprivileged Thread mode, use PSP */
+        MSR     CONTROL,R0
+        BX      LR
+
+        .fnend
+        .size   os_set_env, .-os_set_env
+
+
+/*--------------------------- _alloc_box ------------------------------------*/
+
+#      void *_alloc_box (void *box_mem);
+       /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _alloc_box, %function
+        .global _alloc_box
+_alloc_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R12,=rt_alloc_box
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        IT      NE
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        IT      EQ
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        .fnend
+        .size   _alloc_box, .-_alloc_box
+
+
+/*--------------------------- _free_box -------------------------------------*/
+
+#       int _free_box (void *box_mem, void *box);
+        /* Function wrapper for Unprivileged/Privileged mode. */
+
+        .thumb_func
+        .type   _free_box, %function
+        .global _free_box
+_free_box:
+        .fnstart
+        .cantunwind
+
+        LDR     R12,=rt_free_box
+        MRS     R3,IPSR
+        LSLS    R3,#24
+        IT      NE
+        BXNE    R12
+        MRS     R3,CONTROL
+        LSLS    R3,#31
+        IT      EQ
+        BXEQ    R12
+        SVC     0
+        BX      LR
+
+        .fnend
+        .size   _free_box, .-_free_box
+
+
+/*-------------------------- SVC_Handler ------------------------------------*/
+
+#       void SVC_Handler (void);
+
+        .thumb_func
+        .type   SVC_Handler, %function
+        .global SVC_Handler
+SVC_Handler:
+        .ifdef  IFX_XMC4XXX
+        .global SVC_Handler_Veneer
+SVC_Handler_Veneer:
+        .endif
+        .fnstart
+        .cantunwind
+
+        MRS     R0,PSP                  /* Read PSP */
+        LDR     R1,[R0,#24]             /* Read Saved PC from Stack */
+        LDRB    R1,[R1,#-2]             /* Load SVC Number */
+        CBNZ    R1,SVC_User
+
+        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
+        PUSH    {R4,LR}                 /* Save EXC_RETURN */
+        BLX     R12                     /* Call SVC Function */
+        POP     {R4,LR}                 /* Restore EXC_RETURN */
+
+        MRS     R12,PSP                 /* Read PSP */
+        STM     R12,{R0-R2}             /* Store return values */
+
+        LDR     R3,=os_tsk
+        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        .ifdef  IFX_XMC4XXX
+        ITT     EQ
+        PUSHEQ  {LR}
+        POPEQ   {PC}
+        .else
+        IT      EQ
+        BXEQ    LR                      /* RETI, no task switch */
+        .endif
+
+        CBZ     R1,SVC_Next             /* Runtask deleted? */
+        TST     LR,#0x10                /* is it extended frame? */
+        ITTE    EQ
+        VSTMDBEQ R12!,{S16-S31}         /* yes, stack also VFP hi-regs */
+        MOVEQ   R0,#0x01                /* os_tsk->stack_frame val */
+        MOVNE   R0,#0x00
+        STRB    R0,[R1,#TCB_STACKF]     /* os_tsk.run->stack_frame = val */
+        STMDB   R12!,{R4-R11}           /* Save Old context */
+        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+SVC_Next:
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
+        LDMIA   R12!,{R4-R11}           /* Restore New Context */
+        LDRB    R0,[R2,#TCB_STACKF]     /* Stack Frame */
+        CMP     R0,#0                   /* Basic/Extended Stack Frame */
+        ITTE    NE
+        VLDMIANE R12!,{S16-S31}         /* restore VFP hi-registers */
+        MVNNE   LR,#~0xFFFFFFED         /* set EXC_RETURN value */
+        MVNEQ   LR,#~0xFFFFFFFD
+        MSR     PSP,R12                 /* Write PSP */
+
+SVC_Exit:
+        .ifdef  IFX_XMC4XXX
+        PUSH    {LR}
+        POP     {PC}
+        .else
+        BX      LR
+        .endif
+
+        /*------------------- User SVC ------------------------------*/
+
+SVC_User:
+        PUSH    {R4,LR}                 /* Save Registers */
+        LDR     R2,=SVC_Count
+        LDR     R2,[R2]
+        CMP     R1,R2
+        BHI     SVC_Done                /* Overflow */
+
+        LDR     R4,=SVC_Table-4
+        LDR     R4,[R4,R1,LSL #2]       /* Load SVC Function Address */
+
+        LDM     R0,{R0-R3,R12}          /* Read R0-R3,R12 from stack */
+        BLX     R4                      /* Call SVC Function */
+
+        MRS     R12,PSP
+        STM     R12,{R0-R3}             /* Function return values */
+SVC_Done:
+        POP     {R4,PC}                 /* RETI */
+
+        .fnend
+        .size   SVC_Handler, .-SVC_Handler
+        
+
+/*-------------------------- PendSV_Handler ---------------------------------*/
+
+#       void PendSV_Handler (void);
+
+        .thumb_func
+        .type   PendSV_Handler, %function
+        .global PendSV_Handler
+        .global Sys_Switch
+PendSV_Handler:
+        .ifdef  IFX_XMC4XXX
+        .global PendSV_Handler_Veneer
+PendSV_Handler_Veneer:
+        .endif
+        .fnstart
+        .cantunwind
+
+        PUSH    {R4,LR}                 /* Save EXC_RETURN */
+        BL      rt_pop_req
+
+Sys_Switch:
+        POP     {R4,LR}                 /* Restore EXC_RETURN */
+
+        LDR     R3,=os_tsk
+        LDM     R3,{R1,R2}              /* os_tsk.run, os_tsk.new */
+        CMP     R1,R2
+        .ifdef  IFX_XMC4XXX
+        ITT     EQ
+        PUSHEQ  {LR}
+        POPEQ   {PC}
+        .else
+        IT      EQ
+        BXEQ    LR                      /* RETI, no task switch */
+        .endif
+
+        MRS     R12,PSP                 /* Read PSP */
+        TST     LR,#0x10                /* is it extended frame? */
+        ITTE    EQ
+        VSTMDBEQ R12!,{S16-S31}         /* yes, stack also VFP hi-regs */
+        MOVEQ   R0,#0x01                /* os_tsk->stack_frame val */
+        MOVNE   R0,#0x00
+        STRB    R0,[R1,#TCB_STACKF]     /* os_tsk.run->stack_frame = val */
+        STMDB   R12!,{R4-R11}           /* Save Old context */
+        STR     R12,[R1,#TCB_TSTACK]    /* Update os_tsk.run->tsk_stack */
+
+        PUSH    {R2,R3}
+        BL      rt_stk_check            /* Check for Stack overflow */
+        POP     {R2,R3}
+
+        STR     R2,[R3]                 /* os_tsk.run = os_tsk.new */
+
+        LDR     R12,[R2,#TCB_TSTACK]    /* os_tsk.new->tsk_stack */
+        LDMIA   R12!,{R4-R11}           /* Restore New Context */
+        LDRB    R0,[R2,#TCB_STACKF]     /* Stack Frame */
+        CMP     R0,#0                   /* Basic/Extended Stack Frame */
+        ITTE    NE
+        VLDMIANE R12!,{S16-S31}         /* restore VFP hi-registers */
+        MVNNE   LR,#~0xFFFFFFED         /* set EXC_RETURN value */
+        MVNEQ   LR,#~0xFFFFFFFD
+        MSR     PSP,R12                 /* Write PSP */
+
+Sys_Exit:
+        .ifdef  IFX_XMC4XXX
+        PUSH    {LR}
+        POP     {PC}
+        .else
+        BX      LR                      /* Return to Thread Mode */
+        .endif
+
+        .fnend
+        .size   PendSV_Handler, .-PendSV_Handler
+
+
+/*-------------------------- SysTick_Handler --------------------------------*/
+
+#       void SysTick_Handler (void);
+
+        .thumb_func
+        .type   SysTick_Handler, %function
+        .global SysTick_Handler
+SysTick_Handler:
+        .ifdef  IFX_XMC4XXX
+        .global SysTick_Handler_Veneer
+SysTick_Handler_Veneer:
+        .endif
+        .fnstart
+        .cantunwind
+
+        PUSH    {R4,LR}                 /* Save EXC_RETURN */
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   SysTick_Handler, .-SysTick_Handler
+
+
+/*-------------------------- OS_Tick_Handler --------------------------------*/
+
+#       void OS_Tick_Handler (void);
+
+        .thumb_func
+        .type   OS_Tick_Handler, %function
+        .global OS_Tick_Handler
+OS_Tick_Handler:
+        .fnstart
+        .cantunwind
+
+        PUSH    {R4,LR}                 /* Save EXC_RETURN */
+        BL      os_tick_irqack
+        BL      rt_systick
+        B       Sys_Switch
+
+        .fnend
+        .size   OS_Tick_Handler, .-OS_Tick_Handler
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtx/TARGET_M4/TOOLCHAIN_GCC/SVC_Table.s	Mon Aug 05 14:12:52 2013 +0300
@@ -0,0 +1,56 @@
+;/*----------------------------------------------------------------------------
+; *      RL-ARM - RTX
+; *----------------------------------------------------------------------------
+; *      Name:    SVC_TABLE.S
+; *      Purpose: Pre-defined SVC Table for Cortex-M
+; *      Rev.:    V4.70
+; *----------------------------------------------------------------------------
+; *
+; * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
+; * All rights reserved.
+; * Redistribution and use in source and binary forms, with or without
+; * modification, are permitted provided that the following conditions are met:
+; *  - Redistributions of source code must retain the above copyright
+; *    notice, this list of conditions and the following disclaimer.
+; *  - Redistributions in binary form must reproduce the above copyright
+; *    notice, this list of conditions and the following disclaimer in the
+; *    documentation and/or other materials provided with the distribution.
+; *  - Neither the name of ARM  nor the names of its contributors may be used 
+; *    to endorse or promote products derived from this software without 
+; *    specific prior written permission.
+; *
+; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; * POSSIBILITY OF SUCH DAMAGE.
+; *---------------------------------------------------------------------------*/
+
+
+        .file   "SVC_Table.S"
+
+
+        .section ".svc_table"
+
+        .global  SVC_Table
+SVC_Table:
+/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
+#       .long   __SVC_1                 /* user SVC function */
+SVC_End:
+
+        .global  SVC_Count
+SVC_Count:
+        .long   (SVC_End-SVC_Table)/4
+
+
+        .end
+
+/*----------------------------------------------------------------------------
+ * end of file
+ *---------------------------------------------------------------------------*/
--- a/rtx/cmsis_os.h	Thu May 30 17:08:58 2013 +0100
+++ b/rtx/cmsis_os.h	Mon Aug 05 14:12:52 2013 +0300
@@ -115,11 +115,9 @@
 #define CMSIS_OS_RTX
 
 // The stack space occupied is mainly dependent on the underling C standard library
-#if defined(TOOLCHAIN_GCC_ARM) || defined(TOOLCHAIN_CS_ARM) || defined(TOOLCHAIN_CR_ARM) || defined(TOOLCHAIN_GCC_CR)
+#if defined(TOOLCHAIN_GCC) || defined(TOOLCHAIN_ARM_STD)
 #    define WORDS_STACK_SIZE   512
-#elif defined(TOOLCHAIN_ARM)
-#    define WORDS_STACK_SIZE   512
-#elif defined(TOOLCHAIN_uARM)
+#elif defined(TOOLCHAIN_ARM_MICRO)
 #    define WORDS_STACK_SIZE   128
 #endif