X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/src/runtime
opt
/
golang
/
1.17.2
/
src
/
runtime
/
馃搧
..
馃搫
HACKING.md
(13.07 KB)
馃搫
Makefile
(178 B)
馃搫
abi_test.go
(2.88 KB)
馃搫
alg.go
(9.45 KB)
馃搫
asm.s
(715 B)
馃搫
asm_386.s
(40.27 KB)
馃搫
asm_amd64.s
(56.93 KB)
馃搫
asm_arm.s
(30.23 KB)
馃搫
asm_arm64.s
(33 KB)
馃搫
asm_mips64x.s
(22.43 KB)
馃搫
asm_mipsx.s
(24.39 KB)
馃搫
asm_ppc64x.h
(1023 B)
馃搫
asm_ppc64x.s
(29.16 KB)
馃搫
asm_riscv64.s
(22.43 KB)
馃搫
asm_s390x.s
(26.04 KB)
馃搫
asm_wasm.s
(9.8 KB)
馃搫
atomic_arm64.s
(259 B)
馃搫
atomic_mips64x.s
(326 B)
馃搫
atomic_mipsx.s
(284 B)
馃搫
atomic_pointer.go
(2.62 KB)
馃搫
atomic_ppc64x.s
(461 B)
馃搫
atomic_riscv64.s
(275 B)
馃搫
auxv_none.go
(360 B)
馃搫
callers_test.go
(7.72 KB)
馃搧
cgo
馃搫
cgo.go
(2.01 KB)
馃搫
cgo_mmap.go
(2.42 KB)
馃搫
cgo_ppc64x.go
(439 B)
馃搫
cgo_sigaction.go
(3.17 KB)
馃搫
cgocall.go
(18.88 KB)
馃搫
cgocallback.go
(317 B)
馃搫
cgocheck.go
(6.83 KB)
馃搫
chan.go
(23.54 KB)
馃搫
chan_test.go
(23.01 KB)
馃搫
chanbarrier_test.go
(1.4 KB)
馃搫
checkptr.go
(3.29 KB)
馃搫
checkptr_test.go
(1.62 KB)
馃搫
closure_test.go
(937 B)
馃搫
compiler.go
(413 B)
馃搫
complex.go
(1.59 KB)
馃搫
complex_test.go
(1.05 KB)
馃搫
conv_wasm_test.go
(2.96 KB)
馃搫
cpuflags.go
(800 B)
馃搫
cpuflags_amd64.go
(533 B)
馃搫
cpuflags_arm64.go
(334 B)
馃搫
cpuprof.go
(6.92 KB)
馃搫
cputicks.go
(497 B)
馃搫
crash_cgo_test.go
(16.17 KB)
馃搫
crash_nonunix_test.go
(429 B)
馃搫
crash_test.go
(20.96 KB)
馃搫
crash_unix_test.go
(8.52 KB)
馃搧
debug
馃搫
debug.go
(1.63 KB)
馃搫
debug_test.go
(6.82 KB)
馃搫
debugcall.go
(6.21 KB)
馃搫
debuglog.go
(17.49 KB)
馃搫
debuglog_off.go
(377 B)
馃搫
debuglog_on.go
(1.11 KB)
馃搫
debuglog_test.go
(4.56 KB)
馃搫
defer_test.go
(10.32 KB)
馃搫
defs1_linux.go
(862 B)
馃搫
defs1_netbsd_386.go
(2.84 KB)
馃搫
defs1_netbsd_amd64.go
(3.07 KB)
馃搫
defs1_netbsd_arm.go
(2.96 KB)
馃搫
defs1_netbsd_arm64.go
(3.18 KB)
馃搫
defs1_solaris_amd64.go
(4.02 KB)
馃搫
defs2_linux.go
(3.52 KB)
馃搫
defs3_linux.go
(1.11 KB)
馃搫
defs_aix.go
(4.18 KB)
馃搫
defs_aix_ppc64.go
(3.63 KB)
馃搫
defs_arm_linux.go
(2.69 KB)
馃搫
defs_darwin.go
(3.79 KB)
馃搫
defs_darwin_amd64.go
(6.07 KB)
馃搫
defs_darwin_arm64.go
(3.89 KB)
馃搫
defs_dragonfly.go
(2.63 KB)
馃搫
defs_dragonfly_amd64.go
(3.31 KB)
馃搫
defs_freebsd.go
(3.86 KB)
馃搫
defs_freebsd_386.go
(4.38 KB)
馃搫
defs_freebsd_amd64.go
(4.65 KB)
馃搫
defs_freebsd_arm.go
(3.71 KB)
馃搫
defs_freebsd_arm64.go
(4.03 KB)
馃搫
defs_illumos_amd64.go
(285 B)
馃搫
defs_linux.go
(3.05 KB)
馃搫
defs_linux_386.go
(3.77 KB)
馃搫
defs_linux_amd64.go
(4.28 KB)
馃搫
defs_linux_arm.go
(3.45 KB)
馃搫
defs_linux_arm64.go
(3.21 KB)
馃搫
defs_linux_mips64x.go
(3.24 KB)
馃搫
defs_linux_mipsx.go
(3.21 KB)
馃搫
defs_linux_ppc64.go
(3.28 KB)
馃搫
defs_linux_ppc64le.go
(3.28 KB)
馃搫
defs_linux_riscv64.go
(3.27 KB)
馃搫
defs_linux_s390x.go
(2.76 KB)
馃搫
defs_netbsd.go
(2.76 KB)
馃搫
defs_netbsd_386.go
(872 B)
馃搫
defs_netbsd_amd64.go
(1.03 KB)
馃搫
defs_netbsd_arm.go
(781 B)
馃搫
defs_openbsd.go
(3.1 KB)
馃搫
defs_openbsd_386.go
(2.89 KB)
馃搫
defs_openbsd_amd64.go
(3.09 KB)
馃搫
defs_openbsd_arm.go
(3 KB)
馃搫
defs_openbsd_arm64.go
(2.76 KB)
馃搫
defs_openbsd_mips64.go
(2.66 KB)
馃搫
defs_plan9_386.go
(1.63 KB)
馃搫
defs_plan9_amd64.go
(1.82 KB)
馃搫
defs_plan9_arm.go
(1.73 KB)
馃搫
defs_solaris.go
(3.35 KB)
馃搫
defs_solaris_amd64.go
(1021 B)
馃搫
defs_windows.go
(2.09 KB)
馃搫
defs_windows_386.go
(1.98 KB)
馃搫
defs_windows_amd64.go
(2.71 KB)
馃搫
defs_windows_arm.go
(2.11 KB)
馃搫
defs_windows_arm64.go
(2.63 KB)
馃搫
duff_386.s
(8.24 KB)
馃搫
duff_amd64.s
(5.62 KB)
馃搫
duff_arm.s
(7.11 KB)
馃搫
duff_arm64.s
(5.25 KB)
馃搫
duff_mips64x.s
(11.31 KB)
馃搫
duff_ppc64x.s
(2.43 KB)
馃搫
duff_riscv64.s
(11.38 KB)
馃搫
duff_s390x.s
(507 B)
馃搫
env_plan9.go
(2.99 KB)
馃搫
env_posix.go
(1.95 KB)
馃搫
env_test.go
(1.16 KB)
馃搫
error.go
(9.23 KB)
馃搫
example_test.go
(1.55 KB)
馃搫
export_aix_test.go
(204 B)
馃搫
export_arm_test.go
(226 B)
馃搫
export_darwin_test.go
(351 B)
馃搫
export_debug_regabiargs_off_test.go
(416 B)
馃搫
export_debug_regabiargs_on_test.go
(1.39 KB)
馃搫
export_debug_test.go
(5.86 KB)
馃搫
export_debuglog_test.go
(1.27 KB)
馃搫
export_futex_test.go
(570 B)
馃搫
export_linux_test.go
(429 B)
馃搫
export_mmap_test.go
(571 B)
馃搫
export_pipe2_test.go
(436 B)
馃搫
export_pipe_test.go
(240 B)
馃搫
export_solaris_test.go
(282 B)
馃搫
export_test.go
(30.12 KB)
馃搫
export_unix_test.go
(2.35 KB)
馃搫
export_windows_test.go
(652 B)
馃搫
extern.go
(12.58 KB)
馃搫
fastlog2.go
(1.22 KB)
馃搫
fastlog2_test.go
(784 B)
馃搫
fastlog2table.go
(904 B)
馃搫
float.go
(1.35 KB)
馃搫
funcdata.h
(2.47 KB)
馃搫
futex_test.go
(2.15 KB)
馃搫
gc_test.go
(19.21 KB)
馃搫
gcinfo_test.go
(5.69 KB)
馃搫
go_tls.h
(366 B)
馃搫
hash32.go
(1.61 KB)
馃搫
hash64.go
(2.01 KB)
馃搫
hash_test.go
(16.5 KB)
馃搫
heapdump.go
(17.74 KB)
馃搫
histogram.go
(6.42 KB)
馃搫
histogram_test.go
(1.85 KB)
馃搫
iface.go
(16.13 KB)
馃搫
iface_test.go
(7.51 KB)
馃搧
internal
馃搫
lfstack.go
(1.77 KB)
馃搫
lfstack_32bit.go
(562 B)
馃搫
lfstack_64bit.go
(2.24 KB)
馃搫
lfstack_test.go
(2.78 KB)
馃搫
libfuzzer.go
(2.6 KB)
馃搫
libfuzzer_amd64.s
(961 B)
馃搫
libfuzzer_arm64.s
(772 B)
馃搫
lock_futex.go
(5.22 KB)
馃搫
lock_js.go
(5.81 KB)
馃搫
lock_sema.go
(6.8 KB)
馃搫
lockrank.go
(11.62 KB)
馃搫
lockrank_off.go
(1.17 KB)
馃搫
lockrank_on.go
(9.84 KB)
馃搫
lockrank_test.go
(1.15 KB)
馃搫
malloc.go
(52.33 KB)
馃搫
malloc_test.go
(10.83 KB)
馃搫
map.go
(42.47 KB)
馃搫
map_benchmark_test.go
(10.51 KB)
馃搫
map_fast32.go
(12.63 KB)
馃搫
map_fast64.go
(12.82 KB)
馃搫
map_faststr.go
(14.15 KB)
馃搫
map_test.go
(27.52 KB)
馃搫
mbarrier.go
(12.2 KB)
馃搫
mbitmap.go
(65.27 KB)
馃搫
mcache.go
(9.68 KB)
馃搫
mcentral.go
(7.8 KB)
馃搫
mcheckmark.go
(2.81 KB)
馃搫
mem_aix.go
(1.94 KB)
馃搫
mem_bsd.go
(2.12 KB)
馃搫
mem_darwin.go
(1.88 KB)
馃搫
mem_js.go
(2.35 KB)
馃搫
mem_linux.go
(5.59 KB)
馃搫
mem_plan9.go
(4.53 KB)
馃搫
mem_windows.go
(3.87 KB)
馃搫
memclr_386.s
(2.42 KB)
馃搫
memclr_amd64.s
(3.89 KB)
馃搫
memclr_arm.s
(2.6 KB)
馃搫
memclr_arm64.s
(3.65 KB)
馃搫
memclr_mips64x.s
(1.75 KB)
馃搫
memclr_mipsx.s
(1.35 KB)
馃搫
memclr_plan9_386.s
(983 B)
馃搫
memclr_plan9_amd64.s
(511 B)
馃搫
memclr_ppc64x.s
(4.31 KB)
馃搫
memclr_riscv64.s
(926 B)
馃搫
memclr_s390x.s
(1.96 KB)
馃搫
memclr_wasm.s
(622 B)
馃搫
memmove_386.s
(4.46 KB)
馃搫
memmove_amd64.s
(12.66 KB)
馃搫
memmove_arm.s
(5.9 KB)
馃搫
memmove_arm64.s
(6 KB)
馃搫
memmove_linux_amd64_test.go
(1.6 KB)
馃搫
memmove_mips64x.s
(1.85 KB)
馃搫
memmove_mipsx.s
(4.42 KB)
馃搫
memmove_plan9_386.s
(3.06 KB)
馃搫
memmove_plan9_amd64.s
(3.04 KB)
馃搫
memmove_ppc64x.s
(4.11 KB)
馃搫
memmove_riscv64.s
(1.81 KB)
馃搫
memmove_s390x.s
(2.92 KB)
馃搫
memmove_test.go
(12.04 KB)
馃搫
memmove_wasm.s
(1.74 KB)
馃搧
metrics
馃搫
metrics.go
(17.69 KB)
馃搫
metrics_test.go
(12.48 KB)
馃搫
mfinal.go
(15.76 KB)
馃搫
mfinal_test.go
(5.85 KB)
馃搫
mfixalloc.go
(2.73 KB)
馃搫
mgc.go
(55.18 KB)
馃搫
mgcmark.go
(45.54 KB)
馃搫
mgcpacer.go
(29.56 KB)
馃搫
mgcscavenge.go
(35.05 KB)
馃搫
mgcscavenge_test.go
(12.74 KB)
馃搫
mgcstack.go
(10.58 KB)
馃搫
mgcsweep.go
(23.56 KB)
馃搫
mgcwork.go
(12.82 KB)
馃搫
mheap.go
(66.31 KB)
馃搫
mkduff.go
(7.19 KB)
馃搫
mkfastlog2table.go
(1.32 KB)
馃搫
mkpreempt.go
(14.17 KB)
馃搫
mksizeclasses.go
(9.31 KB)
馃搫
mmap.go
(990 B)
馃搫
mpagealloc.go
(36.77 KB)
馃搫
mpagealloc_32bit.go
(3.81 KB)
馃搫
mpagealloc_64bit.go
(6.65 KB)
馃搫
mpagealloc_test.go
(32.38 KB)
馃搫
mpagecache.go
(5.28 KB)
馃搫
mpagecache_test.go
(9.93 KB)
馃搫
mpallocbits.go
(12.01 KB)
馃搫
mpallocbits_test.go
(13.69 KB)
馃搫
mprof.go
(25.82 KB)
馃搫
mranges.go
(11.84 KB)
馃搫
mranges_test.go
(5.68 KB)
馃搧
msan
馃搫
msan.go
(1.51 KB)
馃搫
msan0.go
(741 B)
馃搫
msan_amd64.s
(2.32 KB)
馃搫
msan_arm64.s
(2.01 KB)
馃搫
msize.go
(777 B)
馃搫
mspanset.go
(12.2 KB)
馃搫
mstats.go
(30.65 KB)
馃搫
mwbbuf.go
(9.3 KB)
馃搫
nbpipe_fcntl_libc_test.go
(499 B)
馃搫
nbpipe_fcntl_unix_test.go
(507 B)
馃搫
nbpipe_pipe.go
(426 B)
馃搫
nbpipe_pipe2.go
(592 B)
馃搫
nbpipe_test.go
(2.26 KB)
馃搫
net_plan9.go
(645 B)
馃搫
netpoll.go
(16.24 KB)
馃搫
netpoll_aix.go
(4.87 KB)
馃搫
netpoll_epoll.go
(4.21 KB)
馃搫
netpoll_fake.go
(670 B)
馃搫
netpoll_kqueue.go
(4.64 KB)
馃搫
netpoll_os_test.go
(360 B)
馃搫
netpoll_solaris.go
(10.75 KB)
馃搫
netpoll_stub.go
(1.42 KB)
馃搫
netpoll_windows.go
(3.75 KB)
馃搫
norace_linux_test.go
(905 B)
馃搫
norace_test.go
(996 B)
馃搫
numcpu_freebsd_test.go
(381 B)
馃搫
os2_aix.go
(20.45 KB)
馃搫
os2_freebsd.go
(302 B)
馃搫
os2_openbsd.go
(296 B)
馃搫
os2_plan9.go
(1.48 KB)
馃搫
os2_solaris.go
(320 B)
馃搫
os3_plan9.go
(3.88 KB)
馃搫
os3_solaris.go
(17.02 KB)
馃搫
os_aix.go
(8.06 KB)
馃搫
os_android.go
(463 B)
馃搫
os_darwin.go
(11.54 KB)
馃搫
os_darwin_arm64.go
(416 B)
馃搫
os_dragonfly.go
(6.46 KB)
馃搫
os_freebsd.go
(11.2 KB)
馃搫
os_freebsd2.go
(507 B)
馃搫
os_freebsd_amd64.go
(529 B)
馃搫
os_freebsd_arm.go
(1.32 KB)
馃搫
os_freebsd_arm64.go
(398 B)
馃搫
os_freebsd_noauxv.go
(264 B)
馃搫
os_illumos.go
(3.93 KB)
馃搫
os_js.go
(3.26 KB)
馃搫
os_linux.go
(13.47 KB)
馃搫
os_linux_arm.go
(1.35 KB)
馃搫
os_linux_arm64.go
(572 B)
馃搫
os_linux_be64.go
(862 B)
馃搫
os_linux_generic.go
(950 B)
馃搫
os_linux_mips64x.go
(1.11 KB)
馃搫
os_linux_mipsx.go
(1.09 KB)
馃搫
os_linux_noauxv.go
(408 B)
馃搫
os_linux_novdso.go
(387 B)
馃搫
os_linux_ppc64x.go
(566 B)
馃搫
os_linux_riscv64.go
(198 B)
馃搫
os_linux_s390x.go
(316 B)
馃搫
os_linux_x86.go
(270 B)
馃搫
os_netbsd.go
(9.09 KB)
馃搫
os_netbsd_386.go
(588 B)
馃搫
os_netbsd_amd64.go
(585 B)
馃搫
os_netbsd_arm.go
(1.13 KB)
馃搫
os_netbsd_arm64.go
(827 B)
馃搫
os_nonopenbsd.go
(456 B)
馃搫
os_only_solaris.go
(376 B)
馃搫
os_openbsd.go
(6.01 KB)
馃搫
os_openbsd_arm.go
(749 B)
馃搫
os_openbsd_arm64.go
(416 B)
馃搫
os_openbsd_libc.go
(1.7 KB)
馃搫
os_openbsd_mips64.go
(416 B)
馃搫
os_openbsd_syscall.go
(1.27 KB)
馃搫
os_openbsd_syscall1.go
(466 B)
馃搫
os_openbsd_syscall2.go
(2.5 KB)
馃搫
os_plan9.go
(10.2 KB)
馃搫
os_plan9_arm.go
(462 B)
馃搫
os_solaris.go
(6.49 KB)
馃搫
os_windows.go
(43.68 KB)
馃搫
os_windows_arm.go
(511 B)
馃搫
os_windows_arm64.go
(339 B)
馃搫
panic.go
(44.28 KB)
馃搫
panic32.go
(4.83 KB)
馃搫
panic_test.go
(1.71 KB)
馃搫
plugin.go
(4.27 KB)
馃搧
pprof
馃搫
preempt.go
(15.4 KB)
馃搫
preempt_386.s
(1.07 KB)
馃搫
preempt_amd64.s
(1.81 KB)
馃搫
preempt_arm.s
(1.66 KB)
馃搫
preempt_arm64.s
(2.99 KB)
馃搫
preempt_mips64x.s
(2.93 KB)
馃搫
preempt_mipsx.s
(2.89 KB)
馃搫
preempt_nonwindows.go
(309 B)
馃搫
preempt_ppc64x.s
(2.92 KB)
馃搫
preempt_riscv64.s
(2.48 KB)
馃搫
preempt_s390x.s
(1.19 KB)
馃搫
preempt_wasm.s
(365 B)
馃搫
print.go
(5.95 KB)
馃搫
proc.go
(181.46 KB)
馃搫
proc_runtime_test.go
(820 B)
馃搫
proc_test.go
(25.02 KB)
馃搫
profbuf.go
(18.26 KB)
馃搫
profbuf_test.go
(8.65 KB)
馃搫
proflabel.go
(1.52 KB)
馃搧
race
馃搫
race.go
(18.56 KB)
馃搫
race0.go
(2.81 KB)
馃搫
race_amd64.s
(14.46 KB)
馃搫
race_arm64.s
(13.71 KB)
馃搫
race_ppc64le.s
(17.72 KB)
馃搫
rand_test.go
(783 B)
馃搫
rdebug.go
(553 B)
馃搫
relax_stub.go
(617 B)
馃搫
rt0_aix_ppc64.s
(4.33 KB)
馃搫
rt0_android_386.s
(822 B)
馃搫
rt0_android_amd64.s
(754 B)
馃搫
rt0_android_arm.s
(843 B)
馃搫
rt0_android_arm64.s
(941 B)
馃搫
rt0_darwin_amd64.s
(399 B)
馃搫
rt0_darwin_arm64.s
(2.27 KB)
馃搫
rt0_dragonfly_amd64.s
(448 B)
馃搫
rt0_freebsd_386.s
(454 B)
馃搫
rt0_freebsd_amd64.s
(442 B)
馃搫
rt0_freebsd_arm.s
(298 B)
馃搫
rt0_freebsd_arm64.s
(2.46 KB)
馃搫
rt0_illumos_amd64.s
(311 B)
馃搫
rt0_ios_amd64.s
(425 B)
馃搫
rt0_ios_arm64.s
(425 B)
馃搫
rt0_js_wasm.s
(2.3 KB)
馃搫
rt0_linux_386.s
(450 B)
馃搫
rt0_linux_amd64.s
(307 B)
馃搫
rt0_linux_arm.s
(1007 B)
馃搫
rt0_linux_arm64.s
(2.39 KB)
馃搫
rt0_linux_mips64x.s
(1.03 KB)
馃搫
rt0_linux_mipsx.s
(835 B)
馃搫
rt0_linux_ppc64.s
(865 B)
馃搫
rt0_linux_ppc64le.s
(3.88 KB)
馃搫
rt0_linux_riscv64.s
(370 B)
馃搫
rt0_linux_s390x.s
(676 B)
馃搫
rt0_netbsd_386.s
(452 B)
馃搫
rt0_netbsd_amd64.s
(309 B)
馃搫
rt0_netbsd_arm.s
(296 B)
馃搫
rt0_netbsd_arm64.s
(2.38 KB)
馃搫
rt0_openbsd_386.s
(454 B)
馃搫
rt0_openbsd_amd64.s
(311 B)
馃搫
rt0_openbsd_arm.s
(298 B)
馃搫
rt0_openbsd_arm64.s
(2.54 KB)
馃搫
rt0_openbsd_mips64.s
(976 B)
馃搫
rt0_plan9_386.s
(523 B)
馃搫
rt0_plan9_amd64.s
(481 B)
馃搫
rt0_plan9_arm.s
(397 B)
馃搫
rt0_solaris_amd64.s
(311 B)
馃搫
rt0_windows_386.s
(1.28 KB)
馃搫
rt0_windows_amd64.s
(986 B)
馃搫
rt0_windows_arm.s
(386 B)
馃搫
rt0_windows_arm64.s
(725 B)
馃搫
runtime-gdb.py
(15.02 KB)
馃搫
runtime-gdb_test.go
(20.19 KB)
馃搫
runtime-lldb_test.go
(4.95 KB)
馃搫
runtime.go
(1.42 KB)
馃搫
runtime1.go
(12.63 KB)
馃搫
runtime2.go
(42.27 KB)
馃搫
runtime_linux_test.go
(1.46 KB)
馃搫
runtime_mmap_test.go
(1.91 KB)
馃搫
runtime_test.go
(7.81 KB)
馃搫
runtime_unix_test.go
(1.29 KB)
馃搫
rwmutex.go
(3.53 KB)
馃搫
rwmutex_test.go
(4.03 KB)
馃搫
select.go
(14.45 KB)
馃搫
sema.go
(16.08 KB)
馃搫
sema_test.go
(2.5 KB)
馃搫
semasleep_test.go
(1.65 KB)
馃搫
sigaction.go
(543 B)
馃搫
signal_386.go
(1.72 KB)
馃搫
signal_aix_ppc64.go
(3.56 KB)
馃搫
signal_amd64.go
(2.71 KB)
馃搫
signal_arm.go
(2.56 KB)
馃搫
signal_arm64.go
(3.16 KB)
馃搫
signal_darwin.go
(2.13 KB)
馃搫
signal_darwin_amd64.go
(3.85 KB)
馃搫
signal_darwin_arm64.go
(3.6 KB)
馃搫
signal_dragonfly.go
(2.17 KB)
馃搫
signal_dragonfly_amd64.go
(2.01 KB)
馃搫
signal_freebsd.go
(2.2 KB)
馃搫
signal_freebsd_386.go
(1.55 KB)
馃搫
signal_freebsd_amd64.go
(2.03 KB)
馃搫
signal_freebsd_arm.go
(2.18 KB)
馃搫
signal_freebsd_arm64.go
(3.23 KB)
馃搫
signal_linux_386.go
(1.59 KB)
馃搫
signal_linux_amd64.go
(2.05 KB)
馃搫
signal_linux_arm.go
(2.13 KB)
馃搫
signal_linux_arm64.go
(2.95 KB)
馃搫
signal_linux_mips64x.go
(3.39 KB)
馃搫
signal_linux_mipsx.go
(3.7 KB)
馃搫
signal_linux_ppc64x.go
(3.46 KB)
馃搫
signal_linux_riscv64.go
(2.92 KB)
馃搫
signal_linux_s390x.go
(4.43 KB)
馃搫
signal_mips64x.go
(3.2 KB)
馃搫
signal_mipsx.go
(3.07 KB)
馃搫
signal_netbsd.go
(2.18 KB)
馃搫
signal_netbsd_386.go
(1.76 KB)
馃搫
signal_netbsd_amd64.go
(2.33 KB)
馃搫
signal_netbsd_arm.go
(2.3 KB)
馃搫
signal_netbsd_arm64.go
(3.4 KB)
馃搫
signal_openbsd.go
(2.18 KB)
馃搫
signal_openbsd_386.go
(1.58 KB)
馃搫
signal_openbsd_amd64.go
(2.04 KB)
馃搫
signal_openbsd_arm.go
(2.12 KB)
馃搫
signal_openbsd_arm64.go
(3.38 KB)
馃搫
signal_openbsd_mips64.go
(3.28 KB)
馃搫
signal_plan9.go
(1.93 KB)
馃搫
signal_ppc64x.go
(3.64 KB)
馃搫
signal_riscv64.go
(2.88 KB)
馃搫
signal_solaris.go
(4.5 KB)
馃搫
signal_solaris_amd64.go
(2.47 KB)
馃搫
signal_unix.go
(37.82 KB)
馃搫
signal_windows.go
(9.2 KB)
馃搫
signal_windows_test.go
(5.73 KB)
馃搫
sigqueue.go
(8.76 KB)
馃搫
sigqueue_note.go
(673 B)
馃搫
sigqueue_plan9.go
(3.39 KB)
馃搫
sigtab_aix.go
(11.3 KB)
馃搫
sigtab_linux_generic.go
(3.56 KB)
馃搫
sigtab_linux_mipsx.go
(6.01 KB)
馃搫
sizeclasses.go
(9.14 KB)
馃搫
sizeof_test.go
(905 B)
馃搫
slice.go
(8.94 KB)
馃搫
slice_test.go
(10.32 KB)
馃搫
softfloat64.go
(10.78 KB)
馃搫
softfloat64_test.go
(4.05 KB)
馃搫
stack.go
(41.92 KB)
馃搫
stack_test.go
(21.05 KB)
馃搫
string.go
(10.85 KB)
馃搫
string_test.go
(9.62 KB)
馃搫
stubs.go
(18.17 KB)
馃搫
stubs2.go
(1.14 KB)
馃搫
stubs3.go
(331 B)
馃搫
stubs_386.go
(550 B)
馃搫
stubs_amd64.go
(1.2 KB)
馃搫
stubs_arm.go
(531 B)
馃搫
stubs_arm64.go
(351 B)
馃搫
stubs_linux.go
(663 B)
馃搫
stubs_mips64x.go
(390 B)
馃搫
stubs_mipsx.go
(305 B)
馃搫
stubs_nonlinux.go
(315 B)
馃搫
stubs_ppc64.go
(383 B)
馃搫
stubs_ppc64le.go
(271 B)
馃搫
stubs_s390x.go
(256 B)
馃搫
symtab.go
(32.29 KB)
馃搫
symtab_test.go
(6.78 KB)
馃搫
sys_aix_ppc64.s
(7.13 KB)
馃搫
sys_arm.go
(521 B)
馃搫
sys_arm64.go
(469 B)
馃搫
sys_darwin.go
(15.91 KB)
馃搫
sys_darwin_amd64.s
(18.52 KB)
馃搫
sys_darwin_arm64.go
(1.68 KB)
馃搫
sys_darwin_arm64.s
(17.23 KB)
馃搫
sys_dragonfly_amd64.s
(8.42 KB)
馃搫
sys_freebsd_386.s
(8.98 KB)
馃搫
sys_freebsd_amd64.s
(10.55 KB)
馃搫
sys_freebsd_arm.s
(10.69 KB)
馃搫
sys_freebsd_arm64.s
(10.33 KB)
馃搫
sys_libc.go
(1.87 KB)
馃搫
sys_linux_386.s
(18.17 KB)
馃搫
sys_linux_amd64.s
(16.25 KB)
馃搫
sys_linux_arm.s
(15.84 KB)
馃搫
sys_linux_arm64.s
(15.26 KB)
馃搫
sys_linux_mips64x.s
(13.4 KB)
馃搫
sys_linux_mipsx.s
(11.16 KB)
馃搫
sys_linux_ppc64x.s
(21.48 KB)
馃搫
sys_linux_riscv64.s
(10.35 KB)
馃搫
sys_linux_s390x.s
(10.52 KB)
馃搫
sys_mips64x.go
(526 B)
馃搫
sys_mipsx.go
(518 B)
馃搫
sys_netbsd_386.s
(10.13 KB)
馃搫
sys_netbsd_amd64.s
(9.91 KB)
馃搫
sys_netbsd_arm.s
(10.94 KB)
馃搫
sys_netbsd_arm64.s
(10.42 KB)
馃搫
sys_nonppc64x.go
(271 B)
馃搫
sys_openbsd.go
(2.3 KB)
馃搫
sys_openbsd1.go
(1.16 KB)
馃搫
sys_openbsd2.go
(7.31 KB)
馃搫
sys_openbsd3.go
(3.29 KB)
馃搫
sys_openbsd_386.s
(19.97 KB)
馃搫
sys_openbsd_amd64.s
(16.44 KB)
馃搫
sys_openbsd_arm.s
(18.09 KB)
馃搫
sys_openbsd_arm64.s
(15.92 KB)
馃搫
sys_openbsd_mips64.s
(9.22 KB)
馃搫
sys_plan9_386.s
(4.4 KB)
馃搫
sys_plan9_amd64.s
(4.47 KB)
馃搫
sys_plan9_arm.s
(7.03 KB)
馃搫
sys_ppc64x.go
(556 B)
馃搫
sys_riscv64.go
(469 B)
馃搫
sys_s390x.go
(469 B)
馃搫
sys_solaris_amd64.s
(6.69 KB)
馃搫
sys_wasm.go
(732 B)
馃搫
sys_wasm.s
(2.65 KB)
馃搫
sys_windows_386.s
(7.74 KB)
馃搫
sys_windows_amd64.s
(9.16 KB)
馃搫
sys_windows_arm.s
(12.02 KB)
馃搫
sys_windows_arm64.s
(12.51 KB)
馃搫
sys_x86.go
(574 B)
馃搫
syscall2_solaris.go
(1.65 KB)
馃搫
syscall_aix.go
(5.99 KB)
馃搫
syscall_solaris.go
(8.26 KB)
馃搫
syscall_windows.go
(16.48 KB)
馃搫
syscall_windows_test.go
(32.53 KB)
馃搧
testdata
馃搫
textflag.h
(1.52 KB)
馃搫
time.go
(30.56 KB)
馃搫
time_fake.go
(2.38 KB)
馃搫
time_linux_amd64.s
(2.18 KB)
馃搫
time_nofake.go
(587 B)
馃搫
time_test.go
(2.03 KB)
馃搫
time_windows.h
(694 B)
馃搫
time_windows_386.s
(1.81 KB)
馃搫
time_windows_amd64.s
(1.07 KB)
馃搫
time_windows_arm.s
(2.07 KB)
馃搫
time_windows_arm64.s
(1.33 KB)
馃搫
timeasm.go
(468 B)
馃搫
timestub.go
(595 B)
馃搫
timestub2.go
(447 B)
馃搫
tls_arm.s
(3.33 KB)
馃搫
tls_arm64.h
(1.22 KB)
馃搫
tls_arm64.s
(1.2 KB)
馃搫
tls_mips64x.s
(759 B)
馃搫
tls_mipsx.s
(731 B)
馃搫
tls_ppc64x.s
(1.52 KB)
馃搫
tls_riscv64.s
(726 B)
馃搫
tls_s390x.s
(1.55 KB)
馃搫
tls_stub.go
(294 B)
馃搫
tls_windows_amd64.go
(294 B)
馃搧
trace
馃搫
trace.go
(38.36 KB)
馃搫
traceback.go
(46.51 KB)
馃搫
traceback_test.go
(8.04 KB)
馃搫
type.go
(18.59 KB)
馃搫
typekind.go
(742 B)
馃搫
utf8.go
(3.39 KB)
馃搫
vdso_elf32.go
(2.79 KB)
馃搫
vdso_elf64.go
(2.87 KB)
馃搫
vdso_freebsd.go
(2.46 KB)
馃搫
vdso_freebsd_arm.go
(454 B)
馃搫
vdso_freebsd_arm64.go
(443 B)
馃搫
vdso_freebsd_x86.go
(1.89 KB)
馃搫
vdso_in_none.go
(490 B)
馃搫
vdso_linux.go
(7.77 KB)
馃搫
vdso_linux_386.go
(669 B)
馃搫
vdso_linux_amd64.go
(685 B)
馃搫
vdso_linux_arm.go
(669 B)
馃搫
vdso_linux_arm64.go
(670 B)
馃搫
vdso_linux_mips64x.go
(892 B)
馃搫
vdso_linux_ppc64x.go
(712 B)
馃搫
vlop_386.s
(2.02 KB)
馃搫
vlop_arm.s
(7.06 KB)
馃搫
vlop_arm_test.go
(3.75 KB)
馃搫
vlrt.go
(5.91 KB)
馃搫
wincallback.go
(3.52 KB)
馃搫
write_err.go
(310 B)
馃搫
write_err_android.go
(4.65 KB)
馃搫
zcallback_windows.go
(155 B)
馃搫
zcallback_windows.s
(63.05 KB)
馃搫
zcallback_windows_arm.s
(89.34 KB)
馃搫
zcallback_windows_arm64.s
(89.34 KB)
Editing: sys_linux_arm64.s
// Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // // System calls and other sys.stuff for arm64, Linux // #include "go_asm.h" #include "go_tls.h" #include "textflag.h" #define AT_FDCWD -100 #define CLOCK_REALTIME 0 #define CLOCK_MONOTONIC 1 #define SYS_exit 93 #define SYS_read 63 #define SYS_write 64 #define SYS_openat 56 #define SYS_close 57 #define SYS_pipe2 59 #define SYS_fcntl 25 #define SYS_nanosleep 101 #define SYS_mmap 222 #define SYS_munmap 215 #define SYS_setitimer 103 #define SYS_clone 220 #define SYS_sched_yield 124 #define SYS_rt_sigreturn 139 #define SYS_rt_sigaction 134 #define SYS_rt_sigprocmask 135 #define SYS_sigaltstack 132 #define SYS_madvise 233 #define SYS_mincore 232 #define SYS_getpid 172 #define SYS_gettid 178 #define SYS_kill 129 #define SYS_tgkill 131 #define SYS_futex 98 #define SYS_sched_getaffinity 123 #define SYS_exit_group 94 #define SYS_epoll_create1 20 #define SYS_epoll_ctl 21 #define SYS_epoll_pwait 22 #define SYS_clock_gettime 113 #define SYS_faccessat 48 #define SYS_socket 198 #define SYS_connect 203 #define SYS_brk 214 TEXT runtime路exit(SB),NOSPLIT|NOFRAME,$0-4 MOVW code+0(FP), R0 MOVD $SYS_exit_group, R8 SVC RET // func exitThread(wait *uint32) TEXT runtime路exitThread(SB),NOSPLIT|NOFRAME,$0-8 MOVD wait+0(FP), R0 // We're done using the stack. MOVW $0, R1 STLRW R1, (R0) MOVW $0, R0 // exit code MOVD $SYS_exit, R8 SVC JMP 0(PC) TEXT runtime路open(SB),NOSPLIT|NOFRAME,$0-20 MOVD $AT_FDCWD, R0 MOVD name+0(FP), R1 MOVW mode+8(FP), R2 MOVW perm+12(FP), R3 MOVD $SYS_openat, R8 SVC CMN $4095, R0 BCC done MOVW $-1, R0 done: MOVW R0, ret+16(FP) RET TEXT runtime路closefd(SB),NOSPLIT|NOFRAME,$0-12 MOVW fd+0(FP), R0 MOVD $SYS_close, R8 SVC CMN $4095, R0 BCC done MOVW $-1, R0 done: MOVW R0, ret+8(FP) RET TEXT runtime路write1(SB),NOSPLIT|NOFRAME,$0-28 MOVD fd+0(FP), R0 MOVD p+8(FP), R1 MOVW n+16(FP), R2 MOVD $SYS_write, R8 SVC MOVW R0, ret+24(FP) RET TEXT runtime路read(SB),NOSPLIT|NOFRAME,$0-28 MOVW fd+0(FP), R0 MOVD p+8(FP), R1 MOVW n+16(FP), R2 MOVD $SYS_read, R8 SVC MOVW R0, ret+24(FP) RET // func pipe() (r, w int32, errno int32) TEXT runtime路pipe(SB),NOSPLIT|NOFRAME,$0-12 MOVD $r+0(FP), R0 MOVW $0, R1 MOVW $SYS_pipe2, R8 SVC MOVW R0, errno+8(FP) RET // func pipe2(flags int32) (r, w int32, errno int32) TEXT runtime路pipe2(SB),NOSPLIT|NOFRAME,$0-20 MOVD $r+8(FP), R0 MOVW flags+0(FP), R1 MOVW $SYS_pipe2, R8 SVC MOVW R0, errno+16(FP) RET TEXT runtime路usleep(SB),NOSPLIT,$24-4 MOVWU usec+0(FP), R3 MOVD R3, R5 MOVW $1000000, R4 UDIV R4, R3 MOVD R3, 8(RSP) MUL R3, R4 SUB R4, R5 MOVW $1000, R4 MUL R4, R5 MOVD R5, 16(RSP) // nanosleep(&ts, 0) ADD $8, RSP, R0 MOVD $0, R1 MOVD $SYS_nanosleep, R8 SVC RET TEXT runtime路gettid(SB),NOSPLIT,$0-4 MOVD $SYS_gettid, R8 SVC MOVW R0, ret+0(FP) RET TEXT runtime路raise(SB),NOSPLIT|NOFRAME,$0 MOVD $SYS_getpid, R8 SVC MOVW R0, R19 MOVD $SYS_gettid, R8 SVC MOVW R0, R1 // arg 2 tid MOVW R19, R0 // arg 1 pid MOVW sig+0(FP), R2 // arg 3 MOVD $SYS_tgkill, R8 SVC RET TEXT runtime路raiseproc(SB),NOSPLIT|NOFRAME,$0 MOVD $SYS_getpid, R8 SVC MOVW R0, R0 // arg 1 pid MOVW sig+0(FP), R1 // arg 2 MOVD $SYS_kill, R8 SVC RET TEXT 路getpid(SB),NOSPLIT|NOFRAME,$0-8 MOVD $SYS_getpid, R8 SVC MOVD R0, ret+0(FP) RET TEXT 路tgkill(SB),NOSPLIT,$0-24 MOVD tgid+0(FP), R0 MOVD tid+8(FP), R1 MOVD sig+16(FP), R2 MOVD $SYS_tgkill, R8 SVC RET TEXT runtime路setitimer(SB),NOSPLIT|NOFRAME,$0-24 MOVW mode+0(FP), R0 MOVD new+8(FP), R1 MOVD old+16(FP), R2 MOVD $SYS_setitimer, R8 SVC RET TEXT runtime路mincore(SB),NOSPLIT|NOFRAME,$0-28 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVD dst+16(FP), R2 MOVD $SYS_mincore, R8 SVC MOVW R0, ret+24(FP) RET // func walltime() (sec int64, nsec int32) TEXT runtime路walltime(SB),NOSPLIT,$24-12 MOVD RSP, R20 // R20 is unchanged by C code MOVD RSP, R1 MOVD g_m(g), R21 // R21 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. // Save the old values on stack and restore them on exit, // so this function is reentrant. MOVD m_vdsoPC(R21), R2 MOVD m_vdsoSP(R21), R3 MOVD R2, 8(RSP) MOVD R3, 16(RSP) MOVD LR, m_vdsoPC(R21) MOVD R20, m_vdsoSP(R21) MOVD m_curg(R21), R0 CMP g, R0 BNE noswitch MOVD m_g0(R21), R3 MOVD (g_sched+gobuf_sp)(R3), R1 // Set RSP to g0 stack noswitch: SUB $16, R1 BIC $15, R1 // Align for C code MOVD R1, RSP MOVW $CLOCK_REALTIME, R0 MOVD runtime路vdsoClockgettimeSym(SB), R2 CBZ R2, fallback // Store g on gsignal's stack, so if we receive a signal // during VDSO code we can find the g. // If we don't have a signal stack, we won't receive signal, // so don't bother saving g. // When using cgo, we already saved g on TLS, also don't save // g here. // Also don't save g if we are already on the signal stack. // We won't get a nested signal. MOVBU runtime路iscgo(SB), R22 CBNZ R22, nosaveg MOVD m_gsignal(R21), R22 // g.m.gsignal CBZ R22, nosaveg CMP g, R22 BEQ nosaveg MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo MOVD g, (R22) BL (R2) MOVD ZR, (R22) // clear g slot, R22 is unchanged by C code B finish nosaveg: BL (R2) B finish fallback: MOVD $SYS_clock_gettime, R8 SVC finish: MOVD 0(RSP), R3 // sec MOVD 8(RSP), R5 // nsec MOVD R20, RSP // restore SP // Restore vdsoPC, vdsoSP // We don't worry about being signaled between the two stores. // If we are not in a signal handler, we'll restore vdsoSP to 0, // and no one will care about vdsoPC. If we are in a signal handler, // we cannot receive another signal. MOVD 16(RSP), R1 MOVD R1, m_vdsoSP(R21) MOVD 8(RSP), R1 MOVD R1, m_vdsoPC(R21) MOVD R3, sec+0(FP) MOVW R5, nsec+8(FP) RET TEXT runtime路nanotime1(SB),NOSPLIT,$24-8 MOVD RSP, R20 // R20 is unchanged by C code MOVD RSP, R1 MOVD g_m(g), R21 // R21 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. // Save the old values on stack and restore them on exit, // so this function is reentrant. MOVD m_vdsoPC(R21), R2 MOVD m_vdsoSP(R21), R3 MOVD R2, 8(RSP) MOVD R3, 16(RSP) MOVD LR, m_vdsoPC(R21) MOVD R20, m_vdsoSP(R21) MOVD m_curg(R21), R0 CMP g, R0 BNE noswitch MOVD m_g0(R21), R3 MOVD (g_sched+gobuf_sp)(R3), R1 // Set RSP to g0 stack noswitch: SUB $32, R1 BIC $15, R1 MOVD R1, RSP MOVW $CLOCK_MONOTONIC, R0 MOVD runtime路vdsoClockgettimeSym(SB), R2 CBZ R2, fallback // Store g on gsignal's stack, so if we receive a signal // during VDSO code we can find the g. // If we don't have a signal stack, we won't receive signal, // so don't bother saving g. // When using cgo, we already saved g on TLS, also don't save // g here. // Also don't save g if we are already on the signal stack. // We won't get a nested signal. MOVBU runtime路iscgo(SB), R22 CBNZ R22, nosaveg MOVD m_gsignal(R21), R22 // g.m.gsignal CBZ R22, nosaveg CMP g, R22 BEQ nosaveg MOVD (g_stack+stack_lo)(R22), R22 // g.m.gsignal.stack.lo MOVD g, (R22) BL (R2) MOVD ZR, (R22) // clear g slot, R22 is unchanged by C code B finish nosaveg: BL (R2) B finish fallback: MOVD $SYS_clock_gettime, R8 SVC finish: MOVD 0(RSP), R3 // sec MOVD 8(RSP), R5 // nsec MOVD R20, RSP // restore SP // Restore vdsoPC, vdsoSP // We don't worry about being signaled between the two stores. // If we are not in a signal handler, we'll restore vdsoSP to 0, // and no one will care about vdsoPC. If we are in a signal handler, // we cannot receive another signal. MOVD 16(RSP), R1 MOVD R1, m_vdsoSP(R21) MOVD 8(RSP), R1 MOVD R1, m_vdsoPC(R21) // sec is in R3, nsec in R5 // return nsec in R3 MOVD $1000000000, R4 MUL R4, R3 ADD R5, R3 MOVD R3, ret+0(FP) RET TEXT runtime路rtsigprocmask(SB),NOSPLIT|NOFRAME,$0-28 MOVW how+0(FP), R0 MOVD new+8(FP), R1 MOVD old+16(FP), R2 MOVW size+24(FP), R3 MOVD $SYS_rt_sigprocmask, R8 SVC CMN $4095, R0 BCC done MOVD $0, R0 MOVD R0, (R0) // crash done: RET TEXT runtime路rt_sigaction(SB),NOSPLIT|NOFRAME,$0-36 MOVD sig+0(FP), R0 MOVD new+8(FP), R1 MOVD old+16(FP), R2 MOVD size+24(FP), R3 MOVD $SYS_rt_sigaction, R8 SVC MOVW R0, ret+32(FP) RET // Call the function stored in _cgo_sigaction using the GCC calling convention. TEXT runtime路callCgoSigaction(SB),NOSPLIT,$0 MOVD sig+0(FP), R0 MOVD new+8(FP), R1 MOVD old+16(FP), R2 MOVD _cgo_sigaction(SB), R3 SUB $16, RSP // reserve 16 bytes for sp-8 where fp may be saved. BL R3 ADD $16, RSP MOVW R0, ret+24(FP) RET TEXT runtime路sigfwd(SB),NOSPLIT,$0-32 MOVW sig+8(FP), R0 MOVD info+16(FP), R1 MOVD ctx+24(FP), R2 MOVD fn+0(FP), R11 BL (R11) RET TEXT runtime路sigtramp(SB),NOSPLIT,$192 // Save callee-save registers in the case of signal forwarding. // Please refer to https://golang.org/issue/31827 . MOVD R19, 8*4(RSP) MOVD R20, 8*5(RSP) MOVD R21, 8*6(RSP) MOVD R22, 8*7(RSP) MOVD R23, 8*8(RSP) MOVD R24, 8*9(RSP) MOVD R25, 8*10(RSP) MOVD R26, 8*11(RSP) MOVD R27, 8*12(RSP) MOVD g, 8*13(RSP) MOVD R29, 8*14(RSP) FMOVD F8, 8*15(RSP) FMOVD F9, 8*16(RSP) FMOVD F10, 8*17(RSP) FMOVD F11, 8*18(RSP) FMOVD F12, 8*19(RSP) FMOVD F13, 8*20(RSP) FMOVD F14, 8*21(RSP) FMOVD F15, 8*22(RSP) // this might be called in external code context, // where g is not set. // first save R0, because runtime路load_g will clobber it MOVW R0, 8(RSP) MOVBU runtime路iscgo(SB), R0 CBZ R0, 2(PC) BL runtime路load_g(SB) MOVD R1, 16(RSP) MOVD R2, 24(RSP) MOVD $runtime路sigtrampgo(SB), R0 BL (R0) // Restore callee-save registers. MOVD 8*4(RSP), R19 MOVD 8*5(RSP), R20 MOVD 8*6(RSP), R21 MOVD 8*7(RSP), R22 MOVD 8*8(RSP), R23 MOVD 8*9(RSP), R24 MOVD 8*10(RSP), R25 MOVD 8*11(RSP), R26 MOVD 8*12(RSP), R27 MOVD 8*13(RSP), g MOVD 8*14(RSP), R29 FMOVD 8*15(RSP), F8 FMOVD 8*16(RSP), F9 FMOVD 8*17(RSP), F10 FMOVD 8*18(RSP), F11 FMOVD 8*19(RSP), F12 FMOVD 8*20(RSP), F13 FMOVD 8*21(RSP), F14 FMOVD 8*22(RSP), F15 RET TEXT runtime路cgoSigtramp(SB),NOSPLIT,$0 MOVD $runtime路sigtramp(SB), R3 B (R3) TEXT runtime路sysMmap(SB),NOSPLIT|NOFRAME,$0 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVW prot+16(FP), R2 MOVW flags+20(FP), R3 MOVW fd+24(FP), R4 MOVW off+28(FP), R5 MOVD $SYS_mmap, R8 SVC CMN $4095, R0 BCC ok NEG R0,R0 MOVD $0, p+32(FP) MOVD R0, err+40(FP) RET ok: MOVD R0, p+32(FP) MOVD $0, err+40(FP) RET // Call the function stored in _cgo_mmap using the GCC calling convention. // This must be called on the system stack. TEXT runtime路callCgoMmap(SB),NOSPLIT,$0 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVW prot+16(FP), R2 MOVW flags+20(FP), R3 MOVW fd+24(FP), R4 MOVW off+28(FP), R5 MOVD _cgo_mmap(SB), R9 SUB $16, RSP // reserve 16 bytes for sp-8 where fp may be saved. BL R9 ADD $16, RSP MOVD R0, ret+32(FP) RET TEXT runtime路sysMunmap(SB),NOSPLIT|NOFRAME,$0 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVD $SYS_munmap, R8 SVC CMN $4095, R0 BCC cool MOVD R0, 0xf0(R0) cool: RET // Call the function stored in _cgo_munmap using the GCC calling convention. // This must be called on the system stack. TEXT runtime路callCgoMunmap(SB),NOSPLIT,$0 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVD _cgo_munmap(SB), R9 SUB $16, RSP // reserve 16 bytes for sp-8 where fp may be saved. BL R9 ADD $16, RSP RET TEXT runtime路madvise(SB),NOSPLIT|NOFRAME,$0 MOVD addr+0(FP), R0 MOVD n+8(FP), R1 MOVW flags+16(FP), R2 MOVD $SYS_madvise, R8 SVC MOVW R0, ret+24(FP) RET // int64 futex(int32 *uaddr, int32 op, int32 val, // struct timespec *timeout, int32 *uaddr2, int32 val2); TEXT runtime路futex(SB),NOSPLIT|NOFRAME,$0 MOVD addr+0(FP), R0 MOVW op+8(FP), R1 MOVW val+12(FP), R2 MOVD ts+16(FP), R3 MOVD addr2+24(FP), R4 MOVW val3+32(FP), R5 MOVD $SYS_futex, R8 SVC MOVW R0, ret+40(FP) RET // int64 clone(int32 flags, void *stk, M *mp, G *gp, void (*fn)(void)); TEXT runtime路clone(SB),NOSPLIT|NOFRAME,$0 MOVW flags+0(FP), R0 MOVD stk+8(FP), R1 // Copy mp, gp, fn off parent stack for use by child. MOVD mp+16(FP), R10 MOVD gp+24(FP), R11 MOVD fn+32(FP), R12 MOVD R10, -8(R1) MOVD R11, -16(R1) MOVD R12, -24(R1) MOVD $1234, R10 MOVD R10, -32(R1) MOVD $SYS_clone, R8 SVC // In parent, return. CMP ZR, R0 BEQ child MOVW R0, ret+40(FP) RET child: // In child, on new stack. MOVD -32(RSP), R10 MOVD $1234, R0 CMP R0, R10 BEQ good MOVD $0, R0 MOVD R0, (R0) // crash good: // Initialize m->procid to Linux tid MOVD $SYS_gettid, R8 SVC MOVD -24(RSP), R12 // fn MOVD -16(RSP), R11 // g MOVD -8(RSP), R10 // m CMP $0, R10 BEQ nog CMP $0, R11 BEQ nog MOVD R0, m_procid(R10) // TODO: setup TLS. // In child, set up new stack MOVD R10, g_m(R11) MOVD R11, g //CALL runtime路stackcheck(SB) nog: // Call fn MOVD R12, R0 BL (R0) // It shouldn't return. If it does, exit that thread. MOVW $111, R0 again: MOVD $SYS_exit, R8 SVC B again // keep exiting TEXT runtime路sigaltstack(SB),NOSPLIT|NOFRAME,$0 MOVD new+0(FP), R0 MOVD old+8(FP), R1 MOVD $SYS_sigaltstack, R8 SVC CMN $4095, R0 BCC ok MOVD $0, R0 MOVD R0, (R0) // crash ok: RET TEXT runtime路osyield(SB),NOSPLIT|NOFRAME,$0 MOVD $SYS_sched_yield, R8 SVC RET TEXT runtime路sched_getaffinity(SB),NOSPLIT|NOFRAME,$0 MOVD pid+0(FP), R0 MOVD len+8(FP), R1 MOVD buf+16(FP), R2 MOVD $SYS_sched_getaffinity, R8 SVC MOVW R0, ret+24(FP) RET // int32 runtime路epollcreate(int32 size); TEXT runtime路epollcreate(SB),NOSPLIT|NOFRAME,$0 MOVW $0, R0 MOVD $SYS_epoll_create1, R8 SVC MOVW R0, ret+8(FP) RET // int32 runtime路epollcreate1(int32 flags); TEXT runtime路epollcreate1(SB),NOSPLIT|NOFRAME,$0 MOVW flags+0(FP), R0 MOVD $SYS_epoll_create1, R8 SVC MOVW R0, ret+8(FP) RET // func epollctl(epfd, op, fd int32, ev *epollEvent) int TEXT runtime路epollctl(SB),NOSPLIT|NOFRAME,$0 MOVW epfd+0(FP), R0 MOVW op+4(FP), R1 MOVW fd+8(FP), R2 MOVD ev+16(FP), R3 MOVD $SYS_epoll_ctl, R8 SVC MOVW R0, ret+24(FP) RET // int32 runtime路epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout); TEXT runtime路epollwait(SB),NOSPLIT|NOFRAME,$0 MOVW epfd+0(FP), R0 MOVD ev+8(FP), R1 MOVW nev+16(FP), R2 MOVW timeout+20(FP), R3 MOVD $0, R4 MOVD $SYS_epoll_pwait, R8 SVC MOVW R0, ret+24(FP) RET // void runtime路closeonexec(int32 fd); TEXT runtime路closeonexec(SB),NOSPLIT|NOFRAME,$0 MOVW fd+0(FP), R0 // fd MOVD $2, R1 // F_SETFD MOVD $1, R2 // FD_CLOEXEC MOVD $SYS_fcntl, R8 SVC RET // func runtime路setNonblock(int32 fd) TEXT runtime路setNonblock(SB),NOSPLIT|NOFRAME,$0-4 MOVW fd+0(FP), R0 // fd MOVD $3, R1 // F_GETFL MOVD $0, R2 MOVD $SYS_fcntl, R8 SVC MOVD $0x800, R2 // O_NONBLOCK ORR R0, R2 MOVW fd+0(FP), R0 // fd MOVD $4, R1 // F_SETFL MOVD $SYS_fcntl, R8 SVC RET // int access(const char *name, int mode) TEXT runtime路access(SB),NOSPLIT,$0-20 MOVD $AT_FDCWD, R0 MOVD name+0(FP), R1 MOVW mode+8(FP), R2 MOVD $SYS_faccessat, R8 SVC MOVW R0, ret+16(FP) RET // int connect(int fd, const struct sockaddr *addr, socklen_t len) TEXT runtime路connect(SB),NOSPLIT,$0-28 MOVW fd+0(FP), R0 MOVD addr+8(FP), R1 MOVW len+16(FP), R2 MOVD $SYS_connect, R8 SVC MOVW R0, ret+24(FP) RET // int socket(int domain, int typ, int prot) TEXT runtime路socket(SB),NOSPLIT,$0-20 MOVW domain+0(FP), R0 MOVW typ+4(FP), R1 MOVW prot+8(FP), R2 MOVD $SYS_socket, R8 SVC MOVW R0, ret+16(FP) RET // func sbrk0() uintptr TEXT runtime路sbrk0(SB),NOSPLIT,$0-8 // Implemented as brk(NULL). MOVD $0, R0 MOVD $SYS_brk, R8 SVC MOVD R0, ret+0(FP) RET TEXT runtime路sigreturn(SB),NOSPLIT,$0-0 RET
Upload File
Create Folder