summaryrefslogtreecommitdiff
path: root/src/runtime/asm_power64x.s
Commit message (Collapse)AuthorAgeFilesLines
* [dev.cc] runtime: merge power64 onM/onM_signalok into systemstackAustin Clements2014-11-181-33/+19
| | | | | | | | | | | | | This is the power64 component of CL 174950043. With this, dev.cc compiles on power64 and power64le and passes most tests if GOGC=off (but crashes in go_bootstrap if GC is on). LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/175290043
* [dev.cc] runtime: convert power64 assembly files for C to Go transitionAustin Clements2014-11-181-4/+9
| | | | | | | | | The power64 equivalent of CL 168510043 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/178940043
* [dev.power64] all: merge default into dev.power64Austin Clements2014-11-031-0/+6
| | | | | | | | | | Trivial merge except for src/runtime/asm_power64x.s and src/runtime/signal_power64x.c LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/168950044
* [dev.power64] runtime: fix fastrand1 on power64xAustin Clements2014-10-311-1/+1
| | | | | | | | | | | | | | | | | | fastrand1 depends on testing the high bit of its uint32 state. For efficiency, all of the architectures implement this as a sign bit test. However, on power64, fastrand1 was using a 64-bit sign test on the zero-extended 32-bit state. This always failed, causing fastrand1 to have very short periods and often decay to 0 and get stuck. Fix this by using a 32-bit signed compare instead of a 64-bit compare. This fixes various tests for the randomization of select of map iteration. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/166990043
* [dev.power64] 9g: fix under-zeroing in clearfatAustin Clements2014-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | All three cases of clearfat were wrong on power64x. The cases that handle 1032 bytes and up and 32 bytes and up both use MOVDU (one directly generated in a loop and the other via duffzero), which leaves the pointer register pointing at the *last written* address. The generated code was not accounting for this, so the byte fill loop was re-zeroing the last zeroed dword, rather than the bytes following the last zeroed dword. Fix this by simply adding an additional 8 byte offset to the byte zeroing loop. The case that handled under 32 bytes was also wrong. It didn't update the pointer register at all, so the byte zeroing loop was simply re-zeroing the beginning of region. Again, the fix is to add an offset to the byte zeroing loop to account for this. LGTM=dave, bradfitz R=rsc, dave, bradfitz CC=golang-codereviews https://codereview.appspot.com/168870043
* [dev.power64] runtime: fix a syntax error that slipped in to asm_power64x.sAustin Clements2014-10-301-1/+1
| | | | | | | | | | Apparently I had already moved on to fixing another problem when I submitted CL 169790043. LGTM=dave R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/165210043
* [dev.power64] runtime: make asm_power64x.s go vet-cleanAustin Clements2014-10-301-20/+21
| | | | | | | | | | No real problems found. Just lots of argument names that didn't quite match up. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/169790043
* [dev.power64] runtime: match argument/return type signedness in power64x ↵Austin Clements2014-10-301-7/+7
| | | | | | | | | | | | | | | assembly Previously, the power64x runtime assembly was sloppy about using sign-extending versus zero-extending moves of arguments and return values. I think all of the cases that actually mattered have been fixed in recent CLs; this CL fixes up the few remaining mismatches. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/162480043
* [dev.power64] cmd/5a, cmd/6a, cmd/8a, cmd/9a: make labels function-scopedRuss Cox2014-10-281-20/+20
| | | | | | | | | | | | | | | | | | | | | | I removed support for jumping between functions years ago, as part of doing the instruction layout for each function separately. Given that, it makes sense to treat labels as function-scoped. This lets each function have its own 'loop' label, for example. Makes the assembly much cleaner and removes the last reason anyone would reach for the 123(PC) form instead. Note that this is on the dev.power64 branch, but it changes all the assemblers. The change will ship in Go 1.5 (perhaps after being ported into the new assembler). Came up as part of CL 167730043. LGTM=r R=r CC=austin, dave, golang-codereviews, minux https://codereview.appspot.com/159670043
* [dev.power64] runtime: fix atomicor8 for power64xAustin Clements2014-10-281-6/+20
| | | | | | | | | | | | | | | | | | Power64 servers do not currently support sub-word size atomic memory access, so atomicor8 uses word size atomic access. However, previously atomicor8 made no attempt to align this access, resulting in errors. Fix this by aligning the pointer to a word boundary and shifting the value appropriately. Since atomicor8 is used in GC, add a test to runtime?check to make sure this doesn't break in the future. This also fixes an incorrect branch label, an incorrectly sized argument move, and adds argument names to help go vet. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/165820043
* [dev.power64] runtime: fix cas64 on power64xDave Cheney2014-10-281-5/+9
| | | | | | | | | cas64 was jumping to the wrong offset. LGTM=minux, rsc R=rsc, austin, minux CC=golang-codereviews https://codereview.appspot.com/158710043
* [dev.power64] runtime: power64 fixes and ports of changesAustin Clements2014-10-271-280/+198
| | | | | | | | | | | | | | | Fix include paths that got moved in the great pkg/ rename. Add missing runtime/arch_* files for power64. Port changes that happened on default since branching to runtime/{asm,atomic,sys_linux}_power64x.s (precise stacks, calling convention change, various new and deleted functions. Port struct renaming and fix some bugs in runtime/defs_linux_power64.h. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/161450043
* build: merge the great pkg/ rename into dev.power64Austin Clements2014-10-221-0/+1045
This also removes pkg/runtime/traceback_lr.c, which was ported to Go in an earlier commit and then moved to runtime/traceback.go. Reviewer: rsc@golang.org rsc: LGTM