X7ROOT File Manager
Current Path:
/opt/golang/1.22.0/src/runtime
opt
/
golang
/
1.22.0
/
src
/
runtime
/
馃搧
..
馃搫
HACKING.md
(13.85 KB)
馃搫
Makefile
(178 B)
馃搫
abi_test.go
(2.83 KB)
馃搫
alg.go
(10.99 KB)
馃搫
align_runtime_test.go
(1.82 KB)
馃搫
align_test.go
(5.37 KB)
馃搫
arena.go
(31.66 KB)
馃搫
arena_test.go
(13.39 KB)
馃搧
asan
馃搫
asan.go
(1.55 KB)
馃搫
asan0.go
(760 B)
馃搫
asan_amd64.s
(2.45 KB)
馃搫
asan_arm64.s
(2.14 KB)
馃搫
asan_loong64.s
(2.12 KB)
馃搫
asan_ppc64le.s
(2.75 KB)
馃搫
asan_riscv64.s
(1.92 KB)
馃搫
asm.s
(719 B)
馃搫
asm_386.s
(42.54 KB)
馃搫
asm_amd64.h
(631 B)
馃搫
asm_amd64.s
(60.09 KB)
馃搫
asm_arm.s
(31.58 KB)
馃搫
asm_arm64.s
(43.33 KB)
馃搫
asm_loong64.s
(27.58 KB)
馃搫
asm_mips64x.s
(24.34 KB)
馃搫
asm_mipsx.s
(25.82 KB)
馃搫
asm_ppc64x.h
(1.93 KB)
馃搫
asm_ppc64x.s
(45.19 KB)
馃搫
asm_riscv64.s
(26.97 KB)
馃搫
asm_s390x.s
(27.55 KB)
馃搫
asm_wasm.s
(11.82 KB)
馃搫
atomic_arm64.s
(259 B)
馃搫
atomic_loong64.s
(245 B)
馃搫
atomic_mips64x.s
(300 B)
馃搫
atomic_mipsx.s
(262 B)
馃搫
atomic_pointer.go
(3.66 KB)
馃搫
atomic_ppc64x.s
(437 B)
馃搫
atomic_riscv64.s
(275 B)
馃搫
auxv_none.go
(298 B)
馃搫
callers_test.go
(12.13 KB)
馃搧
cgo
馃搫
cgo.go
(2.5 KB)
馃搫
cgo_mmap.go
(2.42 KB)
馃搫
cgo_ppc64x.go
(418 B)
馃搫
cgo_sigaction.go
(3.28 KB)
馃搫
cgocall.go
(23.23 KB)
馃搫
cgocallback.go
(317 B)
馃搫
cgocheck.go
(7.97 KB)
馃搫
chan.go
(23.74 KB)
馃搫
chan_test.go
(23.44 KB)
馃搫
chanbarrier_test.go
(1.4 KB)
馃搫
checkptr.go
(3.29 KB)
馃搫
checkptr_test.go
(2.86 KB)
馃搫
closure_test.go
(937 B)
馃搫
compiler.go
(410 B)
馃搫
complex.go
(1.59 KB)
馃搫
complex_test.go
(1.05 KB)
馃搫
conv_wasm_test.go
(2.96 KB)
馃搫
coro.go
(4.92 KB)
馃搧
coverage
馃搫
covercounter.go
(749 B)
馃搫
covermeta.go
(2.4 KB)
馃搫
cpuflags.go
(810 B)
馃搫
cpuflags_amd64.go
(533 B)
馃搫
cpuflags_arm64.go
(312 B)
馃搫
cpuprof.go
(7.94 KB)
馃搫
cputicks.go
(437 B)
馃搫
crash_cgo_test.go
(23.35 KB)
馃搫
crash_test.go
(23.12 KB)
馃搫
crash_unix_test.go
(9.19 KB)
馃搫
create_file_nounix.go
(305 B)
馃搫
create_file_unix.go
(368 B)
馃搧
debug
馃搫
debug.go
(3.53 KB)
馃搫
debug_test.go
(7.99 KB)
馃搫
debugcall.go
(6.75 KB)
馃搫
debuglog.go
(18.24 KB)
馃搫
debuglog_off.go
(357 B)
馃搫
debuglog_on.go
(1.09 KB)
馃搫
debuglog_test.go
(4.9 KB)
馃搫
defer_test.go
(11.4 KB)
馃搫
defs1_linux.go
(845 B)
馃搫
defs1_netbsd_386.go
(2.91 KB)
馃搫
defs1_netbsd_amd64.go
(3.14 KB)
馃搫
defs1_netbsd_arm.go
(3.03 KB)
馃搫
defs1_netbsd_arm64.go
(3.25 KB)
馃搫
defs1_solaris_amd64.go
(4.01 KB)
馃搫
defs2_linux.go
(3.22 KB)
馃搫
defs3_linux.go
(1.09 KB)
馃搫
defs_aix.go
(4.17 KB)
馃搫
defs_aix_ppc64.go
(3.63 KB)
馃搫
defs_arm_linux.go
(2.67 KB)
馃搫
defs_darwin.go
(4.18 KB)
馃搫
defs_darwin_amd64.go
(6.34 KB)
馃搫
defs_darwin_arm64.go
(4.17 KB)
馃搫
defs_dragonfly.go
(2.73 KB)
馃搫
defs_dragonfly_amd64.go
(3.41 KB)
馃搫
defs_freebsd.go
(3.96 KB)
馃搫
defs_freebsd_386.go
(4.52 KB)
馃搫
defs_freebsd_amd64.go
(4.79 KB)
馃搫
defs_freebsd_arm.go
(3.92 KB)
馃搫
defs_freebsd_arm64.go
(4.18 KB)
馃搫
defs_freebsd_riscv64.go
(4.19 KB)
馃搫
defs_illumos_amd64.go
(285 B)
馃搫
defs_linux.go
(2.92 KB)
馃搫
defs_linux_386.go
(4.2 KB)
馃搫
defs_linux_amd64.go
(4.7 KB)
馃搫
defs_linux_arm.go
(3.89 KB)
馃搫
defs_linux_arm64.go
(3.62 KB)
馃搫
defs_linux_loong64.go
(3.43 KB)
馃搫
defs_linux_mips64x.go
(3.6 KB)
馃搫
defs_linux_mipsx.go
(3.6 KB)
馃搫
defs_linux_ppc64.go
(3.69 KB)
馃搫
defs_linux_ppc64le.go
(3.69 KB)
馃搫
defs_linux_riscv64.go
(3.81 KB)
馃搫
defs_linux_s390x.go
(3.16 KB)
馃搫
defs_netbsd.go
(2.83 KB)
馃搫
defs_netbsd_386.go
(855 B)
馃搫
defs_netbsd_amd64.go
(1.01 KB)
馃搫
defs_netbsd_arm.go
(764 B)
馃搫
defs_openbsd.go
(3.06 KB)
馃搫
defs_openbsd_386.go
(2.91 KB)
馃搫
defs_openbsd_amd64.go
(3.11 KB)
馃搫
defs_openbsd_arm.go
(3.03 KB)
馃搫
defs_openbsd_arm64.go
(2.78 KB)
馃搫
defs_openbsd_mips64.go
(2.75 KB)
馃搫
defs_openbsd_ppc64.go
(3 KB)
馃搫
defs_openbsd_riscv64.go
(2.89 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.32 KB)
馃搫
defs_solaris_amd64.go
(1004 B)
馃搫
defs_windows.go
(2.25 KB)
馃搫
defs_windows_386.go
(2.28 KB)
馃搫
defs_windows_amd64.go
(3.19 KB)
馃搫
defs_windows_arm.go
(2.57 KB)
馃搫
defs_windows_arm64.go
(3.07 KB)
馃搫
duff_386.s
(8.24 KB)
馃搫
duff_amd64.s
(5.64 KB)
馃搫
duff_arm.s
(7.11 KB)
馃搫
duff_arm64.s
(5.27 KB)
馃搫
duff_loong64.s
(11.9 KB)
馃搫
duff_mips64x.s
(11.28 KB)
馃搫
duff_ppc64x.s
(7.06 KB)
馃搫
duff_riscv64.s
(11.4 KB)
馃搫
duff_s390x.s
(507 B)
馃搫
ehooks_test.go
(2.04 KB)
馃搫
env_plan9.go
(3 KB)
馃搫
env_posix.go
(1.56 KB)
馃搫
env_test.go
(1.16 KB)
馃搫
error.go
(9.29 KB)
馃搫
example_test.go
(1.55 KB)
馃搫
exithook.go
(2.32 KB)
馃搫
export_aix_test.go
(207 B)
馃搫
export_arm_test.go
(226 B)
馃搫
export_darwin_test.go
(207 B)
馃搫
export_debug_amd64_test.go
(3.6 KB)
馃搫
export_debug_arm64_test.go
(3.49 KB)
馃搫
export_debug_ppc64le_test.go
(3.5 KB)
馃搫
export_debug_test.go
(5.07 KB)
馃搫
export_debuglog_test.go
(1.27 KB)
馃搫
export_linux_test.go
(378 B)
馃搫
export_mmap_test.go
(429 B)
馃搫
export_pipe2_test.go
(310 B)
馃搫
export_pipe_test.go
(219 B)
馃搫
export_test.go
(50.52 KB)
馃搫
export_unix_test.go
(2.27 KB)
馃搫
export_windows_test.go
(903 B)
馃搫
extern.go
(18.58 KB)
馃搫
fastlog2.go
(1.22 KB)
馃搫
fastlog2_test.go
(784 B)
馃搫
fastlog2table.go
(904 B)
馃搫
fds_nonunix.go
(256 B)
馃搫
fds_test.go
(1.43 KB)
馃搫
fds_unix.go
(1.27 KB)
馃搫
float.go
(1.35 KB)
馃搫
float_test.go
(699 B)
馃搫
funcdata.h
(2.53 KB)
馃搫
gc_test.go
(20.32 KB)
馃搫
gcinfo_test.go
(5.95 KB)
馃搫
go_tls.h
(366 B)
馃搫
hash32.go
(1.58 KB)
馃搫
hash64.go
(1.95 KB)
馃搫
hash_test.go
(17.24 KB)
馃搫
heap_test.go
(529 B)
馃搫
heapdump.go
(17.88 KB)
馃搫
histogram.go
(7.3 KB)
馃搫
histogram_test.go
(3.51 KB)
馃搫
iface.go
(20.92 KB)
馃搫
iface_test.go
(7.45 KB)
馃搫
import_test.go
(1.42 KB)
馃搫
importx_test.go
(763 B)
馃搧
internal
馃搫
lfstack.go
(2.03 KB)
馃搫
lfstack_test.go
(2.74 KB)
馃搫
libfuzzer.go
(6.34 KB)
馃搫
libfuzzer_amd64.s
(5.03 KB)
馃搫
libfuzzer_arm64.s
(3.15 KB)
馃搫
lock_futex.go
(5.4 KB)
馃搫
lock_js.go
(7.28 KB)
馃搫
lock_sema.go
(6.75 KB)
馃搫
lock_wasip1.go
(2.01 KB)
馃搫
lockrank.go
(18.19 KB)
馃搫
lockrank_off.go
(1.17 KB)
馃搫
lockrank_on.go
(10.27 KB)
馃搫
lockrank_test.go
(856 B)
馃搫
malloc.go
(58.5 KB)
馃搫
malloc_test.go
(10.64 KB)
馃搫
map.go
(52.17 KB)
馃搫
map_benchmark_test.go
(10.59 KB)
馃搫
map_fast32.go
(12.74 KB)
馃搫
map_fast64.go
(12.92 KB)
馃搫
map_faststr.go
(14.32 KB)
馃搫
map_test.go
(31.75 KB)
馃搫
mbarrier.go
(13.78 KB)
馃搫
mbitmap.go
(22.54 KB)
馃搫
mbitmap_allocheaders.go
(44.67 KB)
馃搫
mbitmap_noallocheaders.go
(28.95 KB)
馃搫
mcache.go
(10 KB)
馃搫
mcentral.go
(8.05 KB)
馃搫
mcheckmark.go
(2.85 KB)
馃搫
mem.go
(6.72 KB)
馃搫
mem_aix.go
(2.01 KB)
馃搫
mem_bsd.go
(2.21 KB)
馃搫
mem_darwin.go
(1.96 KB)
馃搫
mem_js.go
(457 B)
馃搫
mem_linux.go
(4.98 KB)
馃搫
mem_plan9.go
(447 B)
馃搫
mem_sbrk.go
(4.19 KB)
馃搫
mem_wasip1.go
(392 B)
馃搫
mem_wasm.go
(488 B)
馃搫
mem_windows.go
(3.88 KB)
馃搫
memclr_386.s
(2.38 KB)
馃搫
memclr_amd64.s
(4.91 KB)
馃搫
memclr_arm.s
(2.6 KB)
馃搫
memclr_arm64.s
(3.62 KB)
馃搫
memclr_loong64.s
(843 B)
馃搫
memclr_mips64x.s
(1.72 KB)
馃搫
memclr_mipsx.s
(1.32 KB)
馃搫
memclr_plan9_386.s
(983 B)
馃搫
memclr_plan9_amd64.s
(511 B)
馃搫
memclr_ppc64x.s
(4.44 KB)
馃搫
memclr_riscv64.s
(1.71 KB)
馃搫
memclr_s390x.s
(1.96 KB)
馃搫
memclr_wasm.s
(485 B)
馃搫
memmove_386.s
(4.42 KB)
馃搫
memmove_amd64.s
(12.48 KB)
馃搫
memmove_arm.s
(5.9 KB)
馃搫
memmove_arm64.s
(5.96 KB)
馃搫
memmove_linux_amd64_test.go
(1.53 KB)
馃搫
memmove_loong64.s
(1.87 KB)
馃搫
memmove_mips64x.s
(1.83 KB)
馃搫
memmove_mipsx.s
(4.4 KB)
馃搫
memmove_plan9_386.s
(3.06 KB)
馃搫
memmove_plan9_amd64.s
(3.04 KB)
馃搫
memmove_ppc64x.s
(4.91 KB)
馃搫
memmove_riscv64.s
(5.46 KB)
馃搫
memmove_s390x.s
(2.92 KB)
馃搫
memmove_test.go
(21.23 KB)
馃搫
memmove_wasm.s
(479 B)
馃搧
metrics
馃搫
metrics.go
(26.01 KB)
馃搫
metrics_test.go
(42.46 KB)
馃搫
mfinal.go
(18.91 KB)
馃搫
mfinal_test.go
(5.57 KB)
馃搫
mfixalloc.go
(3.13 KB)
馃搫
mgc.go
(59.29 KB)
馃搫
mgclimit.go
(17.28 KB)
馃搫
mgclimit_test.go
(9.02 KB)
馃搫
mgcmark.go
(53.07 KB)
馃搫
mgcpacer.go
(55.36 KB)
馃搫
mgcpacer_test.go
(39.26 KB)
馃搫
mgcscavenge.go
(52.32 KB)
馃搫
mgcscavenge_test.go
(25.2 KB)
馃搫
mgcstack.go
(10.58 KB)
馃搫
mgcsweep.go
(32.26 KB)
馃搫
mgcwork.go
(12.89 KB)
馃搫
mheap.go
(72.64 KB)
馃搫
minmax.go
(1.46 KB)
馃搫
minmax_test.go
(3.31 KB)
馃搫
mkduff.go
(8.04 KB)
馃搫
mkfastlog2table.go
(3.08 KB)
馃搫
mklockrank.go
(9 KB)
馃搫
mkpreempt.go
(15.33 KB)
馃搫
mksizeclasses.go
(9.52 KB)
馃搫
mmap.go
(844 B)
馃搫
mpagealloc.go
(39.23 KB)
馃搫
mpagealloc_32bit.go
(4.56 KB)
馃搫
mpagealloc_64bit.go
(9.34 KB)
馃搫
mpagealloc_test.go
(32.59 KB)
馃搫
mpagecache.go
(5.59 KB)
馃搫
mpagecache_test.go
(10.79 KB)
馃搫
mpallocbits.go
(12.58 KB)
馃搫
mpallocbits_test.go
(13.69 KB)
馃搫
mprof.go
(47.4 KB)
馃搫
mranges.go
(14.46 KB)
馃搫
mranges_test.go
(5.68 KB)
馃搧
msan
馃搫
msan.go
(1.5 KB)
馃搫
msan0.go
(725 B)
馃搫
msan_amd64.s
(2.3 KB)
馃搫
msan_arm64.s
(1.98 KB)
馃搫
msan_loong64.s
(1.96 KB)
馃搫
msize_allocheaders.go
(1.32 KB)
馃搫
msize_noallocheaders.go
(915 B)
馃搫
mspanset.go
(13.12 KB)
馃搫
mstats.go
(33.81 KB)
馃搫
mwbbuf.go
(8.13 KB)
馃搫
nbpipe_pipe.go
(405 B)
馃搫
nbpipe_pipe2.go
(344 B)
馃搫
nbpipe_pipe_test.go
(706 B)
馃搫
nbpipe_test.go
(1.99 KB)
馃搫
net_plan9.go
(645 B)
馃搫
netpoll.go
(20.55 KB)
馃搫
netpoll_aix.go
(5.06 KB)
馃搫
netpoll_epoll.go
(4.4 KB)
馃搫
netpoll_fake.go
(664 B)
馃搫
netpoll_kqueue.go
(5.62 KB)
馃搫
netpoll_os_test.go
(520 B)
馃搫
netpoll_solaris.go
(11.2 KB)
馃搫
netpoll_stub.go
(1.48 KB)
馃搫
netpoll_wasip1.go
(6.08 KB)
馃搫
netpoll_windows.go
(4.01 KB)
馃搫
nonwindows_stub.go
(729 B)
馃搫
norace_linux_test.go
(915 B)
馃搫
norace_test.go
(983 B)
馃搫
numcpu_freebsd_test.go
(381 B)
馃搫
os2_aix.go
(20.88 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.94 KB)
馃搫
os3_solaris.go
(17.59 KB)
馃搫
os_aix.go
(8.89 KB)
馃搫
os_android.go
(463 B)
馃搫
os_darwin.go
(11.92 KB)
馃搫
os_darwin_arm64.go
(329 B)
馃搫
os_dragonfly.go
(7.14 KB)
馃搫
os_freebsd.go
(11.64 KB)
馃搫
os_freebsd2.go
(603 B)
馃搫
os_freebsd_amd64.go
(658 B)
馃搫
os_freebsd_arm.go
(1.45 KB)
馃搫
os_freebsd_arm64.go
(320 B)
馃搫
os_freebsd_noauxv.go
(241 B)
馃搫
os_freebsd_riscv64.go
(198 B)
馃搫
os_illumos.go
(3.93 KB)
馃搫
os_js.go
(767 B)
馃搫
os_linux.go
(25.71 KB)
馃搫
os_linux_arm.go
(1.51 KB)
馃搫
os_linux_arm64.go
(478 B)
馃搫
os_linux_be64.go
(806 B)
馃搫
os_linux_generic.go
(870 B)
馃搫
os_linux_loong64.go
(263 B)
馃搫
os_linux_mips64x.go
(996 B)
馃搫
os_linux_mipsx.go
(987 B)
馃搫
os_linux_noauxv.go
(337 B)
馃搫
os_linux_novdso.go
(347 B)
馃搫
os_linux_ppc64x.go
(526 B)
馃搫
os_linux_riscv64.go
(198 B)
馃搫
os_linux_s390x.go
(825 B)
馃搫
os_linux_x86.go
(234 B)
馃搫
os_netbsd.go
(10.12 KB)
馃搫
os_netbsd_386.go
(617 B)
馃搫
os_netbsd_amd64.go
(614 B)
馃搫
os_netbsd_arm.go
(1.07 KB)
馃搫
os_netbsd_arm64.go
(769 B)
馃搫
os_nonopenbsd.go
(437 B)
馃搫
os_only_solaris.go
(357 B)
馃搫
os_openbsd.go
(6.23 KB)
馃搫
os_openbsd_arm.go
(662 B)
馃搫
os_openbsd_arm64.go
(329 B)
馃搫
os_openbsd_libc.go
(1.49 KB)
馃搫
os_openbsd_mips64.go
(329 B)
馃搫
os_openbsd_syscall.go
(1.36 KB)
馃搫
os_openbsd_syscall1.go
(441 B)
馃搫
os_openbsd_syscall2.go
(2.51 KB)
馃搫
os_plan9.go
(10.18 KB)
馃搫
os_plan9_arm.go
(375 B)
馃搫
os_solaris.go
(6.62 KB)
馃搫
os_unix.go
(436 B)
馃搫
os_unix_nonlinux.go
(374 B)
馃搫
os_wasip1.go
(7 KB)
馃搫
os_wasm.go
(3.15 KB)
馃搫
os_windows.go
(41.39 KB)
馃搫
os_windows_arm.go
(511 B)
馃搫
os_windows_arm64.go
(339 B)
馃搫
pagetrace_off.go
(550 B)
馃搫
pagetrace_on.go
(10.36 KB)
馃搫
panic.go
(41.85 KB)
馃搫
panic32.go
(4.8 KB)
馃搫
panic_test.go
(1.71 KB)
馃搫
panicnil_test.go
(1.25 KB)
馃搫
pinner.go
(10.98 KB)
馃搫
pinner_test.go
(11.04 KB)
馃搫
plugin.go
(4.37 KB)
馃搧
pprof
馃搫
preempt.go
(15.03 KB)
馃搫
preempt_386.s
(824 B)
馃搫
preempt_amd64.s
(1.67 KB)
馃搫
preempt_arm.s
(1.49 KB)
馃搫
preempt_arm64.s
(1.97 KB)
馃搫
preempt_loong64.s
(2.41 KB)
馃搫
preempt_mips64x.s
(2.72 KB)
馃搫
preempt_mipsx.s
(2.68 KB)
馃搫
preempt_nonwindows.go
(290 B)
馃搫
preempt_ppc64x.s
(2.72 KB)
馃搫
preempt_riscv64.s
(2.26 KB)
馃搫
preempt_s390x.s
(1.01 KB)
馃搫
preempt_wasm.s
(176 B)
馃搫
print.go
(5.92 KB)
馃搫
proc.go
(204.28 KB)
馃搫
proc_runtime_test.go
(1.38 KB)
馃搫
proc_test.go
(25.85 KB)
馃搫
profbuf.go
(18.26 KB)
馃搫
profbuf_test.go
(8.54 KB)
馃搫
proflabel.go
(1.52 KB)
馃搧
race
馃搫
race.go
(18.81 KB)
馃搫
race0.go
(2.79 KB)
馃搫
race_amd64.s
(13.94 KB)
馃搫
race_arm64.s
(14.21 KB)
馃搫
race_ppc64le.s
(15.93 KB)
馃搫
race_s390x.s
(11.99 KB)
馃搫
rand.go
(7.11 KB)
馃搫
rand_test.go
(1.95 KB)
馃搫
rdebug.go
(550 B)
馃搫
retry.go
(760 B)
馃搫
rt0_aix_ppc64.s
(4.09 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
(1.69 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
(1.88 KB)
馃搫
rt0_freebsd_riscv64.s
(2.72 KB)
馃搫
rt0_illumos_amd64.s
(311 B)
馃搫
rt0_ios_amd64.s
(425 B)
馃搫
rt0_ios_arm64.s
(425 B)
馃搫
rt0_js_wasm.s
(1.53 KB)
馃搫
rt0_linux_386.s
(450 B)
馃搫
rt0_linux_amd64.s
(307 B)
馃搫
rt0_linux_arm.s
(1007 B)
馃搫
rt0_linux_arm64.s
(1.81 KB)
馃搫
rt0_linux_loong64.s
(2.01 KB)
馃搫
rt0_linux_mips64x.s
(1014 B)
馃搫
rt0_linux_mipsx.s
(797 B)
馃搫
rt0_linux_ppc64.s
(847 B)
馃搫
rt0_linux_ppc64le.s
(2.89 KB)
馃搫
rt0_linux_riscv64.s
(2.65 KB)
馃搫
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
(1.8 KB)
馃搫
rt0_openbsd_386.s
(454 B)
馃搫
rt0_openbsd_amd64.s
(311 B)
馃搫
rt0_openbsd_arm.s
(298 B)
馃搫
rt0_openbsd_arm64.s
(1.96 KB)
馃搫
rt0_openbsd_mips64.s
(976 B)
馃搫
rt0_openbsd_ppc64.s
(370 B)
馃搫
rt0_openbsd_riscv64.s
(372 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_wasip1_wasm.s
(387 B)
馃搫
rt0_windows_386.s
(1.28 KB)
馃搫
rt0_windows_amd64.s
(1.14 KB)
馃搫
rt0_windows_arm.s
(386 B)
馃搫
rt0_windows_arm64.s
(733 B)
馃搫
runtime-gdb.py
(15.44 KB)
馃搫
runtime-gdb_test.go
(24.04 KB)
馃搫
runtime-gdb_unix_test.go
(9.4 KB)
馃搫
runtime-lldb_test.go
(4.95 KB)
馃搫
runtime-seh_windows_test.go
(4.7 KB)
馃搫
runtime.go
(7.1 KB)
馃搫
runtime1.go
(16.66 KB)
馃搫
runtime2.go
(46.16 KB)
馃搫
runtime_boring.go
(606 B)
馃搫
runtime_linux_test.go
(1.77 KB)
馃搫
runtime_mmap_test.go
(1.77 KB)
馃搫
runtime_test.go
(11.81 KB)
馃搫
runtime_unix_test.go
(1.22 KB)
馃搫
rwmutex.go
(5 KB)
馃搫
rwmutex_test.go
(4.21 KB)
馃搫
security_aix.go
(449 B)
馃搫
security_issetugid.go
(502 B)
馃搫
security_linux.go
(335 B)
馃搫
security_nonunix.go
(256 B)
馃搫
security_test.go
(4.09 KB)
馃搫
security_unix.go
(818 B)
馃搫
select.go
(14.82 KB)
馃搫
sema.go
(18.43 KB)
馃搫
sema_test.go
(4.21 KB)
馃搫
semasleep_test.go
(3.46 KB)
馃搫
sigaction.go
(489 B)
馃搫
signal_386.go
(1.72 KB)
馃搫
signal_aix_ppc64.go
(3.54 KB)
馃搫
signal_amd64.go
(2.73 KB)
馃搫
signal_arm.go
(2.54 KB)
馃搫
signal_arm64.go
(3.83 KB)
馃搫
signal_darwin.go
(2.13 KB)
馃搫
signal_darwin_amd64.go
(4 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.24 KB)
馃搫
signal_freebsd_riscv64.go
(3.08 KB)
馃搫
signal_linux_386.go
(1.59 KB)
馃搫
signal_linux_amd64.go
(2.05 KB)
馃搫
signal_linux_arm.go
(2.12 KB)
馃搫
signal_linux_arm64.go
(2.95 KB)
馃搫
signal_linux_loong64.go
(3.22 KB)
馃搫
signal_linux_mips64x.go
(3.35 KB)
馃搫
signal_linux_mipsx.go
(3.67 KB)
馃搫
signal_linux_ppc64x.go
(3.5 KB)
馃搫
signal_linux_riscv64.go
(2.92 KB)
馃搫
signal_linux_s390x.go
(4.49 KB)
馃搫
signal_loong64.go
(3.01 KB)
馃搫
signal_mips64x.go
(3.18 KB)
馃搫
signal_mipsx.go
(3.06 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.39 KB)
馃搫
signal_openbsd_mips64.go
(3.28 KB)
馃搫
signal_openbsd_ppc64.go
(3.53 KB)
馃搫
signal_openbsd_riscv64.go
(3.12 KB)
馃搫
signal_plan9.go
(1.93 KB)
馃搫
signal_ppc64x.go
(3.71 KB)
馃搫
signal_riscv64.go
(2.91 KB)
馃搫
signal_solaris.go
(4.5 KB)
馃搫
signal_solaris_amd64.go
(2.47 KB)
馃搫
signal_unix.go
(44.11 KB)
馃搫
signal_windows.go
(14.48 KB)
馃搫
signal_windows_test.go
(8.98 KB)
馃搫
sigqueue.go
(7.62 KB)
馃搫
sigqueue_note.go
(648 B)
馃搫
sigqueue_plan9.go
(3.25 KB)
馃搫
sigtab_aix.go
(11.3 KB)
馃搫
sigtab_linux_generic.go
(3.52 KB)
馃搫
sigtab_linux_mipsx.go
(5.95 KB)
馃搫
sizeclasses.go
(9.17 KB)
馃搫
sizeof_test.go
(1003 B)
馃搫
slice.go
(11.23 KB)
馃搫
slice_test.go
(10.32 KB)
馃搫
softfloat64.go
(11.54 KB)
馃搫
softfloat64_test.go
(4.04 KB)
馃搫
stack.go
(40.02 KB)
馃搫
stack_test.go
(23.14 KB)
馃搫
start_line_amd64_test.go
(647 B)
馃搫
start_line_test.go
(2.58 KB)
馃搫
stkframe.go
(9.88 KB)
馃搫
string.go
(13.35 KB)
馃搫
string_test.go
(13.33 KB)
馃搫
stubs.go
(17.39 KB)
馃搫
stubs2.go
(1.15 KB)
馃搫
stubs3.go
(324 B)
馃搫
stubs_386.go
(708 B)
馃搫
stubs_amd64.go
(1.38 KB)
馃搫
stubs_arm.go
(689 B)
馃搫
stubs_arm64.go
(700 B)
馃搫
stubs_linux.go
(650 B)
馃搫
stubs_loong64.go
(638 B)
馃搫
stubs_mips64x.go
(522 B)
馃搫
stubs_mipsx.go
(441 B)
馃搫
stubs_nonlinux.go
(298 B)
馃搫
stubs_ppc64.go
(302 B)
馃搫
stubs_ppc64x.go
(688 B)
馃搫
stubs_riscv64.go
(695 B)
馃搫
stubs_s390x.go
(414 B)
馃搫
symtab.go
(34.76 KB)
馃搫
symtab_test.go
(7.48 KB)
馃搫
symtabinl.go
(3.81 KB)
馃搫
symtabinl_test.go
(2.97 KB)
馃搫
sys_aix_ppc64.s
(7.42 KB)
馃搫
sys_arm.go
(521 B)
馃搫
sys_arm64.go
(469 B)
馃搫
sys_darwin.go
(22.56 KB)
馃搫
sys_darwin_amd64.s
(19.65 KB)
馃搫
sys_darwin_arm64.go
(1.74 KB)
馃搫
sys_darwin_arm64.s
(18.28 KB)
馃搫
sys_dragonfly_amd64.s
(8.31 KB)
馃搫
sys_freebsd_386.s
(9.41 KB)
馃搫
sys_freebsd_amd64.s
(12.67 KB)
馃搫
sys_freebsd_arm.s
(10.38 KB)
馃搫
sys_freebsd_arm64.s
(9.49 KB)
馃搫
sys_freebsd_riscv64.s
(8.92 KB)
馃搫
sys_libc.go
(1.84 KB)
馃搫
sys_linux_386.s
(17.89 KB)
馃搫
sys_linux_amd64.s
(15.74 KB)
馃搫
sys_linux_arm.s
(13.5 KB)
馃搫
sys_linux_arm64.s
(16.71 KB)
馃搫
sys_linux_loong64.s
(14.16 KB)
馃搫
sys_linux_mips64x.s
(11.96 KB)
馃搫
sys_linux_mipsx.s
(9.69 KB)
馃搫
sys_linux_ppc64x.s
(18.09 KB)
馃搫
sys_linux_riscv64.s
(11.48 KB)
馃搫
sys_linux_s390x.s
(12.49 KB)
馃搫
sys_loong64.go
(489 B)
馃搫
sys_mips64x.go
(500 B)
馃搫
sys_mipsx.go
(496 B)
馃搫
sys_netbsd_386.s
(9.61 KB)
馃搫
sys_netbsd_amd64.s
(9.78 KB)
馃搫
sys_netbsd_arm.s
(10.58 KB)
馃搫
sys_netbsd_arm64.s
(9.47 KB)
馃搫
sys_nonppc64x.go
(245 B)
馃搫
sys_openbsd.go
(2.59 KB)
馃搫
sys_openbsd1.go
(1.23 KB)
馃搫
sys_openbsd2.go
(8.67 KB)
馃搫
sys_openbsd3.go
(3.37 KB)
馃搫
sys_openbsd_386.s
(20.4 KB)
馃搫
sys_openbsd_amd64.s
(15.54 KB)
馃搫
sys_openbsd_arm.s
(18.46 KB)
馃搫
sys_openbsd_arm64.s
(15.05 KB)
馃搫
sys_openbsd_mips64.s
(8.81 KB)
馃搫
sys_openbsd_ppc64.s
(15.3 KB)
馃搫
sys_openbsd_riscv64.s
(16.8 KB)
馃搫
sys_plan9_386.s
(4.48 KB)
馃搫
sys_plan9_amd64.s
(4.56 KB)
馃搫
sys_plan9_arm.s
(7.03 KB)
馃搫
sys_ppc64x.go
(532 B)
馃搫
sys_riscv64.go
(469 B)
馃搫
sys_s390x.go
(469 B)
馃搫
sys_solaris_amd64.s
(6.42 KB)
馃搫
sys_wasm.go
(758 B)
馃搫
sys_wasm.s
(1.43 KB)
馃搫
sys_windows_386.s
(6.46 KB)
馃搫
sys_windows_amd64.s
(8.41 KB)
馃搫
sys_windows_arm.s
(7.72 KB)
馃搫
sys_windows_arm64.s
(6.8 KB)
馃搫
sys_x86.go
(552 B)
馃搫
syscall2_solaris.go
(1.85 KB)
馃搫
syscall_aix.go
(6.33 KB)
馃搫
syscall_solaris.go
(8.38 KB)
馃搫
syscall_unix_test.go
(635 B)
馃搫
syscall_windows.go
(16.57 KB)
馃搫
syscall_windows_test.go
(32.45 KB)
馃搫
tagptr.go
(496 B)
馃搫
tagptr_32bit.go
(927 B)
馃搫
tagptr_64bit.go
(3.23 KB)
馃搫
test_amd64.go
(196 B)
馃搫
test_amd64.s
(316 B)
馃搫
test_stubs.go
(218 B)
馃搧
testdata
馃搫
textflag.h
(1.47 KB)
馃搫
time.go
(30.57 KB)
馃搫
time_fake.go
(2.5 KB)
馃搫
time_linux_amd64.s
(2.02 KB)
馃搫
time_nofake.go
(709 B)
馃搫
time_test.go
(2.04 KB)
馃搫
time_windows.h
(753 B)
馃搫
time_windows_386.s
(1.71 KB)
馃搫
time_windows_amd64.s
(786 B)
馃搫
time_windows_arm.s
(1.97 KB)
馃搫
time_windows_arm64.s
(906 B)
馃搫
timeasm.go
(418 B)
馃搫
timestub.go
(532 B)
馃搫
timestub2.go
(363 B)
馃搫
tls_arm.s
(3.45 KB)
馃搫
tls_arm64.h
(1.1 KB)
馃搫
tls_arm64.s
(1.2 KB)
馃搫
tls_loong64.s
(589 B)
馃搫
tls_mips64x.s
(733 B)
馃搫
tls_mipsx.s
(710 B)
馃搫
tls_ppc64x.s
(1.52 KB)
馃搫
tls_riscv64.s
(615 B)
馃搫
tls_s390x.s
(1.55 KB)
馃搫
tls_stub.go
(260 B)
馃搫
tls_windows_amd64.go
(294 B)
馃搧
trace
馃搫
trace.go
(62.76 KB)
馃搫
trace2.go
(33.81 KB)
馃搫
trace2buf.go
(6.58 KB)
馃搫
trace2cpu.go
(8.87 KB)
馃搫
trace2event.go
(8.39 KB)
馃搫
trace2map.go
(4.36 KB)
馃搫
trace2region.go
(1.68 KB)
馃搫
trace2runtime.go
(24.2 KB)
馃搫
trace2stack.go
(9.45 KB)
馃搫
trace2status.go
(7.24 KB)
馃搫
trace2string.go
(2.59 KB)
馃搫
trace2time.go
(3.21 KB)
馃搫
trace_cgo_test.go
(4.47 KB)
馃搫
traceback.go
(54.61 KB)
馃搫
traceback_test.go
(22.95 KB)
馃搫
tracebackx_test.go
(509 B)
馃搫
type.go
(12.1 KB)
馃搫
typekind.go
(743 B)
馃搫
unsafe.go
(2.97 KB)
馃搫
unsafepoint_test.go
(3.27 KB)
馃搫
utf8.go
(3.39 KB)
馃搫
vdso_elf32.go
(2.76 KB)
馃搫
vdso_elf64.go
(2.84 KB)
馃搫
vdso_freebsd.go
(2.44 KB)
馃搫
vdso_freebsd_arm.go
(454 B)
馃搫
vdso_freebsd_arm64.go
(454 B)
馃搫
vdso_freebsd_riscv64.go
(429 B)
馃搫
vdso_freebsd_x86.go
(1.86 KB)
馃搫
vdso_in_none.go
(443 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_loong64.go
(793 B)
馃搫
vdso_linux_mips64x.go
(850 B)
馃搫
vdso_linux_ppc64x.go
(672 B)
馃搫
vdso_linux_riscv64.go
(666 B)
馃搫
vdso_linux_s390x.go
(659 B)
馃搫
vdso_test.go
(3.71 KB)
馃搫
vlop_386.s
(2.02 KB)
馃搫
vlop_arm.s
(7.06 KB)
馃搫
vlop_arm_test.go
(3.75 KB)
馃搫
vlrt.go
(6.71 KB)
馃搫
wincallback.go
(3.45 KB)
馃搫
write_err.go
(291 B)
馃搫
write_err_android.go
(4.65 KB)
馃搫
zcallback_windows.go
(155 B)
馃搫
zcallback_windows.s
(63.06 KB)
馃搫
zcallback_windows_arm.s
(89.32 KB)
馃搫
zcallback_windows_arm64.s
(89.32 KB)
Editing: sys_windows_arm.s
// Copyright 2018 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. #include "go_asm.h" #include "go_tls.h" #include "textflag.h" #include "time_windows.h" // Note: For system ABI, R0-R3 are args, R4-R11 are callee-save. TEXT runtime路asmstdcall_trampoline<ABIInternal>(SB),NOSPLIT,$0 B runtime路asmstdcall(SB) // void runtime路asmstdcall(void *c); TEXT runtime路asmstdcall(SB),NOSPLIT|NOFRAME,$0 MOVM.DB.W [R4, R5, R14], (R13) // push {r4, r5, lr} MOVW R0, R4 // put libcall * in r4 MOVW R13, R5 // save stack pointer in r5 // SetLastError(0) MOVW $0, R0 MRC 15, 0, R1, C13, C0, 2 MOVW R0, 0x34(R1) MOVW 8(R4), R12 // libcall->args // Do we have more than 4 arguments? MOVW 4(R4), R0 // libcall->n SUB.S $4, R0, R2 BLE loadregs // Reserve stack space for remaining args SUB R2<<2, R13 BIC $0x7, R13 // alignment for ABI // R0: count of arguments // R1: // R2: loop counter, from 0 to (n-4) // R3: scratch // R4: pointer to libcall struct // R12: libcall->args MOVW $0, R2 stackargs: ADD $4, R2, R3 // r3 = args[4 + i] MOVW R3<<2(R12), R3 MOVW R3, R2<<2(R13) // stack[i] = r3 ADD $1, R2 // i++ SUB $4, R0, R3 // while (i < (n - 4)) CMP R3, R2 BLT stackargs loadregs: CMP $3, R0 MOVW.GT 12(R12), R3 CMP $2, R0 MOVW.GT 8(R12), R2 CMP $1, R0 MOVW.GT 4(R12), R1 CMP $0, R0 MOVW.GT 0(R12), R0 BIC $0x7, R13 // alignment for ABI MOVW 0(R4), R12 // branch to libcall->fn BL (R12) MOVW R5, R13 // free stack space MOVW R0, 12(R4) // save return value to libcall->r1 MOVW R1, 16(R4) // GetLastError MRC 15, 0, R1, C13, C0, 2 MOVW 0x34(R1), R0 MOVW R0, 20(R4) // store in libcall->err MOVM.IA.W (R13), [R4, R5, R15] TEXT runtime路getlasterror(SB),NOSPLIT,$0 MRC 15, 0, R0, C13, C0, 2 MOVW 0x34(R0), R0 MOVW R0, ret+0(FP) RET // Called by Windows as a Vectored Exception Handler (VEH). // R0 is pointer to struct containing // exception record and context pointers. // R1 is the kind of sigtramp function. // Return value of sigtrampgo is stored in R0. TEXT sigtramp<>(SB),NOSPLIT|NOFRAME,$0 MOVM.DB.W [R4-R11, R14], (R13) // push {r4-r11, lr} (SP-=40) SUB $(16), R13 // reserve space for parameters/retval to go call MOVW R0, R6 // Save param0 MOVW R1, R7 // Save param1 BL runtime路load_g(SB) // Clobbers R0 MOVW $0, R4 MOVW R4, 0(R13) // No saved link register. MOVW R6, 4(R13) // Move arg0 into position MOVW R7, 8(R13) // Move arg1 into position BL runtime路sigtrampgo(SB) MOVW 12(R13), R0 // Fetch return value from stack ADD $(16), R13 // free locals MOVM.IA.W (R13), [R4-R11, R14] // pop {r4-r11, lr} B (R14) // return // Trampoline to resume execution from exception handler. // This is part of the control flow guard workaround. // It switches stacks and jumps to the continuation address. // R0 and R1 are set above at the end of sigtrampgo // in the context that starts executing at sigresume. TEXT runtime路sigresume(SB),NOSPLIT|NOFRAME,$0 // Important: do not smash LR, // which is set to a live value when handling // a signal by pushing a call to sigpanic onto the stack. MOVW R0, R13 B (R1) TEXT runtime路exceptiontramp(SB),NOSPLIT|NOFRAME,$0 MOVW $const_callbackVEH, R1 B sigtramp<>(SB) TEXT runtime路firstcontinuetramp(SB),NOSPLIT|NOFRAME,$0 MOVW $const_callbackFirstVCH, R1 B sigtramp<>(SB) TEXT runtime路lastcontinuetramp(SB),NOSPLIT|NOFRAME,$0 MOVW $const_callbackLastVCH, R1 B sigtramp<>(SB) TEXT runtime路callbackasm1(SB),NOSPLIT|NOFRAME,$0 // On entry, the trampoline in zcallback_windows_arm.s left // the callback index in R12 (which is volatile in the C ABI). // Push callback register arguments r0-r3. We do this first so // they're contiguous with stack arguments. MOVM.DB.W [R0-R3], (R13) // Push C callee-save registers r4-r11 and lr. MOVM.DB.W [R4-R11, R14], (R13) SUB $(16 + callbackArgs__size), R13 // space for locals // Create a struct callbackArgs on our stack. MOVW R12, (16+callbackArgs_index)(R13) // callback index MOVW $(16+callbackArgs__size+4*9)(R13), R0 MOVW R0, (16+callbackArgs_args)(R13) // address of args vector MOVW $0, R0 MOVW R0, (16+callbackArgs_result)(R13) // result // Prepare for entry to Go. BL runtime路load_g(SB) // Call cgocallback, which will call callbackWrap(frame). MOVW $0, R0 MOVW R0, 12(R13) // context MOVW $16(R13), R1 // R1 = &callbackArgs{...} MOVW R1, 8(R13) // frame (address of callbackArgs) MOVW $路callbackWrap(SB), R1 MOVW R1, 4(R13) // PC of function to call BL runtime路cgocallback(SB) // Get callback result. MOVW (16+callbackArgs_result)(R13), R0 ADD $(16 + callbackArgs__size), R13 // free locals MOVM.IA.W (R13), [R4-R11, R12] // pop {r4-r11, lr=>r12} ADD $(4*4), R13 // skip r0-r3 B (R12) // return // uint32 tstart_stdcall(M *newm); TEXT runtime路tstart_stdcall(SB),NOSPLIT|NOFRAME,$0 MOVM.DB.W [R4-R11, R14], (R13) // push {r4-r11, lr} MOVW m_g0(R0), g MOVW R0, g_m(g) BL runtime路save_g(SB) // Layout new m scheduler stack on os stack. MOVW R13, R0 MOVW R0, g_stack+stack_hi(g) SUB $(64*1024), R0 MOVW R0, (g_stack+stack_lo)(g) MOVW R0, g_stackguard0(g) MOVW R0, g_stackguard1(g) BL runtime路emptyfunc(SB) // fault if stack check is wrong BL runtime路mstart(SB) // Exit the thread. MOVW $0, R0 MOVM.IA.W (R13), [R4-R11, R15] // pop {r4-r11, pc} TEXT 路publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0 B runtime路armPublicationBarrier(SB) // never called (this is a GOARM=7 platform) TEXT runtime路read_tls_fallback(SB),NOSPLIT,$0 MOVW $0xabcd, R0 MOVW R0, (R0) RET TEXT runtime路nanotime1(SB),NOSPLIT,$0-8 loop: MOVW time_hi1(R3), R1 DMB MB_ISH MOVW time_lo(R3), R0 DMB MB_ISH MOVW time_hi2(R3), R2 CMP R1, R2 BNE loop // wintime = R1:R0, multiply by 100 MOVW $100, R2 MULLU R0, R2, (R4, R3) // R4:R3 = R1:R0 * R2 MULA R1, R2, R4, R4 // wintime*100 = R4:R3 MOVW R3, ret_lo+0(FP) MOVW R4, ret_hi+4(FP) RET // save_g saves the g register (R10) into thread local memory // so that we can call externally compiled // ARM code that will overwrite those registers. // NOTE: runtime.gogo assumes that R1 is preserved by this function. // runtime.mcall assumes this function only clobbers R0 and R11. // Returns with g in R0. // Save the value in the _TEB->TlsSlots array. // Effectively implements TlsSetValue(). // tls_g stores the TLS slot allocated TlsAlloc(). TEXT runtime路save_g(SB),NOSPLIT,$0 MRC 15, 0, R0, C13, C0, 2 ADD $0xe10, R0 MOVW $runtime路tls_g(SB), R11 MOVW (R11), R11 MOVW g, R11<<2(R0) MOVW g, R0 // preserve R0 across call to setg<> RET // load_g loads the g register from thread-local memory, // for use after calling externally compiled // ARM code that overwrote those registers. // Get the value from the _TEB->TlsSlots array. // Effectively implements TlsGetValue(). TEXT runtime路load_g(SB),NOSPLIT,$0 MRC 15, 0, R0, C13, C0, 2 ADD $0xe10, R0 MOVW $runtime路tls_g(SB), g MOVW (g), g MOVW g<<2(R0), g RET // This is called from rt0_go, which runs on the system stack // using the initial stack allocated by the OS. // It calls back into standard C using the BL below. // To do that, the stack pointer must be 8-byte-aligned. TEXT runtime路_initcgo(SB),NOSPLIT|NOFRAME,$0 MOVM.DB.W [R4, R14], (R13) // push {r4, lr} // Ensure stack is 8-byte aligned before calling C code MOVW R13, R4 BIC $0x7, R13 // Allocate a TLS slot to hold g across calls to external code MOVW $runtime路_TlsAlloc(SB), R0 MOVW (R0), R0 BL (R0) // Assert that slot is less than 64 so we can use _TEB->TlsSlots CMP $64, R0 MOVW $runtime路abort(SB), R1 BL.GE (R1) // Save Slot into tls_g MOVW $runtime路tls_g(SB), R1 MOVW R0, (R1) MOVW R4, R13 MOVM.IA.W (R13), [R4, R15] // pop {r4, pc} // Holds the TLS Slot, which was allocated by TlsAlloc() GLOBL runtime路tls_g+0(SB), NOPTR, $4
Upload File
Create Folder