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.0rc2/] [newlib/] [libc/] [sys/] [sysvi386/] [_longjmp.S] - Diff between revs 207 and 520

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

Rev 207 Rev 520
/
/
/ our buffer looks like:
/ our buffer looks like:
/  eax,ebx,ecx,edx,esi,edi,esp,ebp,pc
/  eax,ebx,ecx,edx,esi,edi,esp,ebp,pc
/
/
/ _longjmp is called with two parameters:  jmp_buf*,int
/ _longjmp is called with two parameters:  jmp_buf*,int
/ jmp_buf* is at 4(%esp), int is at 8(%esp)
/ jmp_buf* is at 4(%esp), int is at 8(%esp)
/ retaddr is, of course, at (%esp)
/ retaddr is, of course, at (%esp)
        .globl  _longjmp
        .globl  _longjmp
        .globl  longjmp
        .globl  longjmp
_longjmp:
_longjmp:
longjmp:
longjmp:
        movl    4(%esp), %ebx   / address of buf
        movl    4(%esp), %ebx   / address of buf
        movl    8(%esp), %eax   / store return value
        movl    8(%esp), %eax   / store return value
        movl    24(%ebx), %esp  / restore stack
        movl    24(%ebx), %esp  / restore stack
        movl    32(%ebx), %edi
        movl    32(%ebx), %edi
/ Next line sets up return address.
/ Next line sets up return address.
        movl    %edi, 0(%esp)
        movl    %edi, 0(%esp)
        movl    8(%ebx), %ecx
        movl    8(%ebx), %ecx
        movl    12(%ebx), %edx
        movl    12(%ebx), %edx
        movl    16(%ebx), %esi
        movl    16(%ebx), %esi
        movl    20(%ebx), %edi
        movl    20(%ebx), %edi
        movl    28(%ebx), %ebp
        movl    28(%ebx), %ebp
        movl    4(%ebx), %ebx
        movl    4(%ebx), %ebx
        testl   %eax,%eax
        testl   %eax,%eax
        jne     bye
        jne     bye
        incl    %eax            / eax hold 0 if we are here
        incl    %eax            / eax hold 0 if we are here
bye:
bye:
        ret
        ret
 
 

powered by: WebSVN 2.1.0

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