Welcome to mirror list, hosted at ThFree Co, Russian Federation.

setjmp.S « hppa « machine « libc « newlib - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 6f3668e9245015ba8a7e147f616b255f53cd2261 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* Copyright (c) 1995 Cygnus Support.
   All rights reserved.

   Redistribution and use in source and binary forms are permitted
   provided that the above copyright notice and this paragraph are
   duplicated in all such forms and that any documentation,
   advertising materials, and other materials related to such
   distribution and use acknowledge that the software was developed
   at Cygnus Support, Inc.  Cygnus Support, Inc. may not be used to
   endorse or promote products derived from this software without
   specific prior written permission.
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  */

/* Note I don't know an easy way to get the FP version into the
   traditional C library and the non-FP version into the soft-float
   library.  Maybe we'll have to have -msoft-float trigger something
   like -DSOFT_FLOAT if this issue ever arises.  */

	.SPACE $PRIVATE$
	.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
	.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
	.SPACE $TEXT$
	.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
	.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
	.IMPORT $global$,DATA
	.IMPORT $$dyncall,MILLICODE
; gcc_compiled.:
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT setjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
setjmp
	.PROC
	.CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
	.ENTRY
	stwm  %r30,4(%r26)
	stwm  %r2,4(%r26)
	stwm  %r3,4(%r26)
	stwm  %r4,4(%r26)
	stwm  %r5,4(%r26)
	stwm  %r6,4(%r26)
	stwm  %r7,4(%r26)
	stwm  %r8,4(%r26)
	stwm  %r9,4(%r26)
	stwm  %r10,4(%r26)
	stwm  %r11,4(%r26)
	stwm  %r12,4(%r26)
	stwm  %r13,4(%r26)
	stwm  %r14,4(%r26)
	stwm  %r15,4(%r26)
	stwm  %r16,4(%r26)
	stwm  %r17,4(%r26)
	stwm  %r18,4(%r26)
	stwm  %r27,4(%r26)
#ifdef FP
	; jmp_buf may only have a 4 byte alignment, so handle FP stores
	; very carefully.
	fstds %fr12,-16(%r30)
	ldw -16(%r30),%r28
	stwm  %r28,4(%r26)
	ldw -12(%r30),%r28
	stwm  %r28,4(%r26) 
	fstds %fr13,-16(%r30)
	ldw -16(%r30),%r28
	stwm  %r28,4(%r26)
	ldw -12(%r30),%r28
	stwm  %r28,4(%r26) 
	fstds %fr14,-16(%r30)
	ldw -16(%r30),%r28
	stwm  %r28,4(%r26)
	ldw -12(%r30),%r28
	stwm  %r28,4(%r26) 
	fstds %fr15,-16(%r30)
	ldw -16(%r30),%r28
	stwm  %r28,4(%r26)
	ldw -12(%r30),%r28
	stwm  %r28,4(%r26) 
#endif

	bv 0(%r2)
	copy %r0,%r28
	.EXIT
	.PROCEND
	.align 4
	.EXPORT longjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR
longjmp
	.PROC
	.CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
	.ENTRY
	ldwm 4(%r26),%r30
	ldwm 4(%r26),%r2
	ldwm 4(%r26),%r3
	ldwm 4(%r26),%r4
	ldwm 4(%r26),%r5
	ldwm 4(%r26),%r6
	ldwm 4(%r26),%r7
	ldwm 4(%r26),%r8
	ldwm 4(%r26),%r9
	ldwm 4(%r26),%r10
	ldwm 4(%r26),%r11
	ldwm 4(%r26),%r12
	ldwm 4(%r26),%r13
	ldwm 4(%r26),%r14
	ldwm 4(%r26),%r15
	ldwm 4(%r26),%r16
	ldwm 4(%r26),%r17
	ldwm 4(%r26),%r18
	ldwm 4(%r26),%r27
#ifdef FP
	ldwm 4(%r26),%r28
	stw %r28,-16(%r30)
	ldwm 4(%r26),%r28
	stw %r28,-12(%r30)
	fldds -16(%r30),%fr12
	ldwm 4(%r26),%r28
	stw %r28,-16(%r30)
	ldwm 4(%r26),%r28
	stw %r28,-12(%r30)
	fldds -16(%r30),%fr13
	ldwm 4(%r26),%r28
	stw %r28,-16(%r30)
	ldwm 4(%r26),%r28
	stw %r28,-12(%r30)
	fldds -16(%r30),%fr14
	ldwm 4(%r26),%r28
	stw %r28,-16(%r30)
	ldwm 4(%r26),%r28
	stw %r28,-12(%r30)
	fldds -16(%r30),%fr15
#endif
	comclr,<> %r0,%r25,%r0
	ldi 1,%r25
	bv 0(%r2)
	copy %r25,%r28
	.EXIT
	.PROCEND