/* //---------------------------------------------------------------------- // Copyright (C) 2006 - 2007 by the FRESCOR consortium: // // Universidad de Cantabria, SPAIN // University of York, UK // Scuola Superiore Sant'Anna, ITALY // Kaiserslautern University, GERMANY // Univ. Politecnica Valencia, SPAIN // Czech Technical University in Prague, CZECH REPUBLIC // ENEA SWEDEN // Thales Communication S.A. FRANCE // Visual Tools S.A. SPAIN // Rapita Systems Ltd UK // Evidence ITALY // // See http://www.frescor.org // // The FRESCOR project (FP6/2005/IST/5-034026) is funded // in part by the European Union Sixth Framework Programme // The European Union is not liable of any use that may be // made of this code. // // // based on previous work (FSF) done in the FIRST project // // Copyright (C) 2005 Mälardalen University, SWEDEN // Scuola Superiore S.Anna, ITALY // Universidad de Cantabria, SPAIN // University of York, UK // // This file is part of FOSA (Frsh Operating System Abstraction) // // FOSA is free software; you can redistribute it and/or modify it // under terms of the GNU General Public License as published by the // Free Software Foundation; either version 2, or (at your option) any // later version. FOSA 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 FOSA; see file // COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, // Cambridge, MA 02139, USA. // // As a special exception, including FOSA header files in a file, // instantiating FOSA generics or templates, or linking other files // with FOSA objects to produce an executable application, does not // by itself cause the resulting executable application 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 Public License. // ----------------------------------------------------------------------- // FOSA(Frescor Operating System Adaptation layer) //================================================ */ /* * $FILE: fosa_setjmp.S * * Setjmp and Longjmp healper functions */ .text .global fosa_long_jump_save_context, fosa_setjmp, fosa_longjmp .type fosa_long_jump_save_context,@function .type fosa_setjmp,@function .type fosa_longjmp,@function fosa_long_jump_save_context: subl $44, %esp cmpl $0, 48(%esp) jne .L2 movl $22, 24(%esp) jmp .L4 .L2: movl $0, 24(%esp) movl 44(%esp), %ecx leal 48(%esp), %edx movl 48(%esp), %eax movl %ebx, 0(%eax) movl %esi, 4(%eax) movl %edi, 8(%eax) movl %ebp, 12(%eax) movl %edx, 16(%eax) movl %ecx, 20(%eax) movl $0, 24(%eax) leal 28(%eax), %eax movl %eax, 8(%esp) movl $0, 4(%esp) movl $0, (%esp) call pthread_sigmask .L4: movl 24(%esp), %eax addl $44, %esp ret fosa_setjmp: movl 0(%esp), %ecx leal 4(%esp), %edx movl (%edx), %eax movl %ebx, 0(%eax) movl %esi, 4(%eax) movl %edi, 8(%eax) movl %ebp, 12(%eax) movl %edx, 16(%eax) movl %ecx, 20(%eax) movl $0, 24(%eax) movl $0, %eax ret fosa_longjmp: movl 4(%esp), %ecx movl 8(%esp), %eax movl %eax, 24(%ecx) movl 20(%ecx), %edx movl 0(%ecx), %ebx movl 4(%ecx), %esi movl 8(%ecx), %edi movl 12(%ecx), %ebp movl 16(%ecx), %esp movl $0, %eax jmp *%edx