aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/runtime/defs_linux_386.go7
-rw-r--r--src/runtime/defs_linux_arm.go7
-rw-r--r--src/runtime/defs_linux_mipsx.go7
-rw-r--r--src/runtime/os_linux32.go10
4 files changed, 17 insertions, 14 deletions
diff --git a/src/runtime/defs_linux_386.go b/src/runtime/defs_linux_386.go
index d1875954f3..3a8c201ff1 100644
--- a/src/runtime/defs_linux_386.go
+++ b/src/runtime/defs_linux_386.go
@@ -152,13 +152,14 @@ func (ts *timespec32) setNsec(ns int64) {
type timespec struct {
tv_sec int64
- tv_nsec int64
+ tv_nsec int32
+ _ [4]byte // the C ABI aligns int64 to 8 bytes
}
//go:nosplit
func (ts *timespec) setNsec(ns int64) {
- ts.tv_sec = int64(ns / 1e9)
- ts.tv_nsec = int64(ns % 1e9)
+ ts.tv_sec = ns / 1e9
+ ts.tv_nsec = int32(ns % 1e9)
}
type timeval struct {
diff --git a/src/runtime/defs_linux_arm.go b/src/runtime/defs_linux_arm.go
index 94577fc597..946f5bb230 100644
--- a/src/runtime/defs_linux_arm.go
+++ b/src/runtime/defs_linux_arm.go
@@ -111,13 +111,14 @@ func (ts *timespec32) setNsec(ns int64) {
type timespec struct {
tv_sec int64
- tv_nsec int64
+ tv_nsec int32
+ _ [4]byte // the C ABI aligns int64 to 8 bytes
}
//go:nosplit
func (ts *timespec) setNsec(ns int64) {
- ts.tv_sec = int64(ns / 1e9)
- ts.tv_nsec = int64(ns % 1e9)
+ ts.tv_sec = ns / 1e9
+ ts.tv_nsec = int32(ns % 1e9)
}
type stackt struct {
diff --git a/src/runtime/defs_linux_mipsx.go b/src/runtime/defs_linux_mipsx.go
index b8da4d00af..c14fa8498f 100644
--- a/src/runtime/defs_linux_mipsx.go
+++ b/src/runtime/defs_linux_mipsx.go
@@ -109,13 +109,14 @@ func (ts *timespec32) setNsec(ns int64) {
type timespec struct {
tv_sec int64
- tv_nsec int64
+ tv_nsec int32
+ _ [4]byte // the C ABI aligns int64 to 8 bytes
}
//go:nosplit
func (ts *timespec) setNsec(ns int64) {
- ts.tv_sec = int64(ns / 1e9)
- ts.tv_nsec = int64(ns % 1e9)
+ ts.tv_sec = ns / 1e9
+ ts.tv_nsec = int32(ns % 1e9)
}
type timeval struct {
diff --git a/src/runtime/os_linux32.go b/src/runtime/os_linux32.go
index 02cb18f32d..1ee1cdcaf9 100644
--- a/src/runtime/os_linux32.go
+++ b/src/runtime/os_linux32.go
@@ -31,7 +31,7 @@ func futex(addr unsafe.Pointer, op int32, val uint32, ts *timespec, addr2 unsafe
var ts32 timespec32
var pts32 *timespec32
if ts != nil {
- ts32.setNsec(ts.tv_sec*1e9 + ts.tv_nsec)
+ ts32.setNsec(ts.tv_sec*1e9 + int64(ts.tv_nsec))
pts32 = &ts32
}
return futex_time32(addr, op, val, pts32, addr2, val3)
@@ -53,14 +53,14 @@ func timer_settime(timerid int32, flags int32, new, old *itimerspec) int32 {
var new32, old32 *itimerspec32
if new != nil {
- newts.it_interval.setNsec(new.it_interval.tv_sec*1e9 + new.it_interval.tv_nsec)
- newts.it_value.setNsec(new.it_value.tv_sec*1e9 + new.it_value.tv_nsec)
+ newts.it_interval.setNsec(new.it_interval.tv_sec*1e9 + int64(new.it_interval.tv_nsec))
+ newts.it_value.setNsec(new.it_value.tv_sec*1e9 + int64(new.it_value.tv_nsec))
new32 = &newts
}
if old != nil {
- oldts.it_interval.setNsec(old.it_interval.tv_sec*1e9 + old.it_interval.tv_nsec)
- oldts.it_value.setNsec(old.it_value.tv_sec*1e9 + old.it_value.tv_nsec)
+ oldts.it_interval.setNsec(old.it_interval.tv_sec*1e9 + int64(old.it_interval.tv_nsec))
+ oldts.it_value.setNsec(old.it_value.tv_sec*1e9 + int64(old.it_value.tv_nsec))
old32 = &oldts
}