Home | History | Annotate | Line # | Download | only in ia64
      1  1.1  jmcneill /*	$NetBSD: setjmp.S,v 1.1.1.1 2018/08/16 18:17:47 jmcneill Exp $	*/
      2  1.1  jmcneill 
      3  1.1  jmcneill /*
      4  1.1  jmcneill  * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
      5  1.1  jmcneill  * This program and the accompanying materials are licensed and made
      6  1.1  jmcneill available
      7  1.1  jmcneill  * under the terms and conditions of the BSD License which accompanies
      8  1.1  jmcneill this
      9  1.1  jmcneill  * distribution.  The full text of the license may be found at
     10  1.1  jmcneill  * http://opensource.org/licenses/bsd-license.php.
     11  1.1  jmcneill  *
     12  1.1  jmcneill  * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
     13  1.1  jmcneill BASIS,
     14  1.1  jmcneill  * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
     15  1.1  jmcneill  * IMPLIED.
     16  1.1  jmcneill  */
     17  1.1  jmcneill 	.text
     18  1.1  jmcneill 	.globl	setjmp
     19  1.1  jmcneill 	.type	setjmp, @function
     20  1.1  jmcneill setjmp:
     21  1.1  jmcneill 	alloc	loc0 = ar.pfs, 1, 2, 1, 0
     22  1.1  jmcneill 	;;
     23  1.1  jmcneill 	mov	r14 = ar.unat
     24  1.1  jmcneill 	mov	r15 = ar.bsp
     25  1.1  jmcneill 	add	r10 = 0x10*20, in0
     26  1.1  jmcneill 	;;
     27  1.1  jmcneill 	stf.spill.nta	[in0] = f2, 0x10
     28  1.1  jmcneill 	st8.spill.nta	[r10] = r4, 8
     29  1.1  jmcneill 	mov		r21 = b1
     30  1.1  jmcneill 	;;
     31  1.1  jmcneill 	stf.spill.nta	[in0] = f3, 0x10
     32  1.1  jmcneill 	st8.spill.nta	[r10] = r5, 8
     33  1.1  jmcneill 	mov		r22 = b2
     34  1.1  jmcneill 	;;
     35  1.1  jmcneill 	stf.spill.nta	[in0] = f4, 0x10
     36  1.1  jmcneill 	st8.spill.nta	[r10] = r6, 8
     37  1.1  jmcneill 	mov		r23 = b3
     38  1.1  jmcneill 	;;
     39  1.1  jmcneill 	stf.spill.nta	[in0] = f5, 0x10
     40  1.1  jmcneill 	st8.spill.nta	[r10] = r7, 8
     41  1.1  jmcneill 	mov		r24 = b4
     42  1.1  jmcneill 	;;
     43  1.1  jmcneill 	stf.spill.nta	[in0] = f16, 0x10
     44  1.1  jmcneill 	st8.spill.nta	[r10] = sp, 8
     45  1.1  jmcneill 	mov		r25 = b5
     46  1.1  jmcneill 	;;
     47  1.1  jmcneill 	stf.spill.nta	[in0] = f17, 0x10
     48  1.1  jmcneill 	st8.nta		[r10] = loc1, 8
     49  1.1  jmcneill 	mov		r16 = pr
     50  1.1  jmcneill 	;;
     51  1.1  jmcneill 	stf.spill.nta	[in0] = f18, 0x10
     52  1.1  jmcneill 	st8.nta		[r10] = r21, 8
     53  1.1  jmcneill 	mov		r17 = ar.lc
     54  1.1  jmcneill 	;;
     55  1.1  jmcneill 	stf.spill.nta	[in0] = f19, 0x10
     56  1.1  jmcneill 	st8.nta		[r10] = r22, 8
     57  1.1  jmcneill 	;;
     58  1.1  jmcneill 	stf.spill.nta	[in0] = f20, 0x10
     59  1.1  jmcneill 	st8.nta		[r10] = r23, 8
     60  1.1  jmcneill 	;;
     61  1.1  jmcneill 	stf.spill.nta	[in0] = f21, 0x10
     62  1.1  jmcneill 	st8.nta		[r10] = r24, 8
     63  1.1  jmcneill 	;;
     64  1.1  jmcneill 	stf.spill.nta	[in0] = f22, 0x10
     65  1.1  jmcneill 	st8.nta		[r10] = r25, 8
     66  1.1  jmcneill 	;;
     67  1.1  jmcneill 	stf.spill.nta	[in0] = f23, 0x10
     68  1.1  jmcneill 	mov		r18 = ar.unat
     69  1.1  jmcneill 	;;
     70  1.1  jmcneill 	stf.spill.nta	[in0] = f24, 0x10
     71  1.1  jmcneill 	st8.nta		[r10] = r14, 8
     72  1.1  jmcneill 	;;
     73  1.1  jmcneill 	stf.spill.nta	[in0] = f25, 0x10
     74  1.1  jmcneill 	st8.nta		[r10] = r18, 8
     75  1.1  jmcneill 	;;
     76  1.1  jmcneill 	stf.spill.nta	[in0] = f26, 0x10
     77  1.1  jmcneill 	st8.nta		[r10] = loc0, 8
     78  1.1  jmcneill 	;;
     79  1.1  jmcneill 	stf.spill.nta	[in0] = f27, 0x10
     80  1.1  jmcneill 	st8.nta		[r10] = r15, 8
     81  1.1  jmcneill 	mov		r8 = 0
     82  1.1  jmcneill 	;;
     83  1.1  jmcneill 	stf.spill.nta	[in0] = f28, 0x10
     84  1.1  jmcneill 	mov		r19 = ar.fpsr
     85  1.1  jmcneill 	;;
     86  1.1  jmcneill 	stf.spill.nta	[in0] = f29, 0x10
     87  1.1  jmcneill 	st8.nta		[r10] = r16, 8
     88  1.1  jmcneill 	mov		ar.pfs = loc0
     89  1.1  jmcneill 	;;
     90  1.1  jmcneill 	stf.spill.nta	[in0] = f30, 0x10
     91  1.1  jmcneill 	st8.nta		[r10] = r17, 8
     92  1.1  jmcneill 	mov		b0 = loc1
     93  1.1  jmcneill 	;;
     94  1.1  jmcneill 	stf.spill.nta	[in0] = f31, 0x10
     95  1.1  jmcneill 	st8.nta		[r10] = r19
     96  1.1  jmcneill 	;;
     97  1.1  jmcneill 	mov		ar.unat = r14
     98  1.1  jmcneill 	br.ret.sptk	b0
     99  1.1  jmcneill 	;;
    100  1.1  jmcneill 
    101  1.1  jmcneill 	.globl	longjmp
    102  1.1  jmcneill 	.type	longjmp, @function
    103  1.1  jmcneill 	.regstk 2, 0, 0, 0
    104  1.1  jmcneill longjmp:
    105  1.1  jmcneill 	add		r10 = 0x10*20 + 8*14, in0
    106  1.1  jmcneill 	movl		r2  = ~((((1<<14) - 1) << 16) | 3)
    107  1.1  jmcneill 	;;
    108  1.1  jmcneill 	ld8.nt1		r14 = [r10], -8*2
    109  1.1  jmcneill 	mov		r15 = ar.bspstore
    110  1.1  jmcneill 	;;
    111  1.1  jmcneill 	ld8.nt1		r17 = [r10], -8
    112  1.1  jmcneill 	mov		r16 = ar.rsc
    113  1.1  jmcneill 	cmp.leu		p6  = r14, r15
    114  1.1  jmcneill 	;;
    115  1.1  jmcneill 	ld8.nt1		r18 = [r10], -8
    116  1.1  jmcneill 	ld8.nt1		r25 = [r10], -8
    117  1.1  jmcneill 	and		r2  = r16, r2
    118  1.1  jmcneill 	;;
    119  1.1  jmcneill 	ldf.fill.nt1	f2  = [in0], 0x10
    120  1.1  jmcneill 	ld8.nt1		r24 = [r10], -8
    121  1.1  jmcneill 	mov		b5  = r25
    122  1.1  jmcneill 	;;
    123  1.1  jmcneill 	mov		ar.rsc = r2
    124  1.1  jmcneill 	ld8.nt1		r23 = [r10], -8
    125  1.1  jmcneill 	mov		b4 = r24
    126  1.1  jmcneill 	;;
    127  1.1  jmcneill 	ldf.fill.nt1	f3 = [in0], 0x10
    128  1.1  jmcneill 	mov		ar.unat = r17
    129  1.1  jmcneill (p6)	br.spnt.many	_skip_flushrs
    130  1.1  jmcneill 	;;
    131  1.1  jmcneill 	flushrs
    132  1.1  jmcneill 	mov		r15 = ar.bsp
    133  1.1  jmcneill 	;;
    134  1.1  jmcneill _skip_flushrs:
    135  1.1  jmcneill 	mov		r31 = ar.rnat
    136  1.1  jmcneill 	loadrs
    137  1.1  jmcneill 	;;
    138  1.1  jmcneill 	ldf.fill.nt1	f4  = [in0], 0x10
    139  1.1  jmcneill 	ld8.nt1		r22 = [r10], -8
    140  1.1  jmcneill 	dep		r2  = -1, r14, 3, 6
    141  1.1  jmcneill 	;;
    142  1.1  jmcneill 	ldf.fill.nt1	f5  = [in0], 0x10
    143  1.1  jmcneill 	ld8.nt1		r21 = [r10], -8
    144  1.1  jmcneill 	cmp.ltu		p6  = r2, r15
    145  1.1  jmcneill 	;;
    146  1.1  jmcneill 	ld8.nt1		r20 = [r10], -0x10
    147  1.1  jmcneill (p6)	ld8.nta		r31 = [r2]
    148  1.1  jmcneill 	mov		b3  = r23
    149  1.1  jmcneill 	;;
    150  1.1  jmcneill 	ldf.fill.nt1	f16 = [in0], 0x10
    151  1.1  jmcneill 	ld8.fill.nt1	r7  = [r10], -8
    152  1.1  jmcneill 	mov		b2  = r22
    153  1.1  jmcneill 	;;
    154  1.1  jmcneill 	ldf.fill.nt1	f17 = [in0], 0x10
    155  1.1  jmcneill 	ld8.fill.nt1	r6  = [r10], -8
    156  1.1  jmcneill 	mov		b1  = r21
    157  1.1  jmcneill 	;;
    158  1.1  jmcneill 	ldf.fill.nt1	f18 = [in0], 0x10
    159  1.1  jmcneill 	ld8.fill.nt1	r5  = [r10], -8
    160  1.1  jmcneill 	mov		b0  = r20
    161  1.1  jmcneill 	;;
    162  1.1  jmcneill 	ldf.fill.nt1	f19 = [in0], 0x10
    163  1.1  jmcneill 	ld8.fill.nt1	r4  = [r10], 8*13
    164  1.1  jmcneill 	;;
    165  1.1  jmcneill 	ldf.fill.nt1	f20 = [in0], 0x10
    166  1.1  jmcneill 	ld8.nt1		r19 = [r10], 0x10
    167  1.1  jmcneill 	;;
    168  1.1  jmcneill 	ldf.fill.nt1	f21 = [in0], 0x10
    169  1.1  jmcneill 	ld8.nt1		r26 = [r10], 8
    170  1.1  jmcneill 	mov		ar.pfs = r19
    171  1.1  jmcneill 	;;
    172  1.1  jmcneill 	ldf.fill.nt1	f22 = [in0], 0x10
    173  1.1  jmcneill 	ld8.nt1		r27 = [r10], 8
    174  1.1  jmcneill 	mov		pr  = r26, -1
    175  1.1  jmcneill 	;;
    176  1.1  jmcneill 	ldf.fill.nt1	f23 = [in0], 0x10
    177  1.1  jmcneill 	ld8.nt1		r28 = [r10], -17*8 - 0x10
    178  1.1  jmcneill 	mov		ar.lc = r27
    179  1.1  jmcneill 	;;
    180  1.1  jmcneill 	ldf.fill.nt1	f24 = [in0], 0x10
    181  1.1  jmcneill 	ldf.fill.nt1	f25 = [in0], 0x10
    182  1.1  jmcneill 	mov		r8  = in1
    183  1.1  jmcneill 	;;
    184  1.1  jmcneill 	ldf.fill.nt1	f26 = [in0], 0x10
    185  1.1  jmcneill 	ldf.fill.nt1	f31 = [r10], -0x10
    186  1.1  jmcneill 	;;
    187  1.1  jmcneill 	ldf.fill.nt1	f27 = [in0], 0x10
    188  1.1  jmcneill 	ldf.fill.nt1	f30 = [r10], -0x10
    189  1.1  jmcneill 	;;
    190  1.1  jmcneill 	ldf.fill.nt1	f28 = [in0]
    191  1.1  jmcneill 	ldf.fill.nt1	f29 = [r10], 0x10*3 + 8*4
    192  1.1  jmcneill 	;;
    193  1.1  jmcneill 	ld8.fill.nt1	sp  = [r10]
    194  1.1  jmcneill 	mov		ar.unat = r18
    195  1.1  jmcneill 	;;
    196  1.1  jmcneill 	mov		ar.bspstore = r14
    197  1.1  jmcneill 	mov		ar.rnat = r31
    198  1.1  jmcneill 	;;
    199  1.1  jmcneill 	invala
    200  1.1  jmcneill 	mov		ar.rsc = r16
    201  1.1  jmcneill 	br.ret.sptk	b0
    202