From: RichardBarry Date: Mon, 2 Feb 2009 18:38:48 +0000 (+0000) Subject: Change name of asm file to be consistent with other ports. X-Git-Tag: V5.1.2~30 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4bcc48e0b91e251934cb635d1e54ecdc8dc7fe6e;p=freertos Change name of asm file to be consistent with other ports. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@666 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- diff --git a/Source/portable/IAR/78K0R/portasm.s26 b/Source/portable/IAR/78K0R/portasm.s26 new file mode 100644 index 000000000..eaf88998d --- /dev/null +++ b/Source/portable/IAR/78K0R/portasm.s26 @@ -0,0 +1,230 @@ +; FreeRTOS.org V5.1.1 - 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. +; +; *************************************************************************** +; See http://www.FreeRTOS.org for documentation, latest information, license +; and contact details. Please ensure to read the configuration and relevant +; port sections of the online documentation. +; *************************************************************************** +; +;------------------------------------------------------------------------------ +; Note: Select the correct include files for the device used by the application. +#include "FreeRTOSConfig.h" +;------------------------------------------------------------------------------ + +#if __CORE__ != __78K0R__ + #error "This file is only for 78K0R Devices" +#endif + +#define CS 0xFFFFC +#define ES 0xFFFFD + +; Functions implemented in this file +;------------------------------------------------------------------------------ + + PUBLIC vPortYield + PUBLIC vPortStart + +; Functions used by scheduler +;------------------------------------------------------------------------------ + EXTERN vTaskSwitchContext + EXTERN vTaskIncrementTick + +; Variables used by scheduler +;------------------------------------------------------------------------------ + EXTERN pxCurrentTCB + EXTERN usCriticalNesting + + +; Tick ISR Prototype +;------------------------------------------------------------------------------ + EXTERN ?CL78K0R_V2_L00 + + PUBWEAK `??MD_INTTM05??INTVEC 68` + PUBLIC MD_INTTM05 + +MD_INTTM05 SYMBOL "MD_INTTM05" +`??MD_INTTM05??INTVEC 68` SYMBOL "??INTVEC 68", MD_INTTM05 + + +;------------------------------------------------------------------------------ +; portSAVE_CONTEXT MACRO +; Saves the context of the remaining general purpose registers, CS and ES +; (only in far memory mode) registers +; the usCriticalNesting Value and the Stack Pointer +; of the active Task onto the task stack +;------------------------------------------------------------------------------ +portSAVE_CONTEXT MACRO + + PUSH HL +#if configMEMORY_MODE == 1 + MOV A, CS ; save CS register + XCH A, X + MOV A, ES ; save ES register + PUSH AX +#else + MOV A, CS ; save CS register + PUSH AX +#endif + PUSH DE ; save the remaining general purpose registers + PUSH BC + MOVW AX, usCriticalNesting ; save the usCriticalNesting value + PUSH AX + MOVW AX, pxCurrentTCB ; save the Stack pointer + MOVW HL, AX + MOVW AX, SP + MOVW [HL], AX + ENDM +;------------------------------------------------------------------------------ + +;------------------------------------------------------------------------------ +; portRESTORE_CONTEXT MACRO +; Restores the context of the Stack Pointer, usCriticalNesting +; value, general purpose registers and the CS and ES (only in far memory mode) +; of the selected task from the task stack +;------------------------------------------------------------------------------ + +portRESTORE_CONTEXT MACRO + MOVW AX, pxCurrentTCB ; restore the Stack pointer + MOVW HL, AX + MOVW AX, [HL] + MOVW SP, AX + POP AX ; restore usCriticalNesting value + MOVW usCriticalNesting, AX + POP BC ; restore the necessary general purpose registers + POP DE +#if configMEMORY_MODE == 1 + POP AX ; restore the ES register + MOV ES, A + XCH A, X ; restore the CS register + MOV CS, A +#else + POP AX + MOV CS, A ; restore CS register +#endif + POP HL ; restore general purpose register HL + ENDM +;------------------------------------------------------------------------------ + +;------------------------------------------------------------------------------ +; Port Yield function to check for a Task switch in the cooperative mode +; +; Input: NONE +; +; Call: CALL vPortYield +; +; Output: NONE +; +;------------------------------------------------------------------------------ + RSEG CODE:CODE +vPortYield: + PUSH PSW ; save Task PSW (Program Status Word) + DI ; global disable interrupt + PUSH AX + portSAVE_CONTEXT ; Save the context of the current task. + CALL vTaskSwitchContext ; Call the scheduler. + portRESTORE_CONTEXT ; Restore the context of whichever task the ... + POP AX + EI ; (re-)enable global interrupts + POP PSW ; restore active task PSW + RET ; ... scheduler decided should run. + + +;------------------------------------------------------------------------------ +; Restore the context of the first task that is going to run. +; +; Input: NONE +; +; Call: CALL vPortStart +; +; Output: NONE +; +;------------------------------------------------------------------------------ + RSEG CODE:CODE +vPortStart: + portRESTORE_CONTEXT ; Restore the context of whichever task the ... + POP AX + EI ; enable global interrupts + POP PSW ; restore active task PSW + ret ; ... scheduler decided should run. + +;------------------------------------------------------------------------------ +; Perform the necessary steps of the Tick Count Increment and Task Switch +; depending on the chosen kernel configuration +; +; Input: NONE +; +; Call: ISR +; +; Output: NONE +; +;------------------------------------------------------------------------------ +#if configUSE_PREEMPTION == 1 + +MD_INTTM05: + PUSH AX ; create temporary dummy area on stack + PUSH AX ; save AX Register to stack + MOVW AX, [SP+6] ; get PSW + MOVW [SP+2], AX ; write PSW into dummy area on the stack + + portSAVE_CONTEXT ; Save the context of the current task. + call vTaskIncrementTick ; Call the timer tick function. + call vTaskSwitchContext ; Call the scheduler. + portRESTORE_CONTEXT ; Restore the context of whichever task the ... + ; ... scheduler decided should run. + + MOVW AX, [SP+2] ; get PSW from stack + MOVW [SP+6], AX ; write PSW to expected location for reti + POP AX ; restore AX + MOVW [SP+0], AX ; rewrite dummy stack area to expected value + POP AX + RETI +#else + +MD_INTTM05: + PUSH AX ; save necessary general purpose register... + PUSH HL ; ...used by the ISR + MOVW AX, CS ; save CS register + PUSH AX + CALL vTaskIncrementTick ; Call the timer tick function. + POP AX + MOVW CS, AX ; restore CS register + POP HL ; restore used general purpose registers + POP AX + RETI +#endif + + REQUIRE ?CL78K0R_V2_L00 + COMMON INTVEC:CODE:ROOT(1) ; set ISR location to the Interrupt vector table + ORG 68 +`??MD_INTTM05??INTVEC 68`: + DW MD_INTTM05 + ; set value for the usCriticalNesting + RSEG NEAR_ID:CONST:SORT:NOROOT(1) +`?`: + DW 10 + +;#endif + + END \ No newline at end of file diff --git a/Source/portable/IAR/78K0R/portmacro.h b/Source/portable/IAR/78K0R/portmacro.h index a311b4aa6..2cbbf223c 100644 --- a/Source/portable/IAR/78K0R/portmacro.h +++ b/Source/portable/IAR/78K0R/portmacro.h @@ -19,7 +19,7 @@ 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 + 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. @@ -37,13 +37,13 @@ Please ensure to read the configuration and relevant port sections of the online documentation. - http://www.FreeRTOS.org - Documentation, latest information, license and + http://www.FreeRTOS.org - Documentation, latest information, license and contact details. - http://www.SafeRTOS.com - A version that is certified for use in safety + http://www.SafeRTOS.com - A version that is certified for use in safety critical systems. - http://www.OpenRTOS.com - Commercial support, development, porting, + http://www.OpenRTOS.com - Commercial support, development, porting, licensing and training services. */ @@ -55,7 +55,7 @@ extern "C" { #endif /*----------------------------------------------------------- - * Port specific definitions. + * Port specific definitions. * * The settings in this file configure FreeRTOS correctly for the * given hardware and compiler. @@ -65,13 +65,13 @@ extern "C" { */ /* Type definitions. */ - + #define portCHAR char #define portFLOAT float #define portDOUBLE double #define portLONG long #define portSHORT short -#define portSTACK_TYPE unsigned int +#define portSTACK_TYPE unsigned short #define portBASE_TYPE int #if (configUSE_16_BIT_TICKS==1) @@ -144,9 +144,9 @@ extern void portRESTORE_CONTEXT( void ); static __interrupt void P0_isr (void); -/* --------------------------------------------------------------------------*/ +/* --------------------------------------------------------------------------*/ /* Option-bytes and security ID */ -/* --------------------------------------------------------------------------*/ +/* --------------------------------------------------------------------------*/ #define OPT_BYTES_SIZE 4 #define SECU_ID_SIZE 10 #define WATCHDOG_DISABLED 0x00 diff --git a/Source/portable/IAR/78K0R/portmacro.s26 b/Source/portable/IAR/78K0R/portmacro.s26 deleted file mode 100644 index eaf88998d..000000000 --- a/Source/portable/IAR/78K0R/portmacro.s26 +++ /dev/null @@ -1,230 +0,0 @@ -; FreeRTOS.org V5.1.1 - 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. -; -; *************************************************************************** -; See http://www.FreeRTOS.org for documentation, latest information, license -; and contact details. Please ensure to read the configuration and relevant -; port sections of the online documentation. -; *************************************************************************** -; -;------------------------------------------------------------------------------ -; Note: Select the correct include files for the device used by the application. -#include "FreeRTOSConfig.h" -;------------------------------------------------------------------------------ - -#if __CORE__ != __78K0R__ - #error "This file is only for 78K0R Devices" -#endif - -#define CS 0xFFFFC -#define ES 0xFFFFD - -; Functions implemented in this file -;------------------------------------------------------------------------------ - - PUBLIC vPortYield - PUBLIC vPortStart - -; Functions used by scheduler -;------------------------------------------------------------------------------ - EXTERN vTaskSwitchContext - EXTERN vTaskIncrementTick - -; Variables used by scheduler -;------------------------------------------------------------------------------ - EXTERN pxCurrentTCB - EXTERN usCriticalNesting - - -; Tick ISR Prototype -;------------------------------------------------------------------------------ - EXTERN ?CL78K0R_V2_L00 - - PUBWEAK `??MD_INTTM05??INTVEC 68` - PUBLIC MD_INTTM05 - -MD_INTTM05 SYMBOL "MD_INTTM05" -`??MD_INTTM05??INTVEC 68` SYMBOL "??INTVEC 68", MD_INTTM05 - - -;------------------------------------------------------------------------------ -; portSAVE_CONTEXT MACRO -; Saves the context of the remaining general purpose registers, CS and ES -; (only in far memory mode) registers -; the usCriticalNesting Value and the Stack Pointer -; of the active Task onto the task stack -;------------------------------------------------------------------------------ -portSAVE_CONTEXT MACRO - - PUSH HL -#if configMEMORY_MODE == 1 - MOV A, CS ; save CS register - XCH A, X - MOV A, ES ; save ES register - PUSH AX -#else - MOV A, CS ; save CS register - PUSH AX -#endif - PUSH DE ; save the remaining general purpose registers - PUSH BC - MOVW AX, usCriticalNesting ; save the usCriticalNesting value - PUSH AX - MOVW AX, pxCurrentTCB ; save the Stack pointer - MOVW HL, AX - MOVW AX, SP - MOVW [HL], AX - ENDM -;------------------------------------------------------------------------------ - -;------------------------------------------------------------------------------ -; portRESTORE_CONTEXT MACRO -; Restores the context of the Stack Pointer, usCriticalNesting -; value, general purpose registers and the CS and ES (only in far memory mode) -; of the selected task from the task stack -;------------------------------------------------------------------------------ - -portRESTORE_CONTEXT MACRO - MOVW AX, pxCurrentTCB ; restore the Stack pointer - MOVW HL, AX - MOVW AX, [HL] - MOVW SP, AX - POP AX ; restore usCriticalNesting value - MOVW usCriticalNesting, AX - POP BC ; restore the necessary general purpose registers - POP DE -#if configMEMORY_MODE == 1 - POP AX ; restore the ES register - MOV ES, A - XCH A, X ; restore the CS register - MOV CS, A -#else - POP AX - MOV CS, A ; restore CS register -#endif - POP HL ; restore general purpose register HL - ENDM -;------------------------------------------------------------------------------ - -;------------------------------------------------------------------------------ -; Port Yield function to check for a Task switch in the cooperative mode -; -; Input: NONE -; -; Call: CALL vPortYield -; -; Output: NONE -; -;------------------------------------------------------------------------------ - RSEG CODE:CODE -vPortYield: - PUSH PSW ; save Task PSW (Program Status Word) - DI ; global disable interrupt - PUSH AX - portSAVE_CONTEXT ; Save the context of the current task. - CALL vTaskSwitchContext ; Call the scheduler. - portRESTORE_CONTEXT ; Restore the context of whichever task the ... - POP AX - EI ; (re-)enable global interrupts - POP PSW ; restore active task PSW - RET ; ... scheduler decided should run. - - -;------------------------------------------------------------------------------ -; Restore the context of the first task that is going to run. -; -; Input: NONE -; -; Call: CALL vPortStart -; -; Output: NONE -; -;------------------------------------------------------------------------------ - RSEG CODE:CODE -vPortStart: - portRESTORE_CONTEXT ; Restore the context of whichever task the ... - POP AX - EI ; enable global interrupts - POP PSW ; restore active task PSW - ret ; ... scheduler decided should run. - -;------------------------------------------------------------------------------ -; Perform the necessary steps of the Tick Count Increment and Task Switch -; depending on the chosen kernel configuration -; -; Input: NONE -; -; Call: ISR -; -; Output: NONE -; -;------------------------------------------------------------------------------ -#if configUSE_PREEMPTION == 1 - -MD_INTTM05: - PUSH AX ; create temporary dummy area on stack - PUSH AX ; save AX Register to stack - MOVW AX, [SP+6] ; get PSW - MOVW [SP+2], AX ; write PSW into dummy area on the stack - - portSAVE_CONTEXT ; Save the context of the current task. - call vTaskIncrementTick ; Call the timer tick function. - call vTaskSwitchContext ; Call the scheduler. - portRESTORE_CONTEXT ; Restore the context of whichever task the ... - ; ... scheduler decided should run. - - MOVW AX, [SP+2] ; get PSW from stack - MOVW [SP+6], AX ; write PSW to expected location for reti - POP AX ; restore AX - MOVW [SP+0], AX ; rewrite dummy stack area to expected value - POP AX - RETI -#else - -MD_INTTM05: - PUSH AX ; save necessary general purpose register... - PUSH HL ; ...used by the ISR - MOVW AX, CS ; save CS register - PUSH AX - CALL vTaskIncrementTick ; Call the timer tick function. - POP AX - MOVW CS, AX ; restore CS register - POP HL ; restore used general purpose registers - POP AX - RETI -#endif - - REQUIRE ?CL78K0R_V2_L00 - COMMON INTVEC:CODE:ROOT(1) ; set ISR location to the Interrupt vector table - ORG 68 -`??MD_INTTM05??INTVEC 68`: - DW MD_INTTM05 - ; set value for the usCriticalNesting - RSEG NEAR_ID:CONST:SORT:NOROOT(1) -`?`: - DW 10 - -;#endif - - END \ No newline at end of file