main 3a10209

asm_arm.s RawHistoryFolder

1// Copyright 2012 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5#include "textflag.h"
6
7// Called by C code generated by cmd/cgo.
8// func crosscall2(fn, a unsafe.Pointer, n int32, ctxt uintptr)
9// Saves C callee-saved registers and calls cgocallback with three arguments.
10// fn is the PC of a func(a unsafe.Pointer) function.
11TEXT crosscall2(SB), NOSPLIT|NOFRAME, $0
12	SUB $(8*9), R13 // Reserve space for the floating point registers.
13
14	// The C arguments arrive in R0, R1, R2, and R3. We want to
15	// pass R0, R1, and R3 to Go, so we push those on the stack.
16	// Also, save C callee-save registers R4-R12.
17	MOVM.WP [R0, R1, R3, R4, R5, R6, R7, R8, R9, g, R11, R12], (R13)
18
19	// Finally, save the link register R14. This also puts the
20	// arguments we pushed for cgocallback where they need to be,
21	// starting at 4(R13).
22	MOVW.W R14, -4(R13)
23
24	// Skip floating point registers if runtime.goarmsoftfp!=0.
25	MOVB    runtime·goarmsoftfp(SB), R11
26	CMP     $0, R11
27	BNE     skipfpsave
28	// Save VFP callee-saved registers D8-D15 (same as S16-S31).
29	MOVD F8, (13*4+8*1)(R13)
30	MOVD F9, (13*4+8*2)(R13)
31	MOVD F10, (13*4+8*3)(R13)
32	MOVD F11, (13*4+8*4)(R13)
33	MOVD F12, (13*4+8*5)(R13)
34	MOVD F13, (13*4+8*6)(R13)
35	MOVD F14, (13*4+8*7)(R13)
36	MOVD F15, (13*4+8*8)(R13)
37
38skipfpsave:
39	// We set up the arguments to cgocallback when saving registers above.
40	BL runtime·cgocallback(SB)
41
42	MOVB    runtime·goarmsoftfp(SB), R11
43	CMP     $0, R11
44	BNE     skipfprest
45	MOVD (13*4+8*1)(R13), F8
46	MOVD (13*4+8*2)(R13), F9
47	MOVD (13*4+8*3)(R13), F10
48	MOVD (13*4+8*4)(R13), F11
49	MOVD (13*4+8*5)(R13), F12
50	MOVD (13*4+8*6)(R13), F13
51	MOVD (13*4+8*7)(R13), F14
52	MOVD (13*4+8*8)(R13), F15
53
54skipfprest:
55	MOVW.P   4(R13), R14
56	MOVM.IAW (R13), [R0, R1, R3, R4, R5, R6, R7, R8, R9, g, R11, R12]
57	ADD      $(8*9), R13
58	MOVW     R14, R15

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close