Deleted Added
full compact
sigsetjmp.S (256281) sigsetjmp.S (271337)
1/* $NetBSD: sigsetjmp.S,v 1.6 2013/04/19 16:50:22 matt Exp $ */
2
3/*
4 * Copyright (c) 1997 Mark Brinicombe
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 19 unchanged lines hidden (view full) ---

28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 */
34
35#include <machine/asm.h>
1/* $NetBSD: sigsetjmp.S,v 1.6 2013/04/19 16:50:22 matt Exp $ */
2
3/*
4 * Copyright (c) 1997 Mark Brinicombe
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 19 unchanged lines hidden (view full) ---

28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 */
34
35#include <machine/asm.h>
36__FBSDID("$FreeBSD: stable/10/lib/libc/arm/gen/sigsetjmp.S 253518 2013-07-21 12:47:33Z andrew $");
36__FBSDID("$FreeBSD: stable/10/lib/libc/arm/gen/sigsetjmp.S 271337 2014-09-09 22:24:01Z ian $");
37
38#include <machine/setjmp.h>
39
40/*
41 * C library -- sigsetjmp, siglongjmp
42 *
43 * longjmp(a,v)
44 * will generate a "return(v)" from the last call to
45 * setjmp(a, m)
46 * by restoring registers from the stack.
47 * The previous signal state is restored.
48 */
49
50ENTRY(sigsetjmp)
51 teq r1, #0
52 beq PIC_SYM(_C_LABEL(_setjmp), PLT)
53 b PIC_SYM(_C_LABEL(setjmp), PLT)
37
38#include <machine/setjmp.h>
39
40/*
41 * C library -- sigsetjmp, siglongjmp
42 *
43 * longjmp(a,v)
44 * will generate a "return(v)" from the last call to
45 * setjmp(a, m)
46 * by restoring registers from the stack.
47 * The previous signal state is restored.
48 */
49
50ENTRY(sigsetjmp)
51 teq r1, #0
52 beq PIC_SYM(_C_LABEL(_setjmp), PLT)
53 b PIC_SYM(_C_LABEL(setjmp), PLT)
54END(sigsetjmp)
54
55.L_setjmp_magic:
56 .word _JB_MAGIC__SETJMP
57WEAK_ALIAS(__siglongjmp, siglongjmp)
58
59ENTRY(siglongjmp)
60 ldr r2, .L_setjmp_magic /* load magic */
61 ldr r3, [r0] /* get magic from jmp_buf */
62 bic r3, r3, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP)
63 /* ignore VFP-ness of magic */
64 teq r2, r3 /* magic correct? */
65 beq PIC_SYM(_C_LABEL(_longjmp), PLT)
66 b PIC_SYM(_C_LABEL(longjmp), PLT)
55
56.L_setjmp_magic:
57 .word _JB_MAGIC__SETJMP
58WEAK_ALIAS(__siglongjmp, siglongjmp)
59
60ENTRY(siglongjmp)
61 ldr r2, .L_setjmp_magic /* load magic */
62 ldr r3, [r0] /* get magic from jmp_buf */
63 bic r3, r3, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP)
64 /* ignore VFP-ness of magic */
65 teq r2, r3 /* magic correct? */
66 beq PIC_SYM(_C_LABEL(_longjmp), PLT)
67 b PIC_SYM(_C_LABEL(longjmp), PLT)
68END(siglongjmp)