~xnox/ubuntu/trusty/gcc-arm-linux-androideabi/dima

« back to all changes in this revision

Viewing changes to android/bionic/libc/arch-arm/bionic/sigsetjmp.S

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-07-05 10:12:24 UTC
  • Revision ID: package-import@ubuntu.com-20130705101224-6qo3e8jbz8p31aa1
Tags: upstream-0.20130705.1
ImportĀ upstreamĀ versionĀ 0.20130705.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $OpenBSD: sigsetjmp.S,v 1.2 2004/02/01 05:40:52 drahn Exp $     */
 
2
/*      $NetBSD: sigsetjmp.S,v 1.3 2002/08/17 19:54:30 thorpej Exp $    */
 
3
 
 
4
/*
 
5
 * Copyright (c) 1997 Mark Brinicombe
 
6
 * All rights reserved.
 
7
 *
 
8
 * Redistribution and use in source and binary forms, with or without
 
9
 * modification, are permitted provided that the following conditions
 
10
 * are met:
 
11
 * 1. Redistributions of source code must retain the above copyright
 
12
 *    notice, this list of conditions and the following disclaimer.
 
13
 * 2. Redistributions in binary form must reproduce the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer in the
 
15
 *    documentation and/or other materials provided with the distribution.
 
16
 * 3. All advertising materials mentioning features or use of this software
 
17
 *    must display the following acknowledgement:
 
18
 *      This product includes software developed by Mark Brinicombe
 
19
 * 4. Neither the name of the University nor the names of its contributors
 
20
 *    may be used to endorse or promote products derived from this software
 
21
 *    without specific prior written permission.
 
22
 *
 
23
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 
24
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
25
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
26
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 
27
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
28
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
29
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
30
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
31
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
32
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
33
 * SUCH DAMAGE.
 
34
 */
 
35
 
 
36
#define _ALIGN_TEXT .align 0
 
37
 
 
38
#include <machine/asm.h>
 
39
#include <machine/setjmp.h>
 
40
 
 
41
/*
 
42
 * C library -- sigsetjmp, siglongjmp
 
43
 *
 
44
 *      longjmp(a,v)
 
45
 * will generate a "return(v)" from the last call to
 
46
 *      setjmp(a, m)
 
47
 * by restoring registers from the stack.
 
48
 * The previous signal state is restored.
 
49
 */
 
50
 
 
51
ENTRY(sigsetjmp)
 
52
        teq     r1, #0
 
53
        beq     PIC_SYM(_C_LABEL(_setjmp), PLT)
 
54
        b       PIC_SYM(_C_LABEL(setjmp), PLT)
 
55
END(sigsetjmp)
 
56
 
 
57
.L_setjmp_magic:
 
58
        .word   _JB_MAGIC__SETJMP
 
59
 
 
60
ENTRY(siglongjmp)
 
61
        ldr     r2, .L_setjmp_magic
 
62
        ldr     r3, [r0]
 
63
        teq     r2, r3
 
64
        beq     PIC_SYM(_C_LABEL(_longjmp), PLT)
 
65
        b       PIC_SYM(_C_LABEL(longjmp), PLT)
 
66
END(siglongjmp)