Change projects to split the dsPIC and PIC24 taskYIELD implementations.

This commit is contained in:
Richard Barry 2008-07-16 10:08:24 +00:00
parent e4c0740eaa
commit 3ab4d1f87f
2 changed files with 122 additions and 29 deletions

View file

@ -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

View file

@ -67,20 +67,17 @@ _vPortYield:
PUSH W14 PUSH W14
PUSH RCOUNT PUSH RCOUNT
PUSH TBLPAG PUSH TBLPAG
PUSH ACCAL
#ifdef MPLAB_DSPIC_PORT PUSH ACCAH
PUSH ACCAL PUSH ACCAU
PUSH ACCAH PUSH ACCBL
PUSH ACCAU PUSH ACCBH
PUSH ACCBL PUSH ACCBU
PUSH ACCBH PUSH DCOUNT
PUSH ACCBU PUSH DOSTARTL
PUSH DCOUNT PUSH DOSTARTH
PUSH DOSTARTL PUSH DOENDL
PUSH DOSTARTH PUSH DOENDH
PUSH DOENDL
PUSH DOENDH
#endif
PUSH CORCON PUSH CORCON
@ -98,21 +95,17 @@ _vPortYield:
MOV W0, _uxCriticalNesting MOV W0, _uxCriticalNesting
POP PSVPAG POP PSVPAG
POP CORCON POP CORCON
POP DOENDH
#ifdef MPLAB_DSPIC_PORT POP DOENDL
POP DOENDH POP DOSTARTH
POP DOENDL POP DOSTARTL
POP DOSTARTH POP DCOUNT
POP DOSTARTL POP ACCBU
POP DCOUNT POP ACCBH
POP ACCBU POP ACCBL
POP ACCBH POP ACCAU
POP ACCBL POP ACCAH
POP ACCAU POP ACCAL
POP ACCAH
POP ACCAL
#endif
POP TBLPAG POP TBLPAG
POP RCOUNT /* Restore the registers from the stack. */ POP RCOUNT /* Restore the registers from the stack. */
POP W14 POP W14