| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // Copyright 2021 Peter Mattis.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- // implied. See the License for the specific language governing
- // permissions and limitations under the License. See the AUTHORS file
- // for names of contributors.
- // Assembly to mimic runtime.getg.
- //go:build (386 || amd64 || amd64p32 || arm || arm64 || s390x) && gc && go1.5
- // +build 386 amd64 amd64p32 arm arm64 s390x
- // +build gc
- // +build go1.5
- #include "textflag.h"
- // func getg() *g
- TEXT ·getg(SB),NOSPLIT,$0-8
- #ifdef GOARCH_386
- MOVL (TLS), AX
- MOVL AX, ret+0(FP)
- #endif
- #ifdef GOARCH_amd64
- MOVQ (TLS), AX
- MOVQ AX, ret+0(FP)
- #endif
- #ifdef GOARCH_arm
- MOVW g, ret+0(FP)
- #endif
- #ifdef GOARCH_arm64
- MOVD g, ret+0(FP)
- #endif
- #ifdef GOARCH_s390x
- MOVD g, ret+0(FP)
- #endif
- RET
|