Commit efc86492 by Ian Lance Taylor

libgo: Solaris and x/sys/cpu compatibility fixes

    
    Restore Solaris compatibility fixes lost when internal/x/net/lif moved
    to golang.org/x/net/lif.  Also fix the Makefile for x/net/lif and
    x/net/route.
    
    Change x/sys/cpu to get the cache line size from goarch.sh as the
    gofrontend version of internal/cpu does.
    
    Partially based on work by Rainer Orth.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194438

From-SVN: r275611
parent 4d7bfeec
2f6dd921a21351e94f55a5365a3176af563b5945 bf4832d604e7522dee78fca76de220b62a131d54
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -510,6 +510,14 @@ s-cpu: Makefile ...@@ -510,6 +510,14 @@ s-cpu: Makefile
$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go $(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
$(STAMP) $@ $(STAMP) $@
gcpugen.go: s-gcpu; @true
s-gcpu: Makefile
rm -f gcpugen.go.tmp
echo "package cpu" > gcpugen.go.tmp
echo "const cacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> gcpugen.go.tmp
$(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
$(STAMP) $@
objabi.go: s-objabi; @true objabi.go: s-objabi; @true
s-objabi: Makefile s-objabi: Makefile
rm -f objabi.go.tmp rm -f objabi.go.tmp
...@@ -773,7 +781,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \ ...@@ -773,7 +781,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \
BUILDDEPS = \ BUILDDEPS = \
$(MKDIR_P) $(@D); \ $(MKDIR_P) $(@D); \
dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \ dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \
files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst /,_,$(subst .lo.dep,,$@)))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(subst .lo.dep,,$@))))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
$(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \ $(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \
if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \ if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \
rm -f `echo $@ | sed -e 's/\.dep$$//'`; \ rm -f `echo $@ | sed -e 's/\.dep$$//'`; \
...@@ -804,7 +812,7 @@ GOBENCH = ...@@ -804,7 +812,7 @@ GOBENCH =
CHECK = \ CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \ export GC; \
GOLIBS="$(extra_check_libs_$(subst /,_,$(@D))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \ export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \ RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \ export RUNTESTFLAGS; \
...@@ -818,7 +826,7 @@ CHECK = \ ...@@ -818,7 +826,7 @@ CHECK = \
export LD_LIBRARY_PATH; \ export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \ $(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \ rm -f $@-testsum $@-testlog; \
files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \
if test "$(USE_DEJAGNU)" = "yes"; then \ if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
elif test "$(GOBENCH)" != ""; then \ elif test "$(GOBENCH)" != ""; then \
...@@ -951,6 +959,9 @@ runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys) ...@@ -951,6 +959,9 @@ runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys)
extra_go_files_internal_cpu = cpugen.go extra_go_files_internal_cpu = cpugen.go
internal/cpu.lo.dep: $(extra_go_files_internal_cpu) internal/cpu.lo.dep: $(extra_go_files_internal_cpu)
extra_go_files_golang_org_x_sys_cpu = gcpugen.go
golang.org/x/sys/cpu.lo.dep: $(extra_go_files_golang_org_x_sys_cpu)
extra_go_files_internal_goroot = zstdpkglist.go extra_go_files_internal_goroot = zstdpkglist.go
internal/goroot.lo.dep: $(extra_go_files_internal_goroot) internal/goroot.lo.dep: $(extra_go_files_internal_goroot)
...@@ -1047,34 +1058,27 @@ endif ...@@ -1047,34 +1058,27 @@ endif
if LIBGO_IS_BSD if LIBGO_IS_BSD
# Build internal/x/net/route only on BSD systems. # Build golang.org/x/net/route only on BSD systems.
$(eval $(call PACKAGE_template,internal/x/net/route)) $(eval $(call PACKAGE_template,golang.org/x/net/route))
golangorg_x_net_route_lo = \ golangorg_x_net_route_lo = \
golang.org/net/route.lo golang.org/net/route.lo
golangorg_x_net_route_check = \
golang.org/x/net/route/check
endif endif
if LIBGO_IS_SOLARIS if LIBGO_IS_SOLARIS
# Build internal/x/net/lif only on Solaris systems. # Build golang.org/x/net/lif only on Solaris systems.
$(eval $(call PACKAGE_template,internal/x/net/lif)) $(eval $(call PACKAGE_template,golang.org/x/net/lif))
golangorg_x_net_lif_lo = \ golangorg_x_net_lif_lo = \
golang.org/x/net/lif.lo golang.org/x/net/lif.lo
golangorg_x_net_lif_check = \
golang.org/x/net/lif/check
endif endif
TPACKAGES = $(shell cat $(srcdir)/check-packages.txt) TEST_PACKAGES = $(addsuffix /check,$(shell cat $(srcdir)/check-packages.txt))
TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
$(golangorg_x_net_lif_check) \
$(golangorg_x_net_route_check)
check: check-tail check: check-tail
check-recursive: check-head check-recursive: check-head
......
...@@ -973,7 +973,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \ ...@@ -973,7 +973,7 @@ GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \
BUILDDEPS = \ BUILDDEPS = \
$(MKDIR_P) $(@D); \ $(MKDIR_P) $(@D); \
dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \ dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \
files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst /,_,$(subst .lo.dep,,$@)))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(subst .lo.dep,,$@))))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
$(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \ $(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \
if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \ if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \
rm -f `echo $@ | sed -e 's/\.dep$$//'`; \ rm -f `echo $@ | sed -e 's/\.dep$$//'`; \
...@@ -1006,7 +1006,7 @@ GOBENCH = ...@@ -1006,7 +1006,7 @@ GOBENCH =
CHECK = \ CHECK = \
GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
export GC; \ export GC; \
GOLIBS="$(extra_check_libs_$(subst /,_,$(@D))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \ GOLIBS="$(extra_check_libs_$(subst .,_,$(subst /,_,$(@D)))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
export GOLIBS; \ export GOLIBS; \
RUNTESTFLAGS="$(RUNTESTFLAGS)"; \ RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
export RUNTESTFLAGS; \ export RUNTESTFLAGS; \
...@@ -1020,7 +1020,7 @@ CHECK = \ ...@@ -1020,7 +1020,7 @@ CHECK = \
export LD_LIBRARY_PATH; \ export LD_LIBRARY_PATH; \
$(MKDIR_P) $(@D); \ $(MKDIR_P) $(@D); \
rm -f $@-testsum $@-testlog; \ rm -f $@-testsum $@-testlog; \
files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \
if test "$(USE_DEJAGNU)" = "yes"; then \ if test "$(USE_DEJAGNU)" = "yes"; then \
$(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
elif test "$(GOBENCH)" != ""; then \ elif test "$(GOBENCH)" != ""; then \
...@@ -1091,6 +1091,7 @@ runtime_internal_sys_lo_check_GOCFLAGS = -fgo-compiling-runtime ...@@ -1091,6 +1091,7 @@ runtime_internal_sys_lo_check_GOCFLAGS = -fgo-compiling-runtime
runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline
extra_go_files_runtime_internal_sys = version.go extra_go_files_runtime_internal_sys = version.go
extra_go_files_internal_cpu = cpugen.go extra_go_files_internal_cpu = cpugen.go
extra_go_files_golang_org_x_sys_cpu = gcpugen.go
extra_go_files_internal_goroot = zstdpkglist.go extra_go_files_internal_goroot = zstdpkglist.go
extra_go_files_go_types = gccgosizes.go extra_go_files_go_types = gccgosizes.go
extra_go_files_cmd_internal_objabi = objabi.go extra_go_files_cmd_internal_objabi = objabi.go
...@@ -1121,20 +1122,10 @@ extra_check_libs_cmd_vet_internal_cfg = $(abs_builddir)/libgotool.a ...@@ -1121,20 +1122,10 @@ extra_check_libs_cmd_vet_internal_cfg = $(abs_builddir)/libgotool.a
@LIBGO_IS_BSD_TRUE@golangorg_x_net_route_lo = \ @LIBGO_IS_BSD_TRUE@golangorg_x_net_route_lo = \
@LIBGO_IS_BSD_TRUE@ golang.org/net/route.lo @LIBGO_IS_BSD_TRUE@ golang.org/net/route.lo
@LIBGO_IS_BSD_TRUE@golangorg_x_net_route_check = \
@LIBGO_IS_BSD_TRUE@ golang.org/x/net/route/check
@LIBGO_IS_SOLARIS_TRUE@golangorg_x_net_lif_lo = \ @LIBGO_IS_SOLARIS_TRUE@golangorg_x_net_lif_lo = \
@LIBGO_IS_SOLARIS_TRUE@ golang.org/x/net/lif.lo @LIBGO_IS_SOLARIS_TRUE@ golang.org/x/net/lif.lo
@LIBGO_IS_SOLARIS_TRUE@golangorg_x_net_lif_check = \ TEST_PACKAGES = $(addsuffix /check,$(shell cat $(srcdir)/check-packages.txt))
@LIBGO_IS_SOLARIS_TRUE@ golang.org/x/net/lif/check
TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
$(golangorg_x_net_lif_check) \
$(golangorg_x_net_route_check)
MOSTLYCLEANFILES = \ MOSTLYCLEANFILES = \
s-runtime_sysinfo s-sigtab s-runtime-inc s-zstdpkglist \ s-runtime_sysinfo s-sigtab s-runtime-inc s-zstdpkglist \
s-libcalls s-libcalls-list s-syscall_arch s-gen-sysinfo s-sysinfo \ s-libcalls s-libcalls-list s-syscall_arch s-gen-sysinfo s-sysinfo \
...@@ -2629,6 +2620,14 @@ s-cpu: Makefile ...@@ -2629,6 +2620,14 @@ s-cpu: Makefile
$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go $(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
$(STAMP) $@ $(STAMP) $@
gcpugen.go: s-gcpu; @true
s-gcpu: Makefile
rm -f gcpugen.go.tmp
echo "package cpu" > gcpugen.go.tmp
echo "const cacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> gcpugen.go.tmp
$(SHELL) $(srcdir)/mvifdiff.sh gcpugen.go.tmp gcpugen.go
$(STAMP) $@
objabi.go: s-objabi; @true objabi.go: s-objabi; @true
s-objabi: Makefile s-objabi: Makefile
rm -f objabi.go.tmp rm -f objabi.go.tmp
...@@ -2830,6 +2829,7 @@ runtime.lo.dep: $(extra_go_files_runtime) ...@@ -2830,6 +2829,7 @@ runtime.lo.dep: $(extra_go_files_runtime)
syscall.lo.dep: $(extra_go_files_syscall) syscall.lo.dep: $(extra_go_files_syscall)
runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys) runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys)
internal/cpu.lo.dep: $(extra_go_files_internal_cpu) internal/cpu.lo.dep: $(extra_go_files_internal_cpu)
golang.org/x/sys/cpu.lo.dep: $(extra_go_files_golang_org_x_sys_cpu)
internal/goroot.lo.dep: $(extra_go_files_internal_goroot) internal/goroot.lo.dep: $(extra_go_files_internal_goroot)
go/types.lo.dep: $(extra_go_files_go_types) go/types.lo.dep: $(extra_go_files_go_types)
cmd/internal/objabi.lo.dep: $(extra_go_files_cmd_internal_objabi) cmd/internal/objabi.lo.dep: $(extra_go_files_cmd_internal_objabi)
...@@ -2886,13 +2886,13 @@ golang.org/x/sys/cpu_gccgo.lo: go/golang.org/x/sys/cpu/cpu_gccgo.c runtime.inc ...@@ -2886,13 +2886,13 @@ golang.org/x/sys/cpu_gccgo.lo: go/golang.org/x/sys/cpu/cpu_gccgo.c runtime.inc
@$(MKDIR_P) golang.org/x/sys @$(MKDIR_P) golang.org/x/sys
$(LTCOMPILE) -c -o $@ $(srcdir)/go/golang.org/x/sys/cpu/cpu_gccgo.c $(LTCOMPILE) -c -o $@ $(srcdir)/go/golang.org/x/sys/cpu/cpu_gccgo.c
# Build internal/x/net/route only on BSD systems. # Build golang.org/x/net/route only on BSD systems.
@LIBGO_IS_BSD_TRUE@$(eval $(call PACKAGE_template,internal/x/net/route)) @LIBGO_IS_BSD_TRUE@$(eval $(call PACKAGE_template,golang.org/x/net/route))
# Build internal/x/net/lif only on Solaris systems. # Build golang.org/x/net/lif only on Solaris systems.
@LIBGO_IS_SOLARIS_TRUE@$(eval $(call PACKAGE_template,internal/x/net/lif)) @LIBGO_IS_SOLARIS_TRUE@$(eval $(call PACKAGE_template,golang.org/x/net/lif))
check: check-tail check: check-tail
check-recursive: check-head check-recursive: check-head
......
...@@ -11,18 +11,12 @@ import ( ...@@ -11,18 +11,12 @@ import (
"unsafe" "unsafe"
) )
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" //extern __go_ioctl_ptr
func libc_ioctl(int32, int32, unsafe.Pointer) int32
//go:linkname procIoctl libc_ioctl
var procIoctl uintptr
func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
func ioctl(s, ioc uintptr, arg unsafe.Pointer) error { func ioctl(s, ioc uintptr, arg unsafe.Pointer) error {
_, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0) if libc_ioctl(int32(s), int32(ioc), arg) < 0 {
if errno != 0 { return syscall.GetErrno()
return error(errno)
} }
return nil return nil
} }
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
package lif package lif
import "unsafe"
const ( const (
sysAF_UNSPEC = 0x0 sysAF_UNSPEC = 0x0
sysAF_INET = 0x2 sysAF_INET = 0x2
...@@ -67,7 +69,6 @@ const ( ...@@ -67,7 +69,6 @@ const (
type lifnum struct { type lifnum struct {
Family uint16 Family uint16
Pad_cgo_0 [2]byte
Flags int32 Flags int32
Count int32 Count int32
} }
...@@ -81,16 +82,13 @@ type lifreq struct { ...@@ -81,16 +82,13 @@ type lifreq struct {
type lifconf struct { type lifconf struct {
Family uint16 Family uint16
Pad_cgo_0 [2]byte
Flags int32 Flags int32
Len int32 Len int32
Pad_cgo_1 [4]byte Lifcu [unsafe.Sizeof(unsafe.Pointer(nil))]byte
Lifcu [8]byte
} }
type lifIfinfoReq struct { type lifIfinfoReq struct {
Maxhops uint8 Maxhops uint8
Pad_cgo_0 [3]byte
Reachtime uint32 Reachtime uint32
Reachretrans uint32 Reachretrans uint32
Maxmtu uint32 Maxmtu uint32
......
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
package cpu package cpu
const cacheLineSize = 128
const ( const (
// getsystemcfg constants // getsystemcfg constants
_SC_IMPL = 2 _SC_IMPL = 2
......
// 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.
package cpu
const cacheLineSize = 32
func doinit() {}
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
package cpu package cpu
const cacheLineSize = 64
// HWCAP/HWCAP2 bits. These are exposed by Linux. // HWCAP/HWCAP2 bits. These are exposed by Linux.
const ( const (
hwcap_FP = 1 << 0 hwcap_FP = 1 << 0
......
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
package cpu package cpu
const cacheLineSize = 128
// HWCAP/HWCAP2 bits. These are exposed by the kernel. // HWCAP/HWCAP2 bits. These are exposed by the kernel.
const ( const (
// ISA Level // ISA Level
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
package cpu package cpu
const cacheLineSize = 256
const ( const (
// bit mask values from /usr/include/bits/hwcap.h // bit mask values from /usr/include/bits/hwcap.h
hwcap_ZARCH = 2 hwcap_ZARCH = 2
......
// 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.
// +build mips64 mips64le
package cpu
const cacheLineSize = 32
func doinit() {}
// 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.
// +build mips mipsle
package cpu
const cacheLineSize = 32
func doinit() {}
// Copyright 2019 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.
// +build !linux,arm64
package cpu
const cacheLineSize = 64
func doinit() {}
// Copyright 2019 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.
// +build wasm
package cpu
// We're compiling the cpu package for an unknown (software-abstracted) CPU.
// Make CacheLinePad an empty struct and hope that the usual struct alignment
// rules are good enough.
const cacheLineSize = 0
func doinit() {}
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
package cpu package cpu
const cacheLineSize = 64
func init() { func init() {
Initialized = true Initialized = true
......
...@@ -31,7 +31,7 @@ func sem_reltimedwait_np(sem *semt, timeout *timespec) int32 ...@@ -31,7 +31,7 @@ func sem_reltimedwait_np(sem *semt, timeout *timespec) int32
//go:nosplit //go:nosplit
func semacreate(mp *m) { func semacreate(mp *m) {
if mp.mos.waitsema != 0 { if mp.waitsema != 0 {
return return
} }
...@@ -44,7 +44,7 @@ func semacreate(mp *m) { ...@@ -44,7 +44,7 @@ func semacreate(mp *m) {
if sem_init(sem, 0, 0) != 0 { if sem_init(sem, 0, 0) != 0 {
throw("sem_init") throw("sem_init")
} }
mp.mos.waitsema = uintptr(unsafe.Pointer(sem)) mp.waitsema = uintptr(unsafe.Pointer(sem))
} }
//go:nosplit //go:nosplit
...@@ -54,7 +54,7 @@ func semasleep(ns int64) int32 { ...@@ -54,7 +54,7 @@ func semasleep(ns int64) int32 {
var ts timespec var ts timespec
ts.setNsec(ns) ts.setNsec(ns)
if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.mos.waitsema)), &ts) != 0 { if sem_reltimedwait_np((*semt)(unsafe.Pointer(_m_.waitsema)), &ts) != 0 {
err := errno() err := errno()
if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR { if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR {
return -1 return -1
...@@ -64,7 +64,7 @@ func semasleep(ns int64) int32 { ...@@ -64,7 +64,7 @@ func semasleep(ns int64) int32 {
return 0 return 0
} }
for { for {
r1 := sem_wait((*semt)(unsafe.Pointer(_m_.mos.waitsema))) r1 := sem_wait((*semt)(unsafe.Pointer(_m_.waitsema)))
if r1 == 0 { if r1 == 0 {
break break
} }
...@@ -78,7 +78,7 @@ func semasleep(ns int64) int32 { ...@@ -78,7 +78,7 @@ func semasleep(ns int64) int32 {
//go:nosplit //go:nosplit
func semawakeup(mp *m) { func semawakeup(mp *m) {
if sem_post((*semt)(unsafe.Pointer(mp.mos.waitsema))) != 0 { if sem_post((*semt)(unsafe.Pointer(mp.waitsema))) != 0 {
throw("sem_post") throw("sem_post")
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment