1
0
mirror of https://github.com/golang/go synced 2024-11-24 02:10:11 -07:00

runtime: rename offsets macros to prepare for multiple versions

High Sierra has a new commpage layout (this is issue #3188), so
we need to adjust the code to handle multiple versions of the
layout.

In preparation for this change, we rename the existing offset
macros with a prefix that identifies the commpage version they
refer to.

Updates #22037

Change-Id: Idca4b7a855a2ff6dbc434cd12453fc3194707aa8
Reviewed-on: https://go-review.googlesource.com/67331
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Giovanni Bajo 2017-09-30 00:55:26 +02:00 committed by Ian Lance Taylor
parent 630d176e7d
commit 11f494f37e

View File

@ -108,28 +108,28 @@ TEXT runtime·madvise(SB), NOSPLIT, $0
// OS X comm page time offsets
// http://www.opensource.apple.com/source/xnu/xnu-1699.26.8/osfmk/i386/cpu_capabilities.h
#define nt_tsc_base 0x50
#define nt_scale 0x58
#define nt_shift 0x5c
#define nt_ns_base 0x60
#define nt_generation 0x68
#define gtod_generation 0x6c
#define gtod_ns_base 0x70
#define gtod_sec_base 0x78
#define v12_nt_tsc_base 0x50
#define v12_nt_scale 0x58
#define v12_nt_shift 0x5c
#define v12_nt_ns_base 0x60
#define v12_nt_generation 0x68
#define v12_gtod_generation 0x6c
#define v12_gtod_ns_base 0x70
#define v12_gtod_sec_base 0x78
TEXT runtime·nanotime(SB),NOSPLIT,$0-8
MOVQ $0x7fffffe00000, BP /* comm page base */
// Loop trying to take a consistent snapshot
// of the time parameters.
timeloop:
MOVL nt_generation(BP), R9
MOVL v12_nt_generation(BP), R9
TESTL R9, R9
JZ timeloop
RDTSC
MOVQ nt_tsc_base(BP), R10
MOVL nt_scale(BP), R11
MOVQ nt_ns_base(BP), R12
CMPL nt_generation(BP), R9
MOVQ v12_nt_tsc_base(BP), R10
MOVL v12_nt_scale(BP), R11
MOVQ v12_nt_ns_base(BP), R12
CMPL v12_nt_generation(BP), R9
JNE timeloop
// Gathered all the data we need. Compute monotonic time:
@ -154,19 +154,19 @@ TEXT time·now(SB), NOSPLIT, $32-24
// Loop trying to take a consistent snapshot
// of the time parameters.
timeloop:
MOVL gtod_generation(BP), R8
MOVL nt_generation(BP), R9
MOVL v12_gtod_generation(BP), R8
MOVL v12_nt_generation(BP), R9
TESTL R9, R9
JZ timeloop
RDTSC
MOVQ nt_tsc_base(BP), R10
MOVL nt_scale(BP), R11
MOVQ nt_ns_base(BP), R12
CMPL nt_generation(BP), R9
MOVQ v12_nt_tsc_base(BP), R10
MOVL v12_nt_scale(BP), R11
MOVQ v12_nt_ns_base(BP), R12
CMPL v12_nt_generation(BP), R9
JNE timeloop
MOVQ gtod_ns_base(BP), R13
MOVQ gtod_sec_base(BP), R14
CMPL gtod_generation(BP), R8
MOVQ v12_gtod_ns_base(BP), R13
MOVQ v12_gtod_sec_base(BP), R14
CMPL v12_gtod_generation(BP), R8
JNE timeloop
// Gathered all the data we need. Compute: