setjmp.S (5911b520278d793b939fb365d1e0900b3dcf5179) setjmp.S (31489a9a2653e123121e8ca39b4be802013d2b50)
1/* $NetBSD: setjmp.S,v 1.5 2003/04/05 23:08:51 bjh21 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

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

42 * setjmp(a)
43 * by restoring registers from the stack.
44 * The previous signal state is restored.
45 */
46
47ENTRY(setjmp)
48 /* Block all signals and retrieve the old signal mask */
49 stmfd sp!, {r0, r14}
1/* $NetBSD: setjmp.S,v 1.5 2003/04/05 23:08:51 bjh21 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

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

42 * setjmp(a)
43 * by restoring registers from the stack.
44 * The previous signal state is restored.
45 */
46
47ENTRY(setjmp)
48 /* Block all signals and retrieve the old signal mask */
49 stmfd sp!, {r0, r14}
50 add r2, r0, #4 /* oset */
50 add r2, r0, #(25 * 4) /* oset */
51 mov r0, #0x00000001 /* SIG_BLOCK */
52 mov r1, #0 /* set */
53
54 bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
55
56 ldmfd sp!, {r0, r14}
57
58 ldr r1, .Lsetjmp_magic

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

65 sfm f4, 4, [r0], #48
66 /* Store fpsr */
67 rfs r1
68 str r1, [r0], #0x0004
69#endif /*SOFTFLOAT*/
70 /* Store integer registers */
71 stmia r0, {r4-r14}
72 mov r0, #0x00000000
51 mov r0, #0x00000001 /* SIG_BLOCK */
52 mov r1, #0 /* set */
53
54 bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
55
56 ldmfd sp!, {r0, r14}
57
58 ldr r1, .Lsetjmp_magic

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

65 sfm f4, 4, [r0], #48
66 /* Store fpsr */
67 rfs r1
68 str r1, [r0], #0x0004
69#endif /*SOFTFLOAT*/
70 /* Store integer registers */
71 stmia r0, {r4-r14}
72 mov r0, #0x00000000
73 mov r15, r14
73 RET
74
75.Lsetjmp_magic:
76 .word _JB_MAGIC_SETJMP
77
78
79.weak _C_LABEL(longjmp)
80.set _C_LABEL(longjmp), _C_LABEL(__longjmp)
81ENTRY(__longjmp)
82 ldr r2, .Lsetjmp_magic
83 ldr r3, [r0]
84 teq r2, r3
85 bne botch
86
74
75.Lsetjmp_magic:
76 .word _JB_MAGIC_SETJMP
77
78
79.weak _C_LABEL(longjmp)
80.set _C_LABEL(longjmp), _C_LABEL(__longjmp)
81ENTRY(__longjmp)
82 ldr r2, .Lsetjmp_magic
83 ldr r3, [r0]
84 teq r2, r3
85 bne botch
86
87 /* Fetch signal mask */
88 add r2, r0, #4
89
90 /* Set signal mask */
91 stmfd sp!, {r0, r1, r14}
92 sub sp, sp, #4 /* align the stack */
93
87
88 /* Set signal mask */
89 stmfd sp!, {r0, r1, r14}
90 sub sp, sp, #4 /* align the stack */
91
94 mov r1, r2
92 add r1, r0, #(25 * 4) /* Signal mask */
95 mov r0, #3 /* SIG_SETMASK */
96 mov r2, #0
97 bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
98
99 add sp, sp, #4 /* unalign the stack */
100 ldmfd sp!, {r0, r1, r14}
101
102 add r0, r0, #4

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

117 teqne r14, #0
118 beq botch
119
120 /* Set return value */
121
122 mov r0, r1
123 teq r0, #0x00000000
124 moveq r0, #0x00000001
93 mov r0, #3 /* SIG_SETMASK */
94 mov r2, #0
95 bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
96
97 add sp, sp, #4 /* unalign the stack */
98 ldmfd sp!, {r0, r1, r14}
99
100 add r0, r0, #4

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

115 teqne r14, #0
116 beq botch
117
118 /* Set return value */
119
120 mov r0, r1
121 teq r0, #0x00000000
122 moveq r0, #0x00000001
125 mov r15, r14
123 RET
126
127 /* validation failed, die die die. */
128botch:
129 bl PIC_SYM(_C_LABEL(longjmperror), PLT)
130 bl PIC_SYM(_C_LABEL(abort), PLT)
131 b . - 8 /* Cannot get here */
124
125 /* validation failed, die die die. */
126botch:
127 bl PIC_SYM(_C_LABEL(longjmperror), PLT)
128 bl PIC_SYM(_C_LABEL(abort), PLT)
129 b . - 8 /* Cannot get here */