LEFT | RIGHT |
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 #include "zasm_GOOS_GOARCH.h" | 5 #include "zasm_GOOS_GOARCH.h" |
6 | 6 |
7 // using frame size $-4 means do not save LR on stack. | 7 // using frame size $-4 means do not save LR on stack. |
8 TEXT _rt0_arm(SB),7,$-4 | 8 TEXT _rt0_arm(SB),7,$-4 |
9 MOVW $0xcafebabe, R12 | 9 MOVW $0xcafebabe, R12 |
10 | 10 |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 // NB. we do not save R0 because we've forced 5c to pass all arguments | 181 // NB. we do not save R0 because we've forced 5c to pass all arguments |
182 // on the stack. | 182 // on the stack. |
183 // using frame size $-4 means do not save LR on stack. | 183 // using frame size $-4 means do not save LR on stack. |
184 TEXT runtime·morestack(SB),7,$-4 | 184 TEXT runtime·morestack(SB),7,$-4 |
185 // Cannot grow scheduler stack (m->g0). | 185 // Cannot grow scheduler stack (m->g0). |
186 MOVW m_g0(m), R4 | 186 MOVW m_g0(m), R4 |
187 CMP g, R4 | 187 CMP g, R4 |
188 BL.EQ runtime·abort(SB) | 188 BL.EQ runtime·abort(SB) |
189 | 189 |
190 // Save in m. | 190 // Save in m. |
| 191 MOVW R0, m_cret(m) // function context |
191 MOVW R1, m_moreframesize(m) | 192 MOVW R1, m_moreframesize(m) |
192 MOVW R2, m_moreargsize(m) | 193 MOVW R2, m_moreargsize(m) |
193 | 194 |
194 // Called from f. | 195 // Called from f. |
195 // Set m->morebuf to f's caller. | 196 // Set m->morebuf to f's caller. |
196 MOVW R3, (m_morebuf+gobuf_pc)(m) // f's caller's PC | 197 MOVW R3, (m_morebuf+gobuf_pc)(m) // f's caller's PC |
197 MOVW SP, (m_morebuf+gobuf_sp)(m) // f's caller's SP | 198 MOVW SP, (m_morebuf+gobuf_sp)(m) // f's caller's SP |
198 MOVW $4(SP), R3 // f's argument pointer | 199 MOVW $4(SP), R3 // f's argument pointer |
199 MOVW R3, m_moreargp(m)······· | 200 MOVW R3, m_moreargp(m)······· |
200 MOVW g, (m_morebuf+gobuf_g)(m) | 201 MOVW g, (m_morebuf+gobuf_g)(m) |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 casfail: | 468 casfail: |
468 MOVW $0, R0 | 469 MOVW $0, R0 |
469 RET | 470 RET |
470 | 471 |
471 TEXT runtime·stackguard(SB),7,$0 | 472 TEXT runtime·stackguard(SB),7,$0 |
472 MOVW R13, R1 | 473 MOVW R13, R1 |
473 MOVW g_stackguard(g), R2 | 474 MOVW g_stackguard(g), R2 |
474 MOVW R1, sp+0(FP) | 475 MOVW R1, sp+0(FP) |
475 MOVW R2, limit+4(FP) | 476 MOVW R2, limit+4(FP) |
476 RET | 477 RET |
LEFT | RIGHT |