diff options
| author | Michael Anthony Knyszek <mknyszek@google.com> | 2019-11-07 22:42:38 +0000 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2019-11-10 04:23:22 +0000 |
| commit | e6fb39aa6869fa5033b87c14a9826598679cb47d (patch) | |
| tree | 37cab347f8084c3b89d4170e3eeee3d36439bdbf /src/runtime | |
| parent | 78d4560793de65e21199d3c80e9c901833bdaeba (diff) | |
| download | go-e6fb39aa6869fa5033b87c14a9826598679cb47d.tar.xz | |
runtime: make the test addresses for pageAlloc smaller on 32-bit
This change makes the test addresses start at 1 GiB instead of 2 GiB to
support mips and mipsle, which only have 31-bit address spaces.
It also changes some tests to use smaller offsets for the chunk index to
avoid jumping too far ahead in the address space to support 31-bit
address spaces. The tests don't require such large jumps for what
they're testing anyway.
Updates #35112.
Fixes #35440.
Change-Id: Ic68ff2b0a1f10ef37ac00d4bb5b910ddcdc76f2e
Reviewed-on: https://go-review.googlesource.com/c/go/+/205938
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/export_test.go | 5 | ||||
| -rw-r--r-- | src/runtime/mpagealloc_test.go | 20 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go index ef977b302e..1db465673c 100644 --- a/src/runtime/export_test.go +++ b/src/runtime/export_test.go @@ -830,7 +830,10 @@ func FreePageAlloc(pp *PageAlloc) { // BaseChunkIdx is a convenient chunkIdx value which works on both // 64 bit and 32 bit platforms, allowing the tests to share code // between the two. -var BaseChunkIdx = ChunkIdx(chunkIndex((0xc000*pageAlloc64Bit + 0x200*pageAlloc32Bit) * pallocChunkBytes)) +// +// This should not be higher than 0x100*pallocChunkBytes to support +// mips and mipsle, which only have 31-bit address spaces. +var BaseChunkIdx = ChunkIdx(chunkIndex((0xc000*pageAlloc64Bit + 0x100*pageAlloc32Bit) * pallocChunkBytes)) // PageBase returns an address given a chunk index and a page index // relative to that chunk. diff --git a/src/runtime/mpagealloc_test.go b/src/runtime/mpagealloc_test.go index 454fafb501..9034f63064 100644 --- a/src/runtime/mpagealloc_test.go +++ b/src/runtime/mpagealloc_test.go @@ -279,24 +279,24 @@ func TestPageAllocAlloc(t *testing.T) { }, "NotContiguousPallocChunkPages*2": { before: map[ChunkIdx][]BitRange{ - BaseChunkIdx: {}, - BaseChunkIdx + 0x100: {}, - BaseChunkIdx + 0x101: {}, + BaseChunkIdx: {}, + BaseChunkIdx + 0x40: {}, + BaseChunkIdx + 0x41: {}, }, scav: map[ChunkIdx][]BitRange{ - BaseChunkIdx: {{0, PallocChunkPages}}, - BaseChunkIdx + 0x100: {}, - BaseChunkIdx + 0x101: {}, + BaseChunkIdx: {{0, PallocChunkPages}}, + BaseChunkIdx + 0x40: {}, + BaseChunkIdx + 0x41: {}, }, hits: []hit{ - {PallocChunkPages * 2, PageBase(BaseChunkIdx+0x100, 0), 0}, + {PallocChunkPages * 2, PageBase(BaseChunkIdx+0x40, 0), 0}, {21, PageBase(BaseChunkIdx, 0), 21 * PageSize}, {1, PageBase(BaseChunkIdx, 21), PageSize}, }, after: map[ChunkIdx][]BitRange{ - BaseChunkIdx: {{0, 22}}, - BaseChunkIdx + 0x100: {{0, PallocChunkPages}}, - BaseChunkIdx + 0x101: {{0, PallocChunkPages}}, + BaseChunkIdx: {{0, 22}}, + BaseChunkIdx + 0x40: {{0, PallocChunkPages}}, + BaseChunkIdx + 0x41: {{0, PallocChunkPages}}, }, }, "StraddlePallocChunkPages*2": { |
