OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [newlib/] [libc/] [machine/] [i386/] [setjmp.S] - Diff between revs 207 and 345

Only display areas with differences | Details | Blame | View Log

Rev 207 Rev 345
/* This is file is a merger of SETJMP.S and LONGJMP.S */
/* This is file is a merger of SETJMP.S and LONGJMP.S */
/*
/*
 *  This file was modified to use the __USER_LABEL_PREFIX__ and
 *  This file was modified to use the __USER_LABEL_PREFIX__ and
 *  __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by
 *  __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by
 *  Joel Sherrill (joel@OARcorp.com)
 *  Joel Sherrill (joel@OARcorp.com)
 *  Slight change: now includes i386mach.h for this (Werner Almesberger)
 *  Slight change: now includes i386mach.h for this (Werner Almesberger)
 *
 *
 * Copyright (C) 1991 DJ Delorie
 * Copyright (C) 1991 DJ Delorie
 * All rights reserved.
 * All rights reserved.
 *
 *
 * Redistribution and use in source and binary forms is permitted
 * Redistribution and use in source and binary forms is permitted
 * provided that the above copyright notice and following paragraph are
 * provided that the above copyright notice and following paragraph are
 * duplicated in all such forms.
 * duplicated in all such forms.
 *
 *
 * This file is distributed WITHOUT ANY WARRANTY; without even the implied
 * This file is distributed WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */
 */
 /*
 /*
 **     jmp_buf:
 **     jmp_buf:
 **      eax ebx ecx edx esi edi ebp esp eip
 **      eax ebx ecx edx esi edi ebp esp eip
 **      0   4   8   12  16  20  24  28  32
 **      0   4   8   12  16  20  24  28  32
 */
 */
       #include "i386mach.h"
       #include "i386mach.h"
        .global SYM (setjmp)
        .global SYM (setjmp)
        .global SYM (longjmp)
        .global SYM (longjmp)
       SOTYPE_FUNCTION(setjmp)
       SOTYPE_FUNCTION(setjmp)
       SOTYPE_FUNCTION(longjmp)
       SOTYPE_FUNCTION(longjmp)
SYM (setjmp):
SYM (setjmp):
        pushl   ebp
        pushl   ebp
        movl    esp,ebp
        movl    esp,ebp
        pushl   edi
        pushl   edi
        movl    8 (ebp),edi
        movl    8 (ebp),edi
        movl    eax,0 (edi)
        movl    eax,0 (edi)
        movl    ebx,4 (edi)
        movl    ebx,4 (edi)
        movl    ecx,8 (edi)
        movl    ecx,8 (edi)
        movl    edx,12 (edi)
        movl    edx,12 (edi)
        movl    esi,16 (edi)
        movl    esi,16 (edi)
        movl    -4 (ebp),eax
        movl    -4 (ebp),eax
        movl    eax,20 (edi)
        movl    eax,20 (edi)
        movl    0 (ebp),eax
        movl    0 (ebp),eax
        movl    eax,24 (edi)
        movl    eax,24 (edi)
        movl    esp,eax
        movl    esp,eax
        addl    $12,eax
        addl    $12,eax
        movl    eax,28 (edi)
        movl    eax,28 (edi)
        movl    4 (ebp),eax
        movl    4 (ebp),eax
        movl    eax,32 (edi)
        movl    eax,32 (edi)
        popl    edi
        popl    edi
        movl    $0,eax
        movl    $0,eax
        leave
        leave
        ret
        ret
SYM (longjmp):
SYM (longjmp):
        pushl   ebp
        pushl   ebp
        movl    esp,ebp
        movl    esp,ebp
        movl    8(ebp),edi      /* get jmp_buf */
        movl    8(ebp),edi      /* get jmp_buf */
        movl    12(ebp),eax     /* store retval in j->eax */
        movl    12(ebp),eax     /* store retval in j->eax */
        movl    eax,0(edi)
        movl    eax,0(edi)
        movl    24(edi),ebp
        movl    24(edi),ebp
       __CLI
       __CLI
        movl    28(edi),esp
        movl    28(edi),esp
        pushl   32(edi)
        pushl   32(edi)
        movl    0(edi),eax
        movl    0(edi),eax
        movl    4(edi),ebx
        movl    4(edi),ebx
        movl    8(edi),ecx
        movl    8(edi),ecx
        movl    12(edi),edx
        movl    12(edi),edx
        movl    16(edi),esi
        movl    16(edi),esi
        movl    20(edi),edi
        movl    20(edi),edi
       __STI
       __STI
        ret
        ret
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.