summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2008-07-16 10:08:24 +0000
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2008-07-16 10:08:24 +0000
commitd2ee40bc80615ff692b55c9689811c30ca3c227f (patch)
treef38708241275d70fd1b4185c13e47a0ef266a7d1
parent49060fcce0a17e19a27325867eea1d5266f68768 (diff)
downloadfreertos-d2ee40bc80615ff692b55c9689811c30ca3c227f.tar.gz
freertos-d2ee40bc80615ff692b55c9689811c30ca3c227f.tar.bz2
freertos-d2ee40bc80615ff692b55c9689811c30ca3c227f.tar.xz
Change projects to split the dsPIC and PIC24 taskYIELD implementations.
git-svn-id: https://freertos.svn.sourceforge.net/svnroot/freertos/trunk@414 1d2547de-c912-0410-9cb9-b8ca96c0e9e2
-rw-r--r--Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S100
-rw-r--r--Source/portable/MPLAB/PIC24_dsPIC/portasm_dsPIC.S (renamed from Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24_dsPIC.S)51
2 files changed, 122 insertions, 29 deletions
diff --git a/Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S b/Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S
new file mode 100644
index 00000000..de6e1510
--- /dev/null
+++ b/Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S
@@ -0,0 +1,100 @@
+/*
+ FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+ .global _vPortYield
+ .extern _vTaskSwitchContext
+ .extern uxCriticalNesting
+
+_vPortYield:
+
+ PUSH SR /* Save the SR used by the task.... */
+ PUSH W0 /* ....then disable interrupts. */
+ MOV #32, W0
+ MOV W0, SR
+ PUSH W1 /* Save registers to the stack. */
+ PUSH.D W2
+ PUSH.D W4
+ PUSH.D W6
+ PUSH.D W8
+ PUSH.D W10
+ PUSH.D W12
+ PUSH W14
+ PUSH RCOUNT
+ PUSH TBLPAG
+
+ PUSH CORCON
+ PUSH PSVPAG
+ MOV _uxCriticalNesting, W0 /* Save the critical nesting counter for the task. */
+ PUSH W0
+ MOV _pxCurrentTCB, W0 /* Save the new top of stack into the TCB. */
+ MOV W15, [W0]
+
+ call _vTaskSwitchContext
+
+ MOV _pxCurrentTCB, W0 /* Restore the stack pointer for the task. */
+ MOV [W0], W15
+ POP W0 /* Restore the critical nesting counter for the task. */
+ MOV W0, _uxCriticalNesting
+ POP PSVPAG
+ POP CORCON
+ POP TBLPAG
+ POP RCOUNT /* Restore the registers from the stack. */
+ POP W14
+ POP.D W12
+ POP.D W10
+ POP.D W8
+ POP.D W6
+ POP.D W4
+ POP.D W2
+ POP.D W0
+ POP SR
+
+ return
+
+ .end
diff --git a/Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24_dsPIC.S b/Source/portable/MPLAB/PIC24_dsPIC/portasm_dsPIC.S
index 2354f001..0bcfc0ac 100644
--- a/Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24_dsPIC.S
+++ b/Source/portable/MPLAB/PIC24_dsPIC/portasm_dsPIC.S
@@ -67,20 +67,17 @@ _vPortYield:
PUSH W14
PUSH RCOUNT
PUSH TBLPAG
-
- #ifdef MPLAB_DSPIC_PORT
- PUSH ACCAL
- PUSH ACCAH
- PUSH ACCAU
- PUSH ACCBL
- PUSH ACCBH
- PUSH ACCBU
- PUSH DCOUNT
- PUSH DOSTARTL
- PUSH DOSTARTH
- PUSH DOENDL
- PUSH DOENDH
- #endif
+ PUSH ACCAL
+ PUSH ACCAH
+ PUSH ACCAU
+ PUSH ACCBL
+ PUSH ACCBH
+ PUSH ACCBU
+ PUSH DCOUNT
+ PUSH DOSTARTL
+ PUSH DOSTARTH
+ PUSH DOENDL
+ PUSH DOENDH
PUSH CORCON
@@ -98,21 +95,17 @@ _vPortYield:
MOV W0, _uxCriticalNesting
POP PSVPAG
POP CORCON
-
- #ifdef MPLAB_DSPIC_PORT
- POP DOENDH
- POP DOENDL
- POP DOSTARTH
- POP DOSTARTL
- POP DCOUNT
- POP ACCBU
- POP ACCBH
- POP ACCBL
- POP ACCAU
- POP ACCAH
- POP ACCAL
- #endif
-
+ POP DOENDH
+ POP DOENDL
+ POP DOSTARTH
+ POP DOSTARTL
+ POP DCOUNT
+ POP ACCBU
+ POP ACCBH
+ POP ACCBL
+ POP ACCAU
+ POP ACCAH
+ POP ACCAL
POP TBLPAG
POP RCOUNT /* Restore the registers from the stack. */
POP W14