~sheosi/helenos/lua

« back to all changes in this revision

Viewing changes to uspace/lib/c/arch/amd64/src/setjmp.S

  • Committer: Sergio Tortosa (sheosi)
  • Date: 2013-12-22 14:13:23 UTC
  • mfrom: (2032.1.12 mainline)
  • Revision ID: sertorbe@gmail.com-20131222141323-gbiqm4j2w9sbjty5
MergedĀ mainline

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# Copyright (c) 2008 Josef Cejka
3
 
# All rights reserved.
4
 
#
5
 
# Redistribution and use in source and binary forms, with or without
6
 
# modification, are permitted provided that the following conditions
7
 
# are met:
8
 
#
9
 
# - Redistributions of source code must retain the above copyright
10
 
#   notice, this list of conditions and the following disclaimer.
11
 
# - Redistributions in binary form must reproduce the above copyright
12
 
#   notice, this list of conditions and the following disclaimer in the
13
 
#   documentation and/or other materials provided with the distribution.
14
 
# - The name of the author may not be used to endorse or promote products
15
 
#   derived from this software without specific prior written permission.
16
 
#
17
 
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
 
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
 
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
 
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
 
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
 
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
 
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
 
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
 
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
 
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 
#
28
 
 
29
 
#include <libarch/context_offset.h>
30
 
 
31
 
.text
32
 
.global setjmp
33
 
.global longjmp
34
 
 
35
 
.type setjmp,@function
36
 
setjmp:
37
 
#       movl 0(%esp), %eax  # save pc value into eax
38
 
#       movl 4(%esp), %edx  # address of the jmp_buf structure to save context to
39
 
        
40
 
        # save registers to the jmp_buf structure
41
 
#       CONTEXT_SAVE_ARCH_CORE %edx %eax
42
 
        
43
 
#       xorl %eax, %eax     # set_jmp returns 0
44
 
        ret
45
 
 
46
 
.type longjmp,@function
47
 
longjmp:
48
 
#       movl 4(%esp), %ecx  # put address of jmp_buf into ecx
49
 
#       movl 8(%esp), %eax  # put return value into eax
50
 
        
51
 
        # restore registers from the jmp_buf structure
52
 
#       CONTEXT_RESTORE_ARCH_CORE %ecx %edx
53
 
        
54
 
#       movl %edx, 0(%esp)  # put saved pc on stack
55
 
        ret