URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [newlib/] [libc/] [sys/] [sysvi386/] [_longjmp.S] - Rev 816
Compare with Previous | Blame | View Log
// our buffer looks like:/ eax,ebx,ecx,edx,esi,edi,esp,ebp,pc// _longjmp is called with two parameters: jmp_buf*,int/ jmp_buf* is at 4(%esp), int is at 8(%esp)/ retaddr is, of course, at (%esp).globl _longjmp.globl longjmp_longjmp:longjmp:movl 4(%esp), %ebx / address of bufmovl 8(%esp), %eax / store return valuemovl 24(%ebx), %esp / restore stackmovl 32(%ebx), %edi/ Next line sets up return address.movl %edi, 0(%esp)movl 8(%ebx), %ecxmovl 12(%ebx), %edxmovl 16(%ebx), %esimovl 20(%ebx), %edimovl 28(%ebx), %ebpmovl 4(%ebx), %ebxtestl %eax,%eaxjne byeincl %eax / eax hold 0 if we are herebye:ret
