From 7a07664e1dc4e1b93ce7a3e52369cfd2b44a68b9 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Wed, 16 Jul 2008 10:08:24 +0000 Subject: [PATCH] Change projects to split the dsPIC and PIC24 taskYIELD implementations. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@414 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../MPLAB/PIC24_dsPIC/portasm_PIC24.S | 100 ++++++++++++++++++ ...{portasm_PIC24_dsPIC.S => portasm_dsPIC.S} | 51 ++++----- 2 files changed, 122 insertions(+), 29 deletions(-) create mode 100644 Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S rename Source/portable/MPLAB/PIC24_dsPIC/{portasm_PIC24_dsPIC.S => portasm_dsPIC.S} (86%) 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 000000000..de6e15102 --- /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 similarity index 86% rename from Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24_dsPIC.S rename to Source/portable/MPLAB/PIC24_dsPIC/portasm_dsPIC.S index 2354f0018..0bcfc0ac3 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 -- 2.39.5