From 2f1343e2774ac66a35c63ee90535265d67c78feb Mon Sep 17 00:00:00 2001 From: bernie Date: Sun, 10 Aug 2008 09:26:29 +0000 Subject: [PATCH] Drop ABI versioning for asm_switch_context(), as it could be easily done by renaming the symbol git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1590 38d2e660-2303-0410-9eaa-f027e97ec537 --- bertos/cpu/arm/hw/switch_arm.S | 18 +-------- bertos/cpu/avr/hw/switch_avr.S | 55 ++++++++++++++++------------ bertos/cpu/dsp56k/hw/switch_dsp56k.c | 38 +------------------ bertos/emul/switch_i386.S | 18 ++------- bertos/emul/switch_x86_64.s | 16 +------- bertos/kern/proc.c | 3 -- 6 files changed, 40 insertions(+), 108 deletions(-) diff --git a/bertos/cpu/arm/hw/switch_arm.S b/bertos/cpu/arm/hw/switch_arm.S index 531b18a5..bde843cd 100644 --- a/bertos/cpu/arm/hw/switch_arm.S +++ b/bertos/cpu/arm/hw/switch_arm.S @@ -26,7 +26,7 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2007 Develer S.r.l. (http://www.develer.com/) + * Copyright 2007, 2008 Develer S.r.l. (http://www.develer.com/) * * --> * @@ -38,14 +38,7 @@ * \author Francesco Sacchi */ - -/* - * NOTE: At each change of this function affecting proc.c - * (i.e. arguments, data stored in the stack) bump up version - * number in asm_switch_version(). - */ - -/* void asm_switch_context(void **new_sp, void **save_sp) */ +/* void asm_switch_context(void **new_sp [r0], void **save_sp [r1]) */ .globl asm_switch_context asm_switch_context: mrs r2, cpsr /* Save status. */ @@ -58,10 +51,3 @@ asm_switch_context: msr cpsr, r2 /* restore flags reg. */ mov pc, lr - - -/* int asm_switch_version(void) */ -.globl asm_switch_version -asm_switch_version: - mov r0, #1 - mov pc, lr diff --git a/bertos/cpu/avr/hw/switch_avr.S b/bertos/cpu/avr/hw/switch_avr.S index b34e3f54..50280292 100644 --- a/bertos/cpu/avr/hw/switch_avr.S +++ b/bertos/cpu/avr/hw/switch_avr.S @@ -1,28 +1,46 @@ /*! * \file * + * This file is part of BeRTOS. * - * \brief AVR context switch + * Bertos 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. * - * \version $Id$ + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. * + * Copyright 2004, 2008 Develer S.r.l. (http://www.develer.com/) + * Copyright 1999, 2000, 2001 Bernie Innocenti + * --> + * + * \version $Id$ * \author Bernie Innocenti * \author Stefano Fedrigo + * + * \brief AVR context switch + * */ #include -/* - * NOTE: At each change of this function affecting proc.c - * (i.e. arguments, data stored in the stack) bump up version - * number in asm_switch_version(). - */ - -/* void asm_switch_context(void **new_sp, void **save_sp) */ +/* void asm_switch_context(void **new_sp [r24:r25], void **save_sp [r22:r23]) */ .globl asm_switch_context asm_switch_context: @@ -66,8 +84,6 @@ asm_switch_context: ; push r30 ;caller-save ; push r31 ;caller-save -; First parameter (new_sp) is in r24:r25, second (save_sp) in r22:r23 - in r18,SPL-__SFR_OFFSET ; r18:r19 = SP in r19,SPH-__SFR_OFFSET movw r26,r22 ; X = save_sp @@ -124,12 +140,3 @@ asm_switch_context: out SREG-__SFR_OFFSET,r0 ret - - -/* int asm_switch_version(void) */ -.globl asm_switch_version -asm_switch_version: - ldi r24,lo8(1) - ldi r25,hi8(1) - ret - diff --git a/bertos/cpu/dsp56k/hw/switch_dsp56k.c b/bertos/cpu/dsp56k/hw/switch_dsp56k.c index 41a12056..116483e2 100644 --- a/bertos/cpu/dsp56k/hw/switch_dsp56k.c +++ b/bertos/cpu/dsp56k/hw/switch_dsp56k.c @@ -26,44 +26,16 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2004 Develer S.r.l. (http://www.develer.com/) - * + * Copyright 2004, 2008 Develer S.r.l. (http://www.develer.com/) * --> * * \version $Id$ - * * \author Giovanni Bajo * * \brief DSP5680x task switching support */ -/*#* - *#* $Log$ - *#* Revision 1.7 2006/07/19 12:56:27 bernie - *#* Convert to new Doxygen style. - *#* - *#* Revision 1.6 2006/02/24 01:17:05 bernie - *#* Update for new emulator. - *#* - *#* Revision 1.5 2005/11/04 16:20:02 bernie - *#* Fix reference to README.devlib in header. - *#* - *#* Revision 1.4 2004/08/25 14:12:09 rasky - *#* Aggiornato il comment block dei log RCS - *#* - *#* Revision 1.3 2004/07/30 14:24:16 rasky - *#* Task switching con salvataggio perfetto stato di interrupt (SR) - *#* Kernel monitor per dump informazioni su stack dei processi - *#* - *#* Revision 1.2 2004/06/03 11:27:09 bernie - *#* Add dual-license information. - *#* - *#* Revision 1.1 2004/05/23 17:27:00 bernie - *#* Import kern/ subdirectory. - *#* - *#*/ - -void asm_switch_context(void ** new_sp/*R2*/, void ** save_sp/*R3*/); +void asm_switch_context(void ** new_sp /* R2 */, void ** save_sp /* R3 */); asm void asm_switch_context(void ** new_sp, void ** save_sp) { lea (SP)+ @@ -127,9 +99,3 @@ asm void asm_switch_context(void ** new_sp, void ** save_sp) ; it, so that interrupt status is preserved across the tasks. rti } - -int asm_switch_version(void); -int asm_switch_version(void) -{ - return 1; -} diff --git a/bertos/emul/switch_i386.S b/bertos/emul/switch_i386.S index 0b2f0937..5032b31c 100644 --- a/bertos/emul/switch_i386.S +++ b/bertos/emul/switch_i386.S @@ -26,9 +26,8 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2004 Develer S.r.l. (http://www.develer.com/) + * Copyright 2004, 2008 Develer S.r.l. (http://www.develer.com/) * Copyright 1999, 2000, 2001 Bernie Innocenti - * This file is part of DevLib - See devlib/README for information. * --> * * \version $Id$ @@ -37,18 +36,14 @@ * \brief i386 context switch */ - - #ifdef __APPLE__ - //This workaround is necessary to compile under OS X assembler. + // This workaround is necessary to compile under OS X assembler. #define SWITCH_CONTEXT _asm_switch_context - #define SWITCH_VERSION _asm_switch_version #else #define SWITCH_CONTEXT asm_switch_context - #define SWITCH_VERSION asm_switch_version #endif -/* void asm_switch_context(void ** new_sp, void ** save_sp) */ +/* void asm_switch_context(void ** new_sp [sp+4], void ** save_sp [sp+8]) */ .globl SWITCH_CONTEXT SWITCH_CONTEXT: pushl %eax @@ -70,10 +65,3 @@ SWITCH_CONTEXT: popl %ebx popl %eax ret - -/* int asm_switch_version(void) */ -.globl SWITCH_VERSION -SWITCH_VERSION: - mov $1,%eax - ret - diff --git a/bertos/emul/switch_x86_64.s b/bertos/emul/switch_x86_64.s index 61859834..1632c816 100644 --- a/bertos/emul/switch_x86_64.s +++ b/bertos/emul/switch_x86_64.s @@ -26,9 +26,8 @@ * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. * - * Copyright 2004 Develer S.r.l. (http://www.develer.com/) + * Copyright 2004, 2008 Develer S.r.l. (http://www.develer.com/) * Copyright 1999, 2000, 2001 Bernie Innocenti - * This file is part of DevLib - See devlib/README for information. * --> * * \version $Id$ @@ -37,11 +36,7 @@ * \brief i386 context switch */ -/* I know it's ugly... */ -/* .intel_syntax */ - -/* void AsmSwitchContext(void **new_sp, void **save_sp) */ -/* %rdi %rsi */ +/* void asm_switch_context(void **new_sp [%rdi], void **save_sp [%rsi]) */ .globl asm_switch_context asm_switch_context: pushq %rax @@ -61,10 +56,3 @@ asm_switch_context: popq %rbx popq %rax ret - -/* int asm_switch_version(void) */ -.globl asm_switch_version -asm_switch_version: - mov $1,%rax - ret - diff --git a/bertos/kern/proc.c b/bertos/kern/proc.c index 32e3afe8..37b36e07 100644 --- a/bertos/kern/proc.c +++ b/bertos/kern/proc.c @@ -63,7 +63,6 @@ * \note This function *MUST* preserve also the status of the interrupts. */ EXTERN_C void asm_switch_context(cpustack_t **new_sp, cpustack_t **save_sp); -EXTERN_C int asm_switch_version(void); /* * The scheduer tracks ready and waiting processes @@ -129,8 +128,6 @@ void proc_init(void) proc_init_struct(&MainProcess); CurrentProcess = &MainProcess; - /* Make sure the assembly routine is up-to-date with us */ - ASSERT(asm_switch_version() == 1); MOD_INIT(proc); } -- 2.25.1