Commit a88d1f8b by Ian Lance Taylor

runtime: fix lfstackUnpack on ia64

    
    The top three region number bits must be masked out before
    right-shifting the address bits into place, otherwise they will be
    copied down into the lower always-zero address bits.
    
    Reviewed-on: https://go-review.googlesource.com/84535

From-SVN: r257061
parent 19e502d4
016ea21c4cba324c6ea6424da7988c6f985e671b 553e04735d1be372c596c720bcaea27e050b13a6
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.
...@@ -78,7 +78,7 @@ func lfstackUnpack(val uint64) *lfnode { ...@@ -78,7 +78,7 @@ func lfstackUnpack(val uint64) *lfnode {
return (*lfnode)(unsafe.Pointer(uintptr(int64(val) >> sparcLinuxCntBits << 3))) return (*lfnode)(unsafe.Pointer(uintptr(int64(val) >> sparcLinuxCntBits << 3)))
} }
if GOARCH == "ia64" { if GOARCH == "ia64" {
return (*lfnode)(unsafe.Pointer(uintptr((val>>ia64CntBits<<3)&(1<<(64-3)-1) | val&^(1<<(64-3)-1)))) return (*lfnode)(unsafe.Pointer(uintptr(((val & (1<<(64-3) - 1)) >> ia64CntBits << 3) | val&^(1<<(64-3)-1))))
} }
if GOARCH == "ppc64" && GOOS == "aix" { if GOARCH == "ppc64" && GOOS == "aix" {
if val&(1<<63) != 0 { if val&(1<<63) != 0 {
......
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