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
140
141
142
143
144
145
146
|
// Code generated by mkpreempt.go; DO NOT EDIT.
// +build mips64 mips64le
#include "go_asm.h"
#include "textflag.h"
// Note: asyncPreempt doesn't use the internal ABI, but we must be able to inject calls to it from the signal handler, so Go code has to see the PC of this function literally.
TEXT ·asyncPreempt<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-0
MOVV R31, -488(R29)
SUBV $488, R29
MOVV R1, 8(R29)
MOVV R2, 16(R29)
MOVV R3, 24(R29)
MOVV R4, 32(R29)
MOVV R5, 40(R29)
MOVV R6, 48(R29)
MOVV R7, 56(R29)
MOVV R8, 64(R29)
MOVV R9, 72(R29)
MOVV R10, 80(R29)
MOVV R11, 88(R29)
MOVV R12, 96(R29)
MOVV R13, 104(R29)
MOVV R14, 112(R29)
MOVV R15, 120(R29)
MOVV R16, 128(R29)
MOVV R17, 136(R29)
MOVV R18, 144(R29)
MOVV R19, 152(R29)
MOVV R20, 160(R29)
MOVV R21, 168(R29)
MOVV R22, 176(R29)
MOVV R24, 184(R29)
MOVV R25, 192(R29)
MOVV RSB, 200(R29)
MOVV HI, R1
MOVV R1, 208(R29)
MOVV LO, R1
MOVV R1, 216(R29)
#ifndef GOMIPS64_softfloat
MOVV FCR31, R1
MOVV R1, 224(R29)
MOVD F0, 232(R29)
MOVD F1, 240(R29)
MOVD F2, 248(R29)
MOVD F3, 256(R29)
MOVD F4, 264(R29)
MOVD F5, 272(R29)
MOVD F6, 280(R29)
MOVD F7, 288(R29)
MOVD F8, 296(R29)
MOVD F9, 304(R29)
MOVD F10, 312(R29)
MOVD F11, 320(R29)
MOVD F12, 328(R29)
MOVD F13, 336(R29)
MOVD F14, 344(R29)
MOVD F15, 352(R29)
MOVD F16, 360(R29)
MOVD F17, 368(R29)
MOVD F18, 376(R29)
MOVD F19, 384(R29)
MOVD F20, 392(R29)
MOVD F21, 400(R29)
MOVD F22, 408(R29)
MOVD F23, 416(R29)
MOVD F24, 424(R29)
MOVD F25, 432(R29)
MOVD F26, 440(R29)
MOVD F27, 448(R29)
MOVD F28, 456(R29)
MOVD F29, 464(R29)
MOVD F30, 472(R29)
MOVD F31, 480(R29)
#endif
CALL ·asyncPreempt2(SB)
#ifndef GOMIPS64_softfloat
MOVD 480(R29), F31
MOVD 472(R29), F30
MOVD 464(R29), F29
MOVD 456(R29), F28
MOVD 448(R29), F27
MOVD 440(R29), F26
MOVD 432(R29), F25
MOVD 424(R29), F24
MOVD 416(R29), F23
MOVD 408(R29), F22
MOVD 400(R29), F21
MOVD 392(R29), F20
MOVD 384(R29), F19
MOVD 376(R29), F18
MOVD 368(R29), F17
MOVD 360(R29), F16
MOVD 352(R29), F15
MOVD 344(R29), F14
MOVD 336(R29), F13
MOVD 328(R29), F12
MOVD 320(R29), F11
MOVD 312(R29), F10
MOVD 304(R29), F9
MOVD 296(R29), F8
MOVD 288(R29), F7
MOVD 280(R29), F6
MOVD 272(R29), F5
MOVD 264(R29), F4
MOVD 256(R29), F3
MOVD 248(R29), F2
MOVD 240(R29), F1
MOVD 232(R29), F0
MOVV 224(R29), R1
MOVV R1, FCR31
#endif
MOVV 216(R29), R1
MOVV R1, LO
MOVV 208(R29), R1
MOVV R1, HI
MOVV 200(R29), RSB
MOVV 192(R29), R25
MOVV 184(R29), R24
MOVV 176(R29), R22
MOVV 168(R29), R21
MOVV 160(R29), R20
MOVV 152(R29), R19
MOVV 144(R29), R18
MOVV 136(R29), R17
MOVV 128(R29), R16
MOVV 120(R29), R15
MOVV 112(R29), R14
MOVV 104(R29), R13
MOVV 96(R29), R12
MOVV 88(R29), R11
MOVV 80(R29), R10
MOVV 72(R29), R9
MOVV 64(R29), R8
MOVV 56(R29), R7
MOVV 48(R29), R6
MOVV 40(R29), R5
MOVV 32(R29), R4
MOVV 24(R29), R3
MOVV 16(R29), R2
MOVV 8(R29), R1
MOVV 488(R29), R31
MOVV (R29), R23
ADDV $496, R29
JMP (R23)
|