v0.9.0-alpha.11 82c63c0

sys_unix_loong64.s RawHistoryFolder

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2025 The Ebitengine Authors
3
4//go:build linux
5
6#include "textflag.h"
7#include "go_asm.h"
8#include "funcdata.h"
9#include "abi_loong64.h"
10
11TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
12	NO_LOCAL_POINTERS
13
14	SUBV	$(16*8), R3, R14
15	MOVD	F0, 0(R14)
16	MOVD	F1, 8(R14)
17	MOVD	F2, 16(R14)
18	MOVD	F3, 24(R14)
19	MOVD	F4, 32(R14)
20	MOVD	F5, 40(R14)
21	MOVD	F6, 48(R14)
22	MOVD	F7, 56(R14)
23	MOVV	R4, 64(R14)
24	MOVV	R5, 72(R14)
25	MOVV	R6, 80(R14)
26	MOVV	R7, 88(R14)
27	MOVV	R8, 96(R14)
28	MOVV	R9, 104(R14)
29	MOVV	R10, 112(R14)
30	MOVV	R11, 120(R14)
31
32	// Adjust SP by frame size.
33	SUBV	$(22*8), R3
34
35	// It is important to save R30 because the go assembler
36	// uses it for move instructions for a variable.
37	// This line:
38	// MOVV ·callbackWrap_call(SB), R4
39	// Creates the instructions:
40	// PCALAU12I	off1(PC), R30
41	// MOVV		off2(R30), R4
42	// R30 is a callee saved register so we are responsible
43	// for ensuring its value doesn't change. So save it and
44	// restore it at the end of this function.
45	// R1 is the link register. crosscall2 doesn't save it
46	// so it's saved here.
47	MOVV	R1, 0(R3)
48	MOVV	R30, 8(R3)
49
50	// Create a struct callbackArgs on our stack.
51	MOVV	$(callbackArgs__size)(R3), R13
52	MOVV	R12, callbackArgs_index(R13)    // callback index
53	MOVV	R14, callbackArgs_args(R13)     // address of args vector
54	MOVV	$0, callbackArgs_result(R13)    // result
55
56	// Move parameters into registers
57	// Get the ABIInternal function pointer
58	// without <ABIInternal> by using a closure.
59	MOVV	·callbackWrap_call(SB), R4
60	MOVV	(R4), R4  // fn unsafe.Pointer
61	MOVV	R13, R5   // frame (&callbackArgs{...})
62	MOVV	$0, R7	  // ctxt uintptr
63
64	JAL	crosscall2(SB)
65
66	// Get callback result.
67	MOVV	$(callbackArgs__size)(R3), R13
68	MOVV	callbackArgs_result(R13), R4
69
70	// Restore LR and R30
71	MOVV	0(R3), R1
72	MOVV	8(R3), R30
73	ADDV	$(22*8), R3
74
75	RET

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