]> git.sur5r.net Git - freertos/commitdiff
Setup to work with both ARM and THUMB modes.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 23 Oct 2008 15:58:17 +0000 (15:58 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 23 Oct 2008 15:58:17 +0000 (15:58 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@516 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Source/portable/RVDS/ARM7_LPC21xx/portASM.s
Source/portable/RVDS/ARM7_LPC21xx/portmacro.h

index 57740324ab6c86c7e21a0e79a3c6154caba4b769..9960fbfeeb6047da84126b9ceb5a1d978727328d 100644 (file)
        EXPORT  vPortYieldProcessor\r
        EXPORT  vPortStartFirstTask\r
        EXPORT  vPreemptiveTick\r
-\r
+       EXPORT  vPortYield\r
 \r
 \r
 VICVECTADDR    EQU     0xFFFFF030\r
 T0IR           EQU     0xE0004000\r
 T0MATCHBIT     EQU     0x00000001\r
 \r
-\r
        ARM\r
        AREA    PORT_ASM, CODE, READONLY\r
-       PRESERVE8\r
 \r
 \r
 \r
@@ -74,8 +72,17 @@ T0MATCHBIT   EQU     0x00000001
 ; setup by pxPortInitialiseStack\r
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 vPortStartFirstTask\r
+\r
+       PRESERVE8\r
+\r
        portRESTORE_CONTEXT\r
 \r
+vPortYield\r
+\r
+       PRESERVE8\r
+\r
+       SVC 0\r
+       bx lr\r
 \r
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 ; Interrupt service routine for the SWI interrupt.  The vector table is\r
@@ -87,6 +94,8 @@ vPortStartFirstTask
 \r
 vPortYieldProcessor\r
 \r
+       PRESERVE8\r
+\r
        ; Within an IRQ ISR the link register has an offset from the true return \r
        ; address, but an SWI ISR does not.  Add the offset manually so the same \r
        ; ISR return code can be used in both cases.\r
@@ -109,6 +118,9 @@ vPortYieldProcessor
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        \r
 \r
 vPreemptiveTick\r
+\r
+       PRESERVE8\r
+\r
        portSAVE_CONTEXT                                        ; Save the context of the current task. \r
 \r
        LDR R0, =vTaskIncrementTick                     ; Increment the tick count.  \r
index daa330655f2c9504876b4b67afd4f0308afcec91..a659b5d2162b1816f7f10bf25b9c4420921aa8f1 100644 (file)
@@ -110,7 +110,8 @@ extern void vTaskSwitchContext(void);                                                \
                }                                                                                                        \\r
 }                                                                                                                       \\r
 \r
-#define portYIELD() __asm{ SVC 0 }\r
+extern void vPortYield( void );\r
+#define portYIELD() vPortYield()\r
 \r
 \r
 /* Critical section management. */\r