Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync/atomic: fix 64-bit atomic operations on pre-ARM11 systems (LDREX/STREX) #3331

Closed
gopherbot opened this issue Mar 16, 2012 · 4 comments
Closed

Comments

@gopherbot
Copy link

by justin@specialbusservice.com:

Before filing a bug, please check whether it has been fixed since
the latest release: run "hg pull", "hg update default", rebuild, and
retry
what you did to
reproduce the problem.  Thanks.

What steps will reproduce the problem?
1. ARM platform, GOARM=5
2. hg pull
3. hg update default
4. rebuild

What is the expected output?
All tests pass

What do you see instead?

SIGILL: illegal instruction
PC=0xc1bb0

sync/atomic.armAddUint64(0x106001a8, 0x1, 0x0, 0x10600198, 0x54b60, ...)
    /mnt/go/src/pkg/sync/atomic/asm_arm.s:66 +0x8
sync/atomic_test._func_008(0x0, 0x0)
    /mnt/go/src/pkg/sync/atomic/atomic_test.go:37 +0x84
sync/atomic_test.init()
    /mnt/go/src/pkg/sync/atomic/atomic_test.go:39 +0x78
main.init()
    /tmp/go-build216388172/sync/atomic/_test/_testmain.go:102 +0x70

goroutine 2 [runnable]:
created by runtime.main
    /mnt/go/src/pkg/runtime/proc.c:221

trap    0x6
error   0x0
oldmask 0x0
r0      0x0
r1      0xa
r2      0x106001a8
r3      0x592ba8
r4      0x4c470
r5      0x401c2f70
r6      0x0
r7      0x0
r8      0x0
r9      0x184c64
r10     0x10623000
fp      0xfffffff8
ip      0xcafebabe
sp      0x401c2f6c
lr      0xc1bf8
pc      0xc1bb0
cpsr    0x60000010
fault   0x0
FAIL    sync/atomic 0.145s



Which compiler are you using (5g, 6g, 8g, gccgo)?
5g

Which operating system are you using?
Linux

Which revision are you using?  (hg identify)
a303acb0a5f2 tip


Please provide any additional information below.

CPU info:


cat /proc/cpuinfo
Processor   : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS    : 1191.11
Features    : swp half thumb fastmult edsp 
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part    : 0x131
CPU revision    : 1

Hardware    : Marvell GuruPlug Reference Board
Revision    : 0000
Serial      : 0000000000000000
@minux
Copy link
Member

minux commented Mar 16, 2012

Comment 1:

64-bit atomic operation is impossible on pre-ARMv6 (ARM11) hardware without proper
kernel help.
(The relevant kernel helpers are added in 3.0 if I remember correctly)

Labels changed: added priority-later, arch-arm, removed priority-triage.

Status changed to Accepted.

@minux
Copy link
Member

minux commented Apr 15, 2012

Comment 2:

Issue #3532 has been merged into this issue.

@minux
Copy link
Member

minux commented May 19, 2012

Comment 3:

http://golang.org/cl/6210071/

Status changed to Started.

@minux
Copy link
Member

minux commented May 22, 2012

Comment 4:

This issue was closed by revision 090f9fc.

Status changed to Fixed.

@golang golang locked and limited conversation to collaborators Jun 24, 2016
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants