setjmp.S (85528) | setjmp.S (106755) |
---|---|
1/* $NetBSD: setjmp.S,v 1.3 1997/12/05 02:06:27 thorpej Exp $ */ | 1/* $NetBSD: setjmp.S,v 1.3 1997/12/05 02:06:27 thorpej Exp $ */ |
2/* $FreeBSD: head/lib/libc/ia64/gen/setjmp.S 85528 2001-10-26 08:26:45Z dfr $ */ | 2/* $FreeBSD: head/lib/libc/ia64/gen/setjmp.S 106755 2002-11-11 08:11:44Z marcel $ */ |
3 4/* 5 * Copyright (c) 1994, 1995 Carnegie-Mellon University. 6 * All rights reserved. 7 * 8 * Author: Chris G. Demetriou 9 * 10 * Permission to use, copy, modify and distribute this software and --- 30 unchanged lines hidden (view full) --- 41 * setjmp(a) 42 * by restoring registers from the stack, 43 * and the previous signal state. 44 */ 45 46ENTRY(setjmp, 1) 47 alloc loc0=ar.pfs,1,2,3,0 48 mov loc1=rp | 3 4/* 5 * Copyright (c) 1994, 1995 Carnegie-Mellon University. 6 * All rights reserved. 7 * 8 * Author: Chris G. Demetriou 9 * 10 * Permission to use, copy, modify and distribute this software and --- 30 unchanged lines hidden (view full) --- 41 * setjmp(a) 42 * by restoring registers from the stack, 43 * and the previous signal state. 44 */ 45 46ENTRY(setjmp, 1) 47 alloc loc0=ar.pfs,1,2,3,0 48 mov loc1=rp |
49 // 50 // Compensate for the pointer twiddling that setjmp does. 51 // 52 dep r14=r0,r32,0,4 53 ;; | 49 ;; |
54 mov out0=1 // how = SIG_BLOCK 55 mov out1=0 // set = NULL | 50 mov out0=1 // how = SIG_BLOCK 51 mov out1=0 // set = NULL |
56 add out2=J_SIG0+0x10,r14 // oset = &jb[J_SIG0] | 52 add out2=J_SIG0,in0 // oset = &jb[J_SIG0] |
57 br.call.sptk.few rp=__sys_sigprocmask 58 ;; 59 mov rp=loc1 60 mov r14=loc0 61 ;; 62 alloc r15=ar.pfs,1,0,0,0 // drop register frame 63 ;; 64 mov ar.pfs=r14 // restore ar.pfs 65 br.sptk.many _setjmp // finish saving state 66END(setjmp) 67 68 WEAK_ALIAS(longjmp,__longjmp) 69ENTRY(__longjmp, 2) 70 alloc loc0=ar.pfs,2,2,3,0 71 mov loc1=rp | 53 br.call.sptk.few rp=__sys_sigprocmask 54 ;; 55 mov rp=loc1 56 mov r14=loc0 57 ;; 58 alloc r15=ar.pfs,1,0,0,0 // drop register frame 59 ;; 60 mov ar.pfs=r14 // restore ar.pfs 61 br.sptk.many _setjmp // finish saving state 62END(setjmp) 63 64 WEAK_ALIAS(longjmp,__longjmp) 65ENTRY(__longjmp, 2) 66 alloc loc0=ar.pfs,2,2,3,0 67 mov loc1=rp |
72 // 73 // Compensate for the pointer twiddling that setjmp does. 74 // 75 dep r14=r0,r32,0,4 | |
76 ;; 77 mov out0=3 // how = SIG_SETMASK | 68 ;; 69 mov out0=3 // how = SIG_SETMASK |
78 add out1=J_SIG0+0x10,r14 // set = &jb[J_SIG0] | 70 add out1=J_SIG0,in0 // set = &jb[J_SIG0] |
79 mov out2=0 // oset = NULL 80 br.call.sptk.few rp=__sys_sigprocmask 81 ;; 82 mov rp=loc1 83 mov r14=loc0 84 ;; 85 alloc r15=ar.pfs,2,0,0,0 // drop register frame 86 ;; 87 mov ar.pfs=r14 // restore ar.pfs 88 br.sptk.many _longjmp // finish restoring state 89END(__longjmp) | 71 mov out2=0 // oset = NULL 72 br.call.sptk.few rp=__sys_sigprocmask 73 ;; 74 mov rp=loc1 75 mov r14=loc0 76 ;; 77 alloc r15=ar.pfs,2,0,0,0 // drop register frame 78 ;; 79 mov ar.pfs=r14 // restore ar.pfs 80 br.sptk.many _longjmp // finish restoring state 81END(__longjmp) |